|
@@ -0,0 +1,489 @@
|
|
|
|
|
+using HH.YiDaSyncNC.Dtos;
|
|
|
|
|
+using HH.YiDaSyncNC.Dtos.NC;
|
|
|
|
|
+using HH.YiDaSyncNC.Helper;
|
|
|
|
|
+using HH.YiDaSyncNC.Models;
|
|
|
|
|
+using Newtonsoft.Json;
|
|
|
|
|
+using SqlSugar;
|
|
|
|
|
+using System;
|
|
|
|
|
+using System.Collections.Generic;
|
|
|
|
|
+using System.Configuration;
|
|
|
|
|
+using System.Linq;
|
|
|
|
|
+using System.Text;
|
|
|
|
|
+using System.Threading.Tasks;
|
|
|
|
|
+using System.Xml.Linq;
|
|
|
|
|
+
|
|
|
|
|
+namespace HH.YiDaSyncNC.DataSync
|
|
|
|
|
+{
|
|
|
|
|
+ class FK_XZ_SyncService
|
|
|
|
|
+ {
|
|
|
|
|
+ public string _AppType;
|
|
|
|
|
+ public string _SystemToken;
|
|
|
|
|
+ public string _UserId;
|
|
|
|
|
+ public string _FormId;
|
|
|
|
|
+ public SqlSugarClient _db;
|
|
|
|
|
+ public SqlSugarClient _db_nc;
|
|
|
|
|
+ public string _NCApiUrl;
|
|
|
|
|
+
|
|
|
|
|
+ public static string _Static_PK_bd_project = ConfigurationManager.AppSettings["bd_project"];
|
|
|
|
|
+ public static string _Static_pk_org_jt = ConfigurationManager.AppSettings["pk_org_jt"];
|
|
|
|
|
+
|
|
|
|
|
+ public FK_XZ_SyncService(string AppType, string SystemToken, string UserId, string FormId, SqlSugarClient db, SqlSugarClient db_nc, string NCApiUrl)
|
|
|
|
|
+ {
|
|
|
|
|
+ _AppType = AppType;
|
|
|
|
|
+ _SystemToken = SystemToken;
|
|
|
|
|
+ _UserId = UserId;
|
|
|
|
|
+ _FormId = FormId;
|
|
|
|
|
+ _db = db;
|
|
|
|
|
+ _db_nc = db_nc;
|
|
|
|
|
+ _NCApiUrl = NCApiUrl;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ public class IdCodeModel
|
|
|
|
|
+ {
|
|
|
|
|
+ public int sourceId { get; set; }
|
|
|
|
|
+ public string Id { get; set; }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ public void DataSync_公积金()
|
|
|
|
|
+ {
|
|
|
|
|
+ DingTalkService _dingTalkService = new DingTalkService(_AppType, _SystemToken, _UserId, _FormId);
|
|
|
|
|
+
|
|
|
|
|
+ // 宜搭全量数据Id
|
|
|
|
|
+ var idList = _dingTalkService.GetFormIdList("{\"radioField_lycrvvtk\":\"Y\",\"selectField_lrnh633d\":\"应付\",\"selectField_lwiuvaws\":\"发放公积金\"}");
|
|
|
|
|
+
|
|
|
|
|
+ //var idList = _dingTalkService.GetFormIdList("{\"selectField_lwiuvaws\":\"日常费用付款\",\"selectField_lrnh633d\":\"结付\"}");
|
|
|
|
|
+
|
|
|
|
|
+ //var idList = _dingTalkService.GetFormIdList("{\"textField_lvj2jklf\":\"FK2024070500023\"}");
|
|
|
|
|
+
|
|
|
|
|
+ LogHelper.WriteLog(JsonConvert.SerializeObject(idList.Count), "idList");
|
|
|
|
|
+
|
|
|
|
|
+ #region 获取NC中选项数据的Id
|
|
|
|
|
+ var bd_custclassDic = _db_nc.Queryable<bd_custclass>().ToList();
|
|
|
|
|
+ var org_orgsDic = _db_nc.Queryable<org_orgs>().ToList();
|
|
|
|
|
+ #endregion
|
|
|
|
|
+
|
|
|
|
|
+ #region 插入数据
|
|
|
|
|
+ // 向NC插入数据
|
|
|
|
|
+ foreach (var item in idList)
|
|
|
|
|
+ {
|
|
|
|
|
+
|
|
|
|
|
+ string createTime = "";
|
|
|
|
|
+ string modifyTime = "";
|
|
|
|
|
+
|
|
|
|
|
+ var ydDataSource = _dingTalkService.GetFormDataById(item, out createTime, out modifyTime);
|
|
|
|
|
+
|
|
|
|
|
+ var ncResData = new List<YiDaResDto>();
|
|
|
|
|
+
|
|
|
|
|
+ #region 表头
|
|
|
|
|
+ // 表头
|
|
|
|
|
+ var dataSource = new FK_XZ_SyncServiceModel.DataModel();
|
|
|
|
|
+
|
|
|
|
|
+ dataSource.付款类型 = "F3-Cxx-008";
|
|
|
|
|
+
|
|
|
|
|
+ if (ydDataSource.FirstOrDefault(f => f.Key == "selectField_lvywoqmb").Value != null)
|
|
|
|
|
+ {
|
|
|
|
|
+ if (!string.IsNullOrWhiteSpace(ydDataSource["selectField_lvywoqmb"].ToString()))
|
|
|
|
|
+ {
|
|
|
|
|
+ var tempData = org_orgsDic.FirstOrDefault(f => f.name == ydDataSource["selectField_lvywoqmb"].ToString());
|
|
|
|
|
+ if (tempData != null)
|
|
|
|
|
+ {
|
|
|
|
|
+ dataSource.组织 = tempData.code; // 组织
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ dataSource.支付人 = "OA-NC";
|
|
|
|
|
+
|
|
|
|
|
+ if (!string.IsNullOrWhiteSpace(ydDataSource["dateField_lwitiobz"].ToString()))
|
|
|
|
|
+ {
|
|
|
|
|
+ dataSource.支付日期 = UnixTimeHelper.ConvertMillisecondsToDateTime(Convert.ToInt64(ydDataSource["dateField_lwitiobz"].ToString())).ToString("yyyy-MM-dd HH:mm:ss");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ dataSource.创建人 = "OA-NC";
|
|
|
|
|
+ dataSource.制单人 = "OA-NC";
|
|
|
|
|
+ dataSource.单据日期 = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
|
|
|
|
|
+
|
|
|
|
|
+ dataSource.生效人 = "OA-NC";
|
|
|
|
|
+ dataSource.生效日期 = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
|
|
|
|
|
+
|
|
|
|
|
+ dataSource.发票号 = ydDataSource["textField_lw7erc7d"].ToString();
|
|
|
|
|
+ dataSource.供应商 = ydDataSource["textField_lwitiobt"].ToString();
|
|
|
|
|
+ dataSource.付款银行账户 = ydDataSource["textField_lrngrtgj"].ToString().Trim().Replace(" ", "");
|
|
|
|
|
+
|
|
|
|
|
+ dataSource.年份 = DateTime.Now.ToString("yyyy");
|
|
|
|
|
+ dataSource.月份 = DateTime.Now.ToString("MM");
|
|
|
|
|
+
|
|
|
|
|
+ dataSource.起算日期 = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
|
|
|
|
|
+
|
|
|
|
|
+ // 价税合计
|
|
|
|
|
+
|
|
|
|
|
+ #endregion
|
|
|
|
|
+
|
|
|
|
|
+ var detailList = new List<FK_XZ_SyncServiceModel.DataModel.Item>();
|
|
|
|
|
+
|
|
|
|
|
+ #region 明细
|
|
|
|
|
+ if (ydDataSource.FirstOrDefault(f => f.Key == "tableField_lrngrtgu").Value != null)
|
|
|
|
|
+ {
|
|
|
|
|
+ var detailObjList1 = (List<object>)ydDataSource["tableField_lrngrtgu"]; // 付款明细
|
|
|
|
|
+
|
|
|
|
|
+ if (detailObjList1.Count() > 0 && !string.IsNullOrWhiteSpace(((Dictionary<string, object>)detailObjList1.FirstOrDefault())["numberField_lvua3j17"].ToString()))
|
|
|
|
|
+ {
|
|
|
|
|
+ foreach (var objItem in detailObjList1)
|
|
|
|
|
+ {
|
|
|
|
|
+ var detailItem = new FK_XZ_SyncServiceModel.DataModel.Item();
|
|
|
|
|
+
|
|
|
|
|
+ var hsje = Convert.ToDecimal(((Dictionary<string, object>)objItem)["numberField_lvua3j17"].ToString());
|
|
|
|
|
+ //var se = Convert.ToDecimal(((Dictionary<string, object>)objItem)["numberField_lvxa4v08"].ToString());
|
|
|
|
|
+ //var wsje = Convert.ToDecimal(((Dictionary<string, object>)objItem)["numberField_lvxa4v09"].ToString());
|
|
|
|
|
+
|
|
|
|
|
+ // 含税金额
|
|
|
|
|
+ detailItem.价税合计 = hsje.ToString();
|
|
|
|
|
+
|
|
|
|
|
+ // 无税金额
|
|
|
|
|
+ detailItem.无税金额 = hsje.ToString();
|
|
|
|
|
+
|
|
|
|
|
+ // 税额
|
|
|
|
|
+ detailItem.税额 = "0";
|
|
|
|
|
+
|
|
|
|
|
+ detailItem.摘要 = ((Dictionary<string, object>)objItem)["textField_lvxa4v05"].ToString();
|
|
|
|
|
+
|
|
|
|
|
+ detailItem.科目 = ((Dictionary<string, object>)objItem)["textField_lwitioce"].ToString();
|
|
|
|
|
+
|
|
|
|
|
+ var a = ((Dictionary<string, object>)objItem)["textField_lypfw8rw"].ToString();
|
|
|
|
|
+ if (a.Contains("PM"))
|
|
|
|
|
+ detailItem.项目 = a;
|
|
|
|
|
+ else
|
|
|
|
|
+ detailItem.部门 = a;
|
|
|
|
|
+
|
|
|
|
|
+ var cdzt = ((Dictionary<string, object>)objItem)["selectField_lwiufn1k"].ToString();
|
|
|
|
|
+
|
|
|
|
|
+ detailItem.承担主体 = cdzt == "公司" ? "1001G1100000000B83QS" : cdzt == "个人" ? "1001G1100000000B83QT" : "";
|
|
|
|
|
+
|
|
|
|
|
+ detailList.Add(detailItem);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ #endregion
|
|
|
|
|
+
|
|
|
|
|
+ dataSource.明细 = detailList;
|
|
|
|
|
+ dataSource.价税合计 = dataSource.明细.Sum(s => Convert.ToDecimal(s.价税合计)).ToString();
|
|
|
|
|
+
|
|
|
|
|
+ if (string.IsNullOrWhiteSpace(dataSource.付款银行账户))
|
|
|
|
|
+ {
|
|
|
|
|
+ var resData = new YiDaResDto();
|
|
|
|
|
+ resData.bSuccess = false;
|
|
|
|
|
+ resData.syncTime = DateTime.Now;
|
|
|
|
|
+ resData.ncNo = "";
|
|
|
|
|
+ resData.log = "付款银行账户为空,NC无法执行审批操作";
|
|
|
|
|
+
|
|
|
|
|
+ _dingTalkService.UpdateFormDataSyncDataById(resData, item);
|
|
|
|
|
+
|
|
|
|
|
+ continue;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ var results = NCImportFunc.NCImport(FK_XZ_SyncServiceModel.ImportXml.TemplateHeade(), FK_XZ_SyncServiceModel.ImportXml.Header(dataSource, item), _NCApiUrl + "?account=LY01&groupcode=0");
|
|
|
|
|
+
|
|
|
|
|
+ LogHelper.WriteLog(JsonConvert.SerializeObject(results), "results");
|
|
|
|
|
+
|
|
|
|
|
+ XElement xE = XElement.Parse(results);
|
|
|
|
|
+ string resultcode = xE.Element("sendresult").Element("resultcode").Value;
|
|
|
|
|
+ string resultdescription = xE.Element("sendresult").Element("resultdescription")?.Value;
|
|
|
|
|
+
|
|
|
|
|
+ if (resultcode == "1")
|
|
|
|
|
+ {
|
|
|
|
|
+ ncResData.Add(new YiDaResDto()
|
|
|
|
|
+ {
|
|
|
|
|
+ bSuccess = true,
|
|
|
|
|
+ ncNo = xE.Element("sendresult").Element("content").Value,
|
|
|
|
|
+ log = "同步成功!"
|
|
|
|
|
+ });
|
|
|
|
|
+
|
|
|
|
|
+ var recitemData = _db_nc.Queryable<ap_payitem>().Where(w => w.pk_paybill == xE.Element("sendresult").Element("content").Value).ToList();
|
|
|
|
|
+
|
|
|
|
|
+ foreach (var recitem in recitemData)
|
|
|
|
|
+ {
|
|
|
|
|
+ var a = dataSource.明细.FirstOrDefault(f => f.无税金额 == recitem.def11);
|
|
|
|
|
+
|
|
|
|
|
+ recitem.scomment = a.摘要;
|
|
|
|
|
+
|
|
|
|
|
+ _db_nc.Updateable(recitem).ExecuteCommand();
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ else
|
|
|
|
|
+ {
|
|
|
|
|
+ ncResData.Add(new YiDaResDto()
|
|
|
|
|
+ {
|
|
|
|
|
+ bSuccess = false,
|
|
|
|
|
+ ncNo = "",
|
|
|
|
|
+ log = "同步失败!原因为【" + resultdescription + "】!"
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ var results_付款单审核 = HttpRequestHelper.ApproveNCFKBill(xE.Element("sendresult").Element("content").Value);
|
|
|
|
|
+
|
|
|
|
|
+ LogHelper.WriteLog(JsonConvert.SerializeObject(results_付款单审核), "results_付款单审核");
|
|
|
|
|
+
|
|
|
|
|
+ if (results_付款单审核.state == 0)
|
|
|
|
|
+ {
|
|
|
|
|
+ ncResData.Add(new YiDaResDto()
|
|
|
|
|
+ {
|
|
|
|
|
+ bSuccess = true,
|
|
|
|
|
+ ncNo = "",
|
|
|
|
|
+ log = "同步成功!"
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+ else
|
|
|
|
|
+ {
|
|
|
|
|
+ ncResData.Add(new YiDaResDto()
|
|
|
|
|
+ {
|
|
|
|
|
+ bSuccess = false,
|
|
|
|
|
+ ncNo = "",
|
|
|
|
|
+ log = "同步失败!原因为【" + results_付款单审核.msg + "】!"
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ var finalResData = new YiDaResDto();
|
|
|
|
|
+
|
|
|
|
|
+ if (ncResData.FirstOrDefault(f => !f.bSuccess) != null)
|
|
|
|
|
+ {
|
|
|
|
|
+ finalResData.bSuccess = false;
|
|
|
|
|
+ finalResData.syncTime = DateTime.Now;
|
|
|
|
|
+ finalResData.ncNo = xE.Element("sendresult").Element("content").Value;
|
|
|
|
|
+ finalResData.log = string.Join(" || ", ncResData.Select(s => s.log));
|
|
|
|
|
+ }
|
|
|
|
|
+ else
|
|
|
|
|
+ {
|
|
|
|
|
+ finalResData.bSuccess = true;
|
|
|
|
|
+ finalResData.syncTime = DateTime.Now;
|
|
|
|
|
+ finalResData.ncNo = xE.Element("sendresult").Element("content").Value;
|
|
|
|
|
+ finalResData.log = string.Join(" || ", ncResData.Select(s => s.log));
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ var ydRes = _dingTalkService.UpdateFormDataSyncDataById(finalResData, item);
|
|
|
|
|
+ }
|
|
|
|
|
+ #endregion
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ public void DataSync_社保()
|
|
|
|
|
+ {
|
|
|
|
|
+ DingTalkService _dingTalkService = new DingTalkService(_AppType, _SystemToken, _UserId, _FormId);
|
|
|
|
|
+
|
|
|
|
|
+ // 宜搭全量数据Id
|
|
|
|
|
+ var idList = _dingTalkService.GetFormIdList("{\"radioField_lycrvvtk\":\"Y\",\"selectField_lrnh633d\":\"应付\",\"selectField_lwiuvaws\":\"发放社保\"}");
|
|
|
|
|
+
|
|
|
|
|
+ //var idList = _dingTalkService.GetFormIdList("{\"selectField_lwiuvaws\":\"日常费用付款\",\"selectField_lrnh633d\":\"结付\"}");
|
|
|
|
|
+
|
|
|
|
|
+ //var idList = _dingTalkService.GetFormIdList("{\"textField_lvj2jklf\":\"FK2024070500023\"}");
|
|
|
|
|
+
|
|
|
|
|
+ LogHelper.WriteLog(JsonConvert.SerializeObject(idList.Count), "idList");
|
|
|
|
|
+
|
|
|
|
|
+ #region 获取NC中选项数据的Id
|
|
|
|
|
+ var bd_custclassDic = _db_nc.Queryable<bd_custclass>().ToList();
|
|
|
|
|
+ var org_orgsDic = _db_nc.Queryable<org_orgs>().ToList();
|
|
|
|
|
+ #endregion
|
|
|
|
|
+
|
|
|
|
|
+ #region 插入数据
|
|
|
|
|
+ // 向NC插入数据
|
|
|
|
|
+ foreach (var item in idList)
|
|
|
|
|
+ {
|
|
|
|
|
+
|
|
|
|
|
+ string createTime = "";
|
|
|
|
|
+ string modifyTime = "";
|
|
|
|
|
+
|
|
|
|
|
+ var ydDataSource = _dingTalkService.GetFormDataById(item, out createTime, out modifyTime);
|
|
|
|
|
+
|
|
|
|
|
+ var ncResData = new List<YiDaResDto>();
|
|
|
|
|
+
|
|
|
|
|
+ #region 表头
|
|
|
|
|
+ // 表头
|
|
|
|
|
+ var dataSource = new FK_XZ_SyncServiceModel.DataModel();
|
|
|
|
|
+
|
|
|
|
|
+ dataSource.付款类型 = "F3-Cxx-009";
|
|
|
|
|
+
|
|
|
|
|
+ if (ydDataSource.FirstOrDefault(f => f.Key == "selectField_lvywoqmb").Value != null)
|
|
|
|
|
+ {
|
|
|
|
|
+ if (!string.IsNullOrWhiteSpace(ydDataSource["selectField_lvywoqmb"].ToString()))
|
|
|
|
|
+ {
|
|
|
|
|
+ var tempData = org_orgsDic.FirstOrDefault(f => f.name == ydDataSource["selectField_lvywoqmb"].ToString());
|
|
|
|
|
+ if (tempData != null)
|
|
|
|
|
+ {
|
|
|
|
|
+ dataSource.组织 = tempData.code; // 组织
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ dataSource.支付人 = "OA-NC";
|
|
|
|
|
+
|
|
|
|
|
+ if (!string.IsNullOrWhiteSpace(ydDataSource["dateField_lwitiobz"].ToString()))
|
|
|
|
|
+ {
|
|
|
|
|
+ dataSource.支付日期 = UnixTimeHelper.ConvertMillisecondsToDateTime(Convert.ToInt64(ydDataSource["dateField_lwitiobz"].ToString())).ToString("yyyy-MM-dd HH:mm:ss");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ dataSource.创建人 = "OA-NC";
|
|
|
|
|
+ dataSource.制单人 = "OA-NC";
|
|
|
|
|
+ dataSource.单据日期 = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
|
|
|
|
|
+
|
|
|
|
|
+ dataSource.生效人 = "OA-NC";
|
|
|
|
|
+ dataSource.生效日期 = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
|
|
|
|
|
+
|
|
|
|
|
+ dataSource.发票号 = ydDataSource["textField_lw7erc7d"].ToString();
|
|
|
|
|
+ dataSource.供应商 = ydDataSource["textField_lwitiobt"].ToString();
|
|
|
|
|
+ dataSource.付款银行账户 = ydDataSource["textField_lrngrtgj"].ToString().Trim().Replace(" ", "");
|
|
|
|
|
+
|
|
|
|
|
+ dataSource.年份 = DateTime.Now.ToString("yyyy");
|
|
|
|
|
+ dataSource.月份 = DateTime.Now.ToString("MM");
|
|
|
|
|
+
|
|
|
|
|
+ dataSource.起算日期 = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
|
|
|
|
|
+
|
|
|
|
|
+ // 价税合计
|
|
|
|
|
+
|
|
|
|
|
+ #endregion
|
|
|
|
|
+
|
|
|
|
|
+ var detailList = new List<FK_XZ_SyncServiceModel.DataModel.Item>();
|
|
|
|
|
+
|
|
|
|
|
+ #region 明细
|
|
|
|
|
+ if (ydDataSource.FirstOrDefault(f => f.Key == "tableField_lrngrtgu").Value != null)
|
|
|
|
|
+ {
|
|
|
|
|
+ var detailObjList1 = (List<object>)ydDataSource["tableField_lrngrtgu"]; // 付款明细
|
|
|
|
|
+
|
|
|
|
|
+ if (detailObjList1.Count() > 0 && !string.IsNullOrWhiteSpace(((Dictionary<string, object>)detailObjList1.FirstOrDefault())["numberField_lvua3j17"].ToString()))
|
|
|
|
|
+ {
|
|
|
|
|
+ foreach (var objItem in detailObjList1)
|
|
|
|
|
+ {
|
|
|
|
|
+ var detailItem = new FK_XZ_SyncServiceModel.DataModel.Item();
|
|
|
|
|
+
|
|
|
|
|
+ var hsje = Convert.ToDecimal(((Dictionary<string, object>)objItem)["numberField_lvua3j17"].ToString());
|
|
|
|
|
+ //var se = Convert.ToDecimal(((Dictionary<string, object>)objItem)["numberField_lvxa4v08"].ToString());
|
|
|
|
|
+ //var wsje = Convert.ToDecimal(((Dictionary<string, object>)objItem)["numberField_lvxa4v09"].ToString());
|
|
|
|
|
+
|
|
|
|
|
+ // 含税金额
|
|
|
|
|
+ detailItem.价税合计 = hsje.ToString();
|
|
|
|
|
+
|
|
|
|
|
+ // 无税金额
|
|
|
|
|
+ detailItem.无税金额 = hsje.ToString();
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ // 税额
|
|
|
|
|
+ detailItem.税额 = "0";
|
|
|
|
|
+
|
|
|
|
|
+ detailItem.摘要 = ((Dictionary<string, object>)objItem)["textField_lvxa4v05"].ToString();
|
|
|
|
|
+
|
|
|
|
|
+ detailItem.科目 = ((Dictionary<string, object>)objItem)["textField_lwitioce"].ToString();
|
|
|
|
|
+
|
|
|
|
|
+ var a = ((Dictionary<string, object>)objItem)["textField_lypfw8rw"].ToString();
|
|
|
|
|
+ if (a.Contains("PM"))
|
|
|
|
|
+ detailItem.项目 = a;
|
|
|
|
|
+ else
|
|
|
|
|
+ detailItem.部门 = a;
|
|
|
|
|
+
|
|
|
|
|
+ var cdzt = ((Dictionary<string, object>)objItem)["selectField_lwiufn1k"].ToString();
|
|
|
|
|
+
|
|
|
|
|
+ detailItem.承担主体 = cdzt == "公司" ? "1001G1100000000B83QS" : cdzt == "个人" ? "1001G1100000000B83QT" : "";
|
|
|
|
|
+
|
|
|
|
|
+ detailList.Add(detailItem);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ #endregion
|
|
|
|
|
+
|
|
|
|
|
+ dataSource.明细 = detailList;
|
|
|
|
|
+ dataSource.价税合计 = dataSource.明细.Sum(s => Convert.ToDecimal(s.价税合计)).ToString();
|
|
|
|
|
+
|
|
|
|
|
+ if (string.IsNullOrWhiteSpace(dataSource.付款银行账户))
|
|
|
|
|
+ {
|
|
|
|
|
+ var resData = new YiDaResDto();
|
|
|
|
|
+ resData.bSuccess = false;
|
|
|
|
|
+ resData.syncTime = DateTime.Now;
|
|
|
|
|
+ resData.ncNo = "";
|
|
|
|
|
+ resData.log = "付款银行账户为空,NC无法执行审批操作";
|
|
|
|
|
+
|
|
|
|
|
+ _dingTalkService.UpdateFormDataSyncDataById(resData, item);
|
|
|
|
|
+
|
|
|
|
|
+ continue;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ var results = NCImportFunc.NCImport(FK_XZ_SyncServiceModel.ImportXml.TemplateHeade(), FK_XZ_SyncServiceModel.ImportXml.Header(dataSource, item), _NCApiUrl + "?account=LY01&groupcode=0");
|
|
|
|
|
+
|
|
|
|
|
+ LogHelper.WriteLog(JsonConvert.SerializeObject(results), "results");
|
|
|
|
|
+
|
|
|
|
|
+ XElement xE = XElement.Parse(results);
|
|
|
|
|
+ string resultcode = xE.Element("sendresult").Element("resultcode").Value;
|
|
|
|
|
+ string resultdescription = xE.Element("sendresult").Element("resultdescription")?.Value;
|
|
|
|
|
+
|
|
|
|
|
+ if (resultcode == "1")
|
|
|
|
|
+ {
|
|
|
|
|
+ ncResData.Add(new YiDaResDto()
|
|
|
|
|
+ {
|
|
|
|
|
+ bSuccess = true,
|
|
|
|
|
+ ncNo = xE.Element("sendresult").Element("content").Value,
|
|
|
|
|
+ log = "同步成功!"
|
|
|
|
|
+ });
|
|
|
|
|
+
|
|
|
|
|
+ var recitemData = _db_nc.Queryable<ap_payitem>().Where(w => w.pk_paybill == xE.Element("sendresult").Element("content").Value).ToList();
|
|
|
|
|
+
|
|
|
|
|
+ foreach (var recitem in recitemData)
|
|
|
|
|
+ {
|
|
|
|
|
+ var a = dataSource.明细.FirstOrDefault(f => f.无税金额 == recitem.def11);
|
|
|
|
|
+
|
|
|
|
|
+ recitem.scomment = a.摘要;
|
|
|
|
|
+
|
|
|
|
|
+ _db_nc.Updateable(recitem).ExecuteCommand();
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ else
|
|
|
|
|
+ {
|
|
|
|
|
+ ncResData.Add(new YiDaResDto()
|
|
|
|
|
+ {
|
|
|
|
|
+ bSuccess = false,
|
|
|
|
|
+ ncNo = "",
|
|
|
|
|
+ log = "同步失败!原因为【" + resultdescription + "】!"
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ var results_付款单审核 = HttpRequestHelper.ApproveNCFKBill(xE.Element("sendresult").Element("content").Value);
|
|
|
|
|
+
|
|
|
|
|
+ LogHelper.WriteLog(JsonConvert.SerializeObject(results_付款单审核), "results_付款单审核");
|
|
|
|
|
+
|
|
|
|
|
+ if (results_付款单审核.state == 0)
|
|
|
|
|
+ {
|
|
|
|
|
+ ncResData.Add(new YiDaResDto()
|
|
|
|
|
+ {
|
|
|
|
|
+ bSuccess = true,
|
|
|
|
|
+ ncNo = "",
|
|
|
|
|
+ log = "同步成功!"
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+ else
|
|
|
|
|
+ {
|
|
|
|
|
+ ncResData.Add(new YiDaResDto()
|
|
|
|
|
+ {
|
|
|
|
|
+ bSuccess = false,
|
|
|
|
|
+ ncNo = "",
|
|
|
|
|
+ log = "同步失败!原因为【" + results_付款单审核.msg + "】!"
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ var finalResData = new YiDaResDto();
|
|
|
|
|
+
|
|
|
|
|
+ if (ncResData.FirstOrDefault(f => !f.bSuccess) != null)
|
|
|
|
|
+ {
|
|
|
|
|
+ finalResData.bSuccess = false;
|
|
|
|
|
+ finalResData.syncTime = DateTime.Now;
|
|
|
|
|
+ finalResData.ncNo = xE.Element("sendresult").Element("content").Value;
|
|
|
|
|
+ finalResData.log = string.Join(" || ", ncResData.Select(s => s.log));
|
|
|
|
|
+ }
|
|
|
|
|
+ else
|
|
|
|
|
+ {
|
|
|
|
|
+ finalResData.bSuccess = true;
|
|
|
|
|
+ finalResData.syncTime = DateTime.Now;
|
|
|
|
|
+ finalResData.ncNo = xE.Element("sendresult").Element("content").Value;
|
|
|
|
|
+ finalResData.log = string.Join(" || ", ncResData.Select(s => s.log));
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ var ydRes = _dingTalkService.UpdateFormDataSyncDataById(finalResData, item);
|
|
|
|
|
+ }
|
|
|
|
|
+ #endregion
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+}
|