|
|
@@ -63,148 +63,96 @@ namespace HH.YiDaSyncNC.DataSync
|
|
|
|
|
|
foreach (var item in idList)
|
|
|
{
|
|
|
- string createTime = "";
|
|
|
- string modifyTime = "";
|
|
|
- //var ydDataSource = _dingTalkService.GetFormDataByCode(item, out createTime, out modifyTime);
|
|
|
- var ydDataSource = _dingTalkService.GetFormDataByCode(item);
|
|
|
- string jsonData = JsonConvert.SerializeObject(ydDataSource);
|
|
|
-
|
|
|
- // 如果NC单据号为空,说明没有传入过NC,此时需要走此逻辑去传输
|
|
|
- if (ydDataSource.FirstOrDefault(f => f.Key == "textField_ltxyt75m").Value != null && !string.IsNullOrWhiteSpace(ydDataSource["textField_ltxyt75m"].ToString()))
|
|
|
+ try
|
|
|
{
|
|
|
- continue;
|
|
|
- }
|
|
|
+ string createTime = "";
|
|
|
+ string modifyTime = "";
|
|
|
+ //var ydDataSource = _dingTalkService.GetFormDataByCode(item, out createTime, out modifyTime);
|
|
|
+ var ydDataSource = _dingTalkService.GetFormDataByCode(item);
|
|
|
+ string jsonData = JsonConvert.SerializeObject(ydDataSource);
|
|
|
+
|
|
|
+ // 如果NC单据号为空,说明没有传入过NC,此时需要走此逻辑去传输
|
|
|
+ if (ydDataSource.FirstOrDefault(f => f.Key == "textField_ltxyt75m").Value != null && !string.IsNullOrWhiteSpace(ydDataSource["textField_ltxyt75m"].ToString()))
|
|
|
+ {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
|
|
|
|
|
|
- YiDa_ZZSQ thisYiDaData = JsonConvert.DeserializeObject<YiDa_ZZSQ>(jsonData);
|
|
|
+ YiDa_ZZSQ thisYiDaData = JsonConvert.DeserializeObject<YiDa_ZZSQ>(jsonData);
|
|
|
|
|
|
- DateTime 凭证日期 = DateTime.Now;
|
|
|
+ DateTime 凭证日期 = DateTime.Now;
|
|
|
|
|
|
- string 组织 = "";
|
|
|
- if (!string.IsNullOrWhiteSpace(thisYiDaData.textField_lw7jwkfh))
|
|
|
- {
|
|
|
- var tempData = org_orgsDic.FirstOrDefault(f => f.name == thisYiDaData.textField_lw7jwkfh);
|
|
|
- if (tempData != null)
|
|
|
+ string 组织 = "";
|
|
|
+ if (!string.IsNullOrWhiteSpace(thisYiDaData.textField_lw7jwkfh))
|
|
|
{
|
|
|
- 组织 = tempData.code; // 组织
|
|
|
+ var tempData = org_orgsDic.FirstOrDefault(f => f.name == thisYiDaData.textField_lw7jwkfh);
|
|
|
+ if (tempData != null)
|
|
|
+ {
|
|
|
+ 组织 = tempData.code; // 组织
|
|
|
+ }
|
|
|
}
|
|
|
- }
|
|
|
|
|
|
|
|
|
- string 账簿 = "";
|
|
|
- if (!string.IsNullOrWhiteSpace(thisYiDaData.textField_lw7jwkfh))
|
|
|
- {
|
|
|
- var tempData = org_accountingbookDic.FirstOrDefault(f => f.name == thisYiDaData.textField_lw7jwkfh + "-蓝云账簿");
|
|
|
- if (tempData != null)
|
|
|
+ string 账簿 = "";
|
|
|
+ if (!string.IsNullOrWhiteSpace(thisYiDaData.textField_lw7jwkfh))
|
|
|
{
|
|
|
- 账簿 = tempData.code; // 账簿
|
|
|
+ var tempData = org_accountingbookDic.FirstOrDefault(f => f.name == thisYiDaData.textField_lw7jwkfh + "-蓝云账簿");
|
|
|
+ if (tempData != null)
|
|
|
+ {
|
|
|
+ 账簿 = tempData.code; // 账簿
|
|
|
+ }
|
|
|
}
|
|
|
- }
|
|
|
- string 人员编码 = "";
|
|
|
- if (thisYiDaData.employeeField_lviv4sfw != null && thisYiDaData.employeeField_lviv4sfw.Count>0)
|
|
|
- {
|
|
|
- var firstName = thisYiDaData.employeeField_lviv4sfw.FirstOrDefault();
|
|
|
- var tempData = bd_psndocDic.FirstOrDefault(f => firstName.Contains(f.name));
|
|
|
- if (tempData != null)
|
|
|
+ string 人员编码 = "";
|
|
|
+ if (thisYiDaData.employeeField_lviv4sfw != null && thisYiDaData.employeeField_lviv4sfw.Count > 0)
|
|
|
{
|
|
|
- 人员编码 = tempData.code; // 账簿
|
|
|
+ var firstName = thisYiDaData.employeeField_lviv4sfw.FirstOrDefault();
|
|
|
+ var tempData = bd_psndocDic.FirstOrDefault(f => firstName.Contains(f.name));
|
|
|
+ if (tempData != null)
|
|
|
+ {
|
|
|
+ 人员编码 = tempData.code; // 账簿
|
|
|
+ }
|
|
|
}
|
|
|
- }
|
|
|
-
|
|
|
|
|
|
|
|
|
- string 制单人 = "OA-NC";
|
|
|
-
|
|
|
- // 表头
|
|
|
- var headModel = new ZZD_GL_SyncServiceModel.DataModel.voucher_header()
|
|
|
- {
|
|
|
- year = 凭证日期.ToString("yyyy"),//会计年度
|
|
|
- prepareddate = 凭证日期.ToString("yyyy-MM-dd"),//制单日期
|
|
|
- period = 凭证日期.ToString("MM"),//会计期间
|
|
|
- pk_prepared = 制单人,//凭证制单人--操作员工工号
|
|
|
- no = "",//凭证号
|
|
|
- pk_accountingbook = 账簿,//账簿
|
|
|
- org = 组织,//组织编码
|
|
|
- pk_vouchertype = "03",//凭证类别 : 01-记账凭证 ,02-收款凭证 ,03-付款凭证 ,04-转账凭证 要确定
|
|
|
- };
|
|
|
- //表体
|
|
|
- var detailList = new List<ZZD_GL_SyncServiceModel.DataModel.voucher_body>();
|
|
|
|
|
|
+ string 制单人 = "OA-NC";
|
|
|
|
|
|
- //借方分录
|
|
|
- detailList.Add(new ZZD_GL_SyncServiceModel.DataModel.voucher_body()
|
|
|
- {
|
|
|
- detailindex = 1,
|
|
|
- accsubjcode = "122105",//科目编码 其他应收款-人员借款
|
|
|
- pk_accasoa = "122105",//科目编码
|
|
|
- explanation = "借方摘要",//摘要
|
|
|
- verifydate = 凭证日期.ToString("yyyy-MM-dd"),
|
|
|
- price = "0.00000000",
|
|
|
- excrate2 = "1",
|
|
|
- debitquantity = "0.00000000",
|
|
|
- debitamount = thisYiDaData.numberField_lrnhnsxp.ToString(),//借方金额 1
|
|
|
- groupdebitamount = "0.00000000",
|
|
|
- globaldebitamount = "0.00000000",
|
|
|
- localdebitamount = thisYiDaData.numberField_lrnhnsxp.ToString(),//借方金额 1
|
|
|
- creditquantity = "0.00000000",
|
|
|
- creditamount = "0.00000000",
|
|
|
- groupcreditamount = "0.00000000",
|
|
|
- globalcreditamount = "0.00000000",
|
|
|
- localcreditamount = "0.00000000",
|
|
|
- billtype = "",
|
|
|
- bankaccount = "",
|
|
|
- checkstyle = "",
|
|
|
- checkno = "",
|
|
|
- checkdate = "",
|
|
|
- bill_id = "",
|
|
|
- bill_date = "",
|
|
|
- pk_currtype = "CNY",
|
|
|
- cash_flow = new ZZD_GL_SyncServiceModel.DataModel.cash_flow()//现金流
|
|
|
+ // 表头
|
|
|
+ var headModel = new ZZD_GL_SyncServiceModel.DataModel.voucher_header()
|
|
|
{
|
|
|
- m_pk_currtype = "CNY",
|
|
|
- pk_cashflow = "1124",//现金流编码
|
|
|
- money = thisYiDaData.numberField_lrnhnsxp.ToString(),//金额 1
|
|
|
- moneymain = thisYiDaData.numberField_lrnhnsxp.ToString(),//金额 1
|
|
|
- moneygroup = "",
|
|
|
- moneyglobal = "",
|
|
|
- pk_innercorp = "",
|
|
|
- },
|
|
|
- ass = new List<ZZD_GL_SyncServiceModel.DataModel.ass>()//
|
|
|
- {
|
|
|
- new ZZD_GL_SyncServiceModel.DataModel.ass()
|
|
|
- {
|
|
|
- pk_Checktype ="0001",//0019-部门
|
|
|
- pk_Checkvalue = thisYiDaData.textField_ly7257rx,//部门编码 1
|
|
|
- },
|
|
|
- new ZZD_GL_SyncServiceModel.DataModel.ass()
|
|
|
- {
|
|
|
- pk_Checktype ="0002",//0019-人员
|
|
|
- pk_Checkvalue = 人员编码,//人员编码 1
|
|
|
- }
|
|
|
- },
|
|
|
- });
|
|
|
+ year = 凭证日期.ToString("yyyy"),//会计年度
|
|
|
+ prepareddate = 凭证日期.ToString("yyyy-MM-dd"),//制单日期
|
|
|
+ period = 凭证日期.ToString("MM"),//会计期间
|
|
|
+ pk_prepared = 制单人,//凭证制单人--操作员工工号
|
|
|
+ no = "",//凭证号
|
|
|
+ pk_accountingbook = 账簿,//账簿
|
|
|
+ org = 组织,//组织编码
|
|
|
+ pk_vouchertype = "03",//凭证类别 : 01-记账凭证 ,02-收款凭证 ,03-付款凭证 ,04-转账凭证 要确定
|
|
|
+ };
|
|
|
+ //表体
|
|
|
+ var detailList = new List<ZZD_GL_SyncServiceModel.DataModel.voucher_body>();
|
|
|
|
|
|
- //贷方
|
|
|
- detailList.Add(
|
|
|
- new ZZD_GL_SyncServiceModel.DataModel.voucher_body()
|
|
|
+
|
|
|
+ //借方分录
|
|
|
+ detailList.Add(new ZZD_GL_SyncServiceModel.DataModel.voucher_body()
|
|
|
{
|
|
|
- detailindex = 2,
|
|
|
- accsubjcode = thisYiDaData.textField_lyocuyp3,//科目编码 1
|
|
|
- pk_accasoa = thisYiDaData.textField_lyocuyp3,//科目编码 1
|
|
|
- explanation = "贷方摘要",//摘要 1
|
|
|
+ detailindex = 1,
|
|
|
+ accsubjcode = "122105",//科目编码 其他应收款-人员借款
|
|
|
+ pk_accasoa = "122105",//科目编码
|
|
|
+ explanation = "借方摘要",//摘要
|
|
|
verifydate = 凭证日期.ToString("yyyy-MM-dd"),
|
|
|
price = "0.00000000",
|
|
|
excrate2 = "1",
|
|
|
debitquantity = "0.00000000",
|
|
|
- debitamount = "0.00000000",
|
|
|
+ debitamount = thisYiDaData.numberField_lrnhnsxp.ToString(),//借方金额 1
|
|
|
groupdebitamount = "0.00000000",
|
|
|
globaldebitamount = "0.00000000",
|
|
|
- localdebitamount = "0.00000000",
|
|
|
+ localdebitamount = thisYiDaData.numberField_lrnhnsxp.ToString(),//借方金额 1
|
|
|
creditquantity = "0.00000000",
|
|
|
- creditamount = thisYiDaData.numberField_lrnhnsxp.ToString(),//贷方金额 1
|
|
|
+ creditamount = "0.00000000",
|
|
|
groupcreditamount = "0.00000000",
|
|
|
globalcreditamount = "0.00000000",
|
|
|
- localcreditamount = thisYiDaData.numberField_lrnhnsxp.ToString(),//贷方金额 1
|
|
|
+ localcreditamount = "0.00000000",
|
|
|
billtype = "",
|
|
|
bankaccount = "",
|
|
|
checkstyle = "",
|
|
|
@@ -213,59 +161,119 @@ namespace HH.YiDaSyncNC.DataSync
|
|
|
bill_id = "",
|
|
|
bill_date = "",
|
|
|
pk_currtype = "CNY",
|
|
|
- cash_flow = new ZZD_GL_SyncServiceModel.DataModel.cash_flow()
|
|
|
+ cash_flow = new ZZD_GL_SyncServiceModel.DataModel.cash_flow()//现金流
|
|
|
{
|
|
|
+ m_pk_currtype = "CNY",
|
|
|
+ pk_cashflow = "1124",//现金流编码
|
|
|
+ money = thisYiDaData.numberField_lrnhnsxp.ToString(),//金额 1
|
|
|
+ moneymain = thisYiDaData.numberField_lrnhnsxp.ToString(),//金额 1
|
|
|
+ moneygroup = "",
|
|
|
+ moneyglobal = "",
|
|
|
+ pk_innercorp = "",
|
|
|
},
|
|
|
- ass = new List<ZZD_GL_SyncServiceModel.DataModel.ass>()//辅助核算
|
|
|
+ ass = new List<ZZD_GL_SyncServiceModel.DataModel.ass>()//
|
|
|
+ {
|
|
|
+ new ZZD_GL_SyncServiceModel.DataModel.ass()
|
|
|
+ {
|
|
|
+ pk_Checktype ="0001",//0019-部门
|
|
|
+ pk_Checkvalue = thisYiDaData.textField_ly7257rx,//部门编码 1
|
|
|
+ },
|
|
|
+ new ZZD_GL_SyncServiceModel.DataModel.ass()
|
|
|
+ {
|
|
|
+ pk_Checktype ="0002",//0019-人员
|
|
|
+ pk_Checkvalue = 人员编码,//人员编码 1
|
|
|
+ }
|
|
|
+ },
|
|
|
+ });
|
|
|
+
|
|
|
+ //贷方
|
|
|
+ detailList.Add(
|
|
|
+ new ZZD_GL_SyncServiceModel.DataModel.voucher_body()
|
|
|
{
|
|
|
+ detailindex = 2,
|
|
|
+ accsubjcode = thisYiDaData.textField_lyocuyp3,//科目编码 1
|
|
|
+ pk_accasoa = thisYiDaData.textField_lyocuyp3,//科目编码 1
|
|
|
+ explanation = "贷方摘要",//摘要 1
|
|
|
+ verifydate = 凭证日期.ToString("yyyy-MM-dd"),
|
|
|
+ price = "0.00000000",
|
|
|
+ excrate2 = "1",
|
|
|
+ debitquantity = "0.00000000",
|
|
|
+ debitamount = "0.00000000",
|
|
|
+ groupdebitamount = "0.00000000",
|
|
|
+ globaldebitamount = "0.00000000",
|
|
|
+ localdebitamount = "0.00000000",
|
|
|
+ creditquantity = "0.00000000",
|
|
|
+ creditamount = thisYiDaData.numberField_lrnhnsxp.ToString(),//贷方金额 1
|
|
|
+ groupcreditamount = "0.00000000",
|
|
|
+ globalcreditamount = "0.00000000",
|
|
|
+ localcreditamount = thisYiDaData.numberField_lrnhnsxp.ToString(),//贷方金额 1
|
|
|
+ billtype = "",
|
|
|
+ bankaccount = "",
|
|
|
+ checkstyle = "",
|
|
|
+ checkno = "",
|
|
|
+ checkdate = "",
|
|
|
+ bill_id = "",
|
|
|
+ bill_date = "",
|
|
|
+ pk_currtype = "CNY",
|
|
|
+ cash_flow = new ZZD_GL_SyncServiceModel.DataModel.cash_flow()
|
|
|
+ {
|
|
|
+ },
|
|
|
+ ass = new List<ZZD_GL_SyncServiceModel.DataModel.ass>()//辅助核算
|
|
|
+ {
|
|
|
new ZZD_GL_SyncServiceModel.DataModel.ass()
|
|
|
{
|
|
|
pk_Checktype ="0011",//0011-银行账户辅助核算
|
|
|
pk_Checkvalue = thisYiDaData.textField_lsx02qvj.Replace(" ",""),//银行账户 1
|
|
|
}
|
|
|
- },
|
|
|
- }
|
|
|
- );
|
|
|
+ },
|
|
|
+ }
|
|
|
+ );
|
|
|
|
|
|
- XElement xElement = ZZD_GL_SyncServiceModel.ImportXml_凭证.TemplateHeade(headModel);
|
|
|
- xElement.Add(ZZD_GL_SyncServiceModel.ImportXml_凭证.Header(headModel));//添加表头数据
|
|
|
- xElement.Element("voucher").Element("voucher_head").Element("details").Add(ZZD_GL_SyncServiceModel.ImportXml_凭证.Bodydebit(detailList));
|
|
|
- //生成凭证
|
|
|
- var results_凭证 = NCImportFunc.NCImport2(xElement, _NCApiUrl + "?account=LY01&groupcode=0");
|
|
|
+ XElement xElement = ZZD_GL_SyncServiceModel.ImportXml_凭证.TemplateHeade(headModel);
|
|
|
+ xElement.Add(ZZD_GL_SyncServiceModel.ImportXml_凭证.Header(headModel));//添加表头数据
|
|
|
+ xElement.Element("voucher").Element("voucher_head").Element("details").Add(ZZD_GL_SyncServiceModel.ImportXml_凭证.Bodydebit(detailList));
|
|
|
+ //生成凭证
|
|
|
+ var results_凭证 = NCImportFunc.NCImport2(xElement, _NCApiUrl + "?account=LY01&groupcode=0");
|
|
|
|
|
|
- LogHelper.WriteLog(JsonConvert.SerializeObject(results_凭证), "results_凭证");
|
|
|
+ LogHelper.WriteLog(JsonConvert.SerializeObject(results_凭证), "results_凭证");
|
|
|
|
|
|
|
|
|
- XElement xE = XElement.Parse(results_凭证);
|
|
|
+ XElement xE = XElement.Parse(results_凭证);
|
|
|
|
|
|
- string resultcode = xE.Element("sendresult").Element("resultcode").Value;
|
|
|
+ string resultcode = xE.Element("sendresult").Element("resultcode").Value;
|
|
|
|
|
|
- string content = xE.Element("sendresult").Element("content")?.Value;
|
|
|
+ string content = xE.Element("sendresult").Element("content")?.Value;
|
|
|
|
|
|
- string resultdescription = xE.Element("sendresult").Element("resultdescription")?.Value;
|
|
|
- var ncResData = new YiDaResDto();
|
|
|
- if (resultcode == "1")
|
|
|
- {
|
|
|
- ncResData = (new YiDaResDto()
|
|
|
+ string resultdescription = xE.Element("sendresult").Element("resultdescription")?.Value;
|
|
|
+ var ncResData = new YiDaResDto();
|
|
|
+ if (resultcode == "1")
|
|
|
{
|
|
|
- bSuccess = true,
|
|
|
- syncTime = DateTime.Now,
|
|
|
- ncNo = resultdescription,//xE.Element("sendresult").Element("content").Value,
|
|
|
- log = "同步成功!"
|
|
|
- });
|
|
|
+ ncResData = (new YiDaResDto()
|
|
|
+ {
|
|
|
+ bSuccess = true,
|
|
|
+ syncTime = DateTime.Now,
|
|
|
+ ncNo = resultdescription,//xE.Element("sendresult").Element("content").Value,
|
|
|
+ log = "同步成功!"
|
|
|
+ });
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ ncResData = (new YiDaResDto()
|
|
|
+ {
|
|
|
+ bSuccess = false,
|
|
|
+ syncTime = DateTime.Now,
|
|
|
+ ncNo = "",
|
|
|
+ log = "同步失败!原因为【" + resultdescription + "】!"
|
|
|
+ });
|
|
|
+ }
|
|
|
+ //更新同步标识
|
|
|
+ var ydRes = _dingTalkService.UpdateFormDataSyncDataById(ncResData, item);
|
|
|
}
|
|
|
- else
|
|
|
+ catch (Exception ex)
|
|
|
{
|
|
|
- ncResData = (new YiDaResDto()
|
|
|
- {
|
|
|
- bSuccess = false,
|
|
|
- syncTime = DateTime.Now,
|
|
|
- ncNo = "",
|
|
|
- log = "同步失败!原因为【" + resultdescription + "】!"
|
|
|
- });
|
|
|
+ LogHelper.WriteLog(JsonConvert.SerializeObject(ex.ToString()), "ZZD循环内错误");
|
|
|
}
|
|
|
- //更新同步标识
|
|
|
- var ydRes = _dingTalkService.UpdateFormDataSyncDataById(ncResData, item);
|
|
|
+
|
|
|
}
|
|
|
}
|
|
|
catch (Exception ex)
|