|
|
@@ -262,6 +262,7 @@ public class SikuServiceImpl implements SikuService {
|
|
|
//发票开具成功后回调
|
|
|
String bizCode = UtilMap.getString(bizData, "bizCode");//发票号码
|
|
|
String invoiceNumber = UtilMap.getString(bizData, "invoiceNumber");//发票号码
|
|
|
+ long issueDate = UtilMap.getLong(bizData, "issueDate");//开票日期
|
|
|
String pdfUrl = UtilMap.getString(bizData, "pdfUrl");//pdf文件下载地址
|
|
|
String downloadPageUrl = UtilMap.getString(bizData, "downloadPageUrl");//发票下载页面链接
|
|
|
List<Map> detailItems = (List<Map>) UtilMap.getList(bizData, "detailItems");
|
|
|
@@ -272,6 +273,7 @@ public class SikuServiceImpl implements SikuService {
|
|
|
Map updateFormData = new HashMap();
|
|
|
updateFormData.put("radioField_mkxripcc","开票成功");
|
|
|
updateFormData.put("textField_mkxripc6",invoiceNumber);
|
|
|
+ updateFormData.put("dateField_mnfpbwpd",issueDate);
|
|
|
updateFormData.put("textField_mm3aixk0",downloadPageUrl);
|
|
|
updateFormData.put("textareaField_mmlzqvn0","");
|
|
|
|
|
|
@@ -700,6 +702,8 @@ public class SikuServiceImpl implements SikuService {
|
|
|
|
|
|
List<Map> invoiceTitles = new ArrayList<>();
|
|
|
|
|
|
+ List<Map> accounts = new ArrayList<>();
|
|
|
+
|
|
|
List<Map> invoiceList = UtilMap.getList(formData, "tableField_mn496ozf");
|
|
|
for (Map invoice : invoiceList) {
|
|
|
Map invoiceTitle = new HashMap();
|
|
|
@@ -709,9 +713,17 @@ public class SikuServiceImpl implements SikuService {
|
|
|
invoiceTitle.put("bankBranchName",UtilMap.getString(invoice,"textField_mkddjwyt"));//开户行
|
|
|
invoiceTitle.put("account",UtilMap.getString(invoice,"textField_mkddjwyu"));//银行账户
|
|
|
invoiceTitles.add(invoiceTitle);
|
|
|
+
|
|
|
+ Map account = new HashMap();
|
|
|
+ account.put("paymentType","BANK");//账户类型,
|
|
|
+ account.put("bankAcctName",UtilMap.getString(invoice,"textField_mkddjwyr"));//账户名
|
|
|
+ account.put("bankAcctNumber",UtilMap.getString(invoice,"textField_mkddjwyu"));//银行对应银行卡号
|
|
|
+ account.put("bankName",UtilMap.getString(invoice,"textField_mkddjwyt"));//银行名称
|
|
|
+ accounts.add(account);
|
|
|
}
|
|
|
|
|
|
- customerObj.put("invoiceTitles",invoiceTitles);//发票抬头列表
|
|
|
+ customerObj.put("invoiceTitles",invoiceTitles);//账户信息
|
|
|
+ customerObj.put("accounts",accounts);//账户信息
|
|
|
|
|
|
MkYpUtil.saveClient(Arrays.asList(customerObj));
|
|
|
|
|
|
@@ -725,6 +737,12 @@ public class SikuServiceImpl implements SikuService {
|
|
|
|
|
|
Map bizData = UtilMap.getMap(calloutParams, "bizData");
|
|
|
|
|
|
+ long verifyDate = UtilMap.getLong(bizData, "verifyDate");//核销日期
|
|
|
+
|
|
|
+ List<Map> upStreamItemList = UtilMap.getList(bizData, "upStreamItemList");//主核销方核销明细
|
|
|
+
|
|
|
+ Double totalVerifyAmount = UtilMap.getDouble(upStreamItemList.get(0), "totalVerifyAmount");//本次核销金额
|
|
|
+
|
|
|
List<Map> relatedDocuments = UtilMap.getList(bizData, "relatedDocuments");
|
|
|
|
|
|
for (Map relatedDocument : relatedDocuments) {
|
|
|
@@ -733,6 +751,7 @@ public class SikuServiceImpl implements SikuService {
|
|
|
if ("RECEIVABLE_AR".equals(formType)){
|
|
|
String bizCode = UtilMap.getString(relatedDocument, "bizCode");
|
|
|
|
|
|
+
|
|
|
//应收单查询
|
|
|
Map body = new HashMap();
|
|
|
body.put("bizCodes",Arrays.asList(bizCode));
|
|
|
@@ -754,9 +773,14 @@ public class SikuServiceImpl implements SikuService {
|
|
|
|
|
|
String formInstanceId = UtilMap.getString(data.get(0), "formInstanceId");
|
|
|
|
|
|
+ Map updateFormData = new HashMap();
|
|
|
+ updateFormData.put("numberField_ml8t9c4u",receivedAmount);//已收金额
|
|
|
+ updateFormData.put("dateField_mnfpbwpe",verifyDate);//核销日期
|
|
|
+ updateFormData.put("numberField_mngxcnih",totalVerifyAmount);//本次核销金额
|
|
|
+
|
|
|
ydClient.operateData(YDParam.builder()
|
|
|
.formInstanceId(formInstanceId)
|
|
|
- .updateFormDataJson(JSONObject.toJSONString(UtilMap.map("numberField_ml8t9c4u",receivedAmount)))
|
|
|
+ .updateFormDataJson(JSONObject.toJSONString(updateFormData))
|
|
|
.build(), YDConf.FORM_OPERATION.update);
|
|
|
|
|
|
return;
|
|
|
@@ -771,35 +795,69 @@ public class SikuServiceImpl implements SikuService {
|
|
|
public void invoiceWriteBack3(Map map) {
|
|
|
String formCode = UtilMap.getString(map, "formCode");
|
|
|
|
|
|
- String operation = UtilMap.getString(map, "operation");
|
|
|
+ if (!formCode.contains("需求") && !formCode.contains("采购")){
|
|
|
+ //判断是否为核销报销单
|
|
|
+ Map formData = UtilMap.getMap(map, "formData");
|
|
|
|
|
|
- if ("FORM_COMPLETE".equals(operation)){
|
|
|
- //完成
|
|
|
- }else if ("FORM_REJECT".equals(operation)){
|
|
|
- //驳回
|
|
|
+ Map expenseList = UtilMap.getMap(formData, "expenseList");
|
|
|
+
|
|
|
+ List<Map> expenseValueList = UtilMap.getList(expenseList, "value");
|
|
|
+
|
|
|
+ for (Map expenseValue : expenseValueList) {
|
|
|
+ Map deductionList = UtilMap.getMap(expenseValue, "deductionList");//当前对公费用核销的数据(当前到票核销场景核销了哪些“预付未到票”记录)
|
|
|
+
|
|
|
+ List<Map> deductionValueList = UtilMap.getList(deductionList, "value");
|
|
|
+
|
|
|
+ Map deductionValue = deductionValueList.get(0);
|
|
|
+
|
|
|
+ Double deductionAmount = UtilMap.getDouble(deductionValue, "deductionAmount");//核销金额
|
|
|
+ String targetFormCode = UtilMap.getString(deductionValue, "targetFormCode");//核销报销单编号
|
|
|
+
|
|
|
+ if (targetFormCode.contains("需求") || targetFormCode.contains("采购")){
|
|
|
+ //更新宜搭核销金额
|
|
|
+ updateYdDeduction(targetFormCode,deductionAmount);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return;
|
|
|
}
|
|
|
|
|
|
- String[] split = formCode.split("-");
|
|
|
+ Map reimburseDetailInfo = MkBxUtil.reimburseDetailInfo(formCode);
|
|
|
|
|
|
- String bh = split[0];//采购需求编号/直接采购单编号
|
|
|
- int index = Integer.parseInt(split[1]);//子表索引
|
|
|
+ Boolean installment = UtilMap.getBoolean(reimburseDetailInfo, "installment");//是否使用分期付款
|
|
|
|
|
|
- Map formData = UtilMap.getMap(map, "formData");
|
|
|
+ Boolean firstPeriodPayment = UtilMap.getBoolean(reimburseDetailInfo, "firstPeriodPayment");//分期情况下首期是否随本单支付
|
|
|
|
|
|
- Map baseAmount = UtilMap.getMap(formData, "baseAmount");
|
|
|
+ double amt = 0;
|
|
|
|
|
|
- Map value = UtilMap.getMap(baseAmount, "value");
|
|
|
+ if (installment){
|
|
|
+ if (firstPeriodPayment){
|
|
|
+ List<Map> collectionSchedule = UtilMap.getList(reimburseDetailInfo, "collectionSchedule");
|
|
|
|
|
|
- String text = UtilMap.getString(value, "text");
|
|
|
+ Map collectionAmount = UtilMap.getMap(collectionSchedule.get(0), "collectionAmount");
|
|
|
+
|
|
|
+ amt = UtilMap.getDouble(collectionAmount,"amount");
|
|
|
+ }else {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ }else {
|
|
|
+ amt = UtilMap.getDouble(reimburseDetailInfo, "paymentAmount");//应付金额
|
|
|
+ }
|
|
|
+
|
|
|
+ String[] split = formCode.split("-");
|
|
|
+
|
|
|
+ String bh = split[0];//采购需求编号/直接采购单编号
|
|
|
+ int index = Integer.parseInt(split[1]);//子表索引
|
|
|
|
|
|
- double amt = Double.parseDouble(text);
|
|
|
+ Map updateFormData = new HashMap();
|
|
|
+ List<Map> updateDetailList = new ArrayList<>();
|
|
|
|
|
|
if (formCode.contains("需求")){
|
|
|
//采购需求&结算
|
|
|
List<Map> data = (List<Map>) ydClient.queryData(YDParam.builder()
|
|
|
.formUuid("FORM-C8C1FBBA781C4C5EBAC487C07BC5A86AD2HO")
|
|
|
.searchCondition(JSONObject.toJSONString(UtilMap.map("serialNumberField_mkkmij3o", bh)))
|
|
|
- .build(), YDConf.FORM_QUERY.retrieve_list).getData();
|
|
|
+ .build(), YDConf.FORM_QUERY.retrieve_list_all).getData();
|
|
|
|
|
|
String formInstanceId = UtilMap.getString(data.get(0), "formInstanceId");
|
|
|
|
|
|
@@ -811,58 +869,61 @@ public class SikuServiceImpl implements SikuService {
|
|
|
List<Map> detailList = UtilMap.getList(ydFormData, "tableField_mkkmij56");
|
|
|
|
|
|
for (Map detail : detailList) {
|
|
|
+ Map detailMap = new HashMap();
|
|
|
if (index == UtilMap.getInt(detail, "numberField_mn36ykxx")){
|
|
|
Double jscb = UtilMap.getDouble(detail, "numberField_mkkmij5e");//结算成本
|
|
|
Double yfkje = UtilMap.getDouble(detail, "numberField_mmvqom6l");//已付款金额
|
|
|
String fkzt = UtilMap.getString(detail, "selectField_mmvhqm0p");//付款状态
|
|
|
if (yfkje + amt == jscb){
|
|
|
- detail.put("selectField_mmvhqm0p","全部付款");
|
|
|
+ detailMap.put("selectField_mmvhqm0p","全部付款");
|
|
|
}else if (yfkje + amt < jscb && yfkje + amt > 0 && !"部分退款".equals(fkzt)){
|
|
|
- detail.put("selectField_mmvhqm0p","部分付款");
|
|
|
+ detailMap.put("selectField_mmvhqm0p","部分付款");
|
|
|
}
|
|
|
|
|
|
- detail.put("numberField_mmvqom6l",yfkje + amt);
|
|
|
-
|
|
|
- break;
|
|
|
+ detailMap.put("numberField_mmvqom6l",yfkje + amt);
|
|
|
}
|
|
|
+ updateDetailList.add(detailMap);
|
|
|
}
|
|
|
+ updateFormData.put("tableField_mkkmij56",updateDetailList);
|
|
|
}else {
|
|
|
List<Map> detailList = UtilMap.getList(ydFormData, "tableField_mkkmij61");
|
|
|
|
|
|
for (Map detail : detailList) {
|
|
|
+ Map detailMap = new HashMap();
|
|
|
if (index == UtilMap.getInt(detail, "numberField_mn36ykxz")){
|
|
|
-
|
|
|
Double jscb = UtilMap.getDouble(detail, "numberField_mkkmij6p");//结算成本
|
|
|
Double yfkje = UtilMap.getDouble(detail, "numberField_mmvqs9h6");//已付款金额
|
|
|
String fkzt = UtilMap.getString(detail, "selectField_mkkmij6a");//付款状态
|
|
|
|
|
|
if (yfkje + amt == jscb){
|
|
|
- detail.put("selectField_mkkmij6a","全部付款");
|
|
|
+ detailMap.put("selectField_mkkmij6a","全部付款");
|
|
|
}else if (yfkje + amt < jscb && yfkje + amt > 0 && !"部分退款".equals(fkzt)){
|
|
|
- detail.put("selectField_mkkmij6a","部分付款");
|
|
|
+ detailMap.put("selectField_mkkmij6a","部分付款");
|
|
|
}
|
|
|
|
|
|
- detail.put("numberField_mmvqom6l",yfkje + amt);
|
|
|
-
|
|
|
- break;
|
|
|
+ detailMap.put("numberField_mmvqs9h6",yfkje + amt);
|
|
|
}
|
|
|
+ updateDetailList.add(detailMap);
|
|
|
}
|
|
|
+ updateFormData.put("tableField_mkkmij61",updateDetailList);
|
|
|
}
|
|
|
|
|
|
Double yzf = UtilMap.getDouble(ydFormData, "numberField_mkf2qumf");//已支付
|
|
|
|
|
|
- ydFormData.put("numberField_mkf2qumf",yzf + amt);
|
|
|
+ updateFormData.put("numberField_mkf2qumf",yzf + amt);//已支付
|
|
|
+ updateFormData.put("numberField_mnibjld0",amt);//最新支付金额
|
|
|
|
|
|
ydClient.operateData(YDParam.builder()
|
|
|
.formInstanceId(formInstanceId)
|
|
|
- .updateFormDataJson(JSONObject.toJSONString(ydFormData))
|
|
|
+ .updateFormDataJson(JSONObject.toJSONString(updateFormData))
|
|
|
+ .useLatestVersion(true)
|
|
|
.build(), YDConf.FORM_OPERATION.update);
|
|
|
}else {
|
|
|
//直接采购结算单
|
|
|
List<Map> data = (List<Map>) ydClient.queryData(YDParam.builder()
|
|
|
.formUuid("FORM-1AFEDDA034C74F0DB18FA60C941CB56EHUUG")
|
|
|
.searchCondition(JSONObject.toJSONString(UtilMap.map("serialNumberField_mkkmij3o", bh)))
|
|
|
- .build(), YDConf.FORM_QUERY.retrieve_list).getData();
|
|
|
+ .build(), YDConf.FORM_QUERY.retrieve_list_all).getData();
|
|
|
|
|
|
String formInstanceId = UtilMap.getString(data.get(0), "formInstanceId");
|
|
|
|
|
|
@@ -874,56 +935,164 @@ public class SikuServiceImpl implements SikuService {
|
|
|
List<Map> detailList = UtilMap.getList(ydFormData, "tableField_mkkmij56");
|
|
|
|
|
|
for (Map detail : detailList) {
|
|
|
+ Map detailMap = new HashMap();
|
|
|
if (index == UtilMap.getInt(detail, "numberField_mn36ykxx")){
|
|
|
Double jscb = UtilMap.getDouble(detail, "numberField_mkkmij5e");//结算成本
|
|
|
Double yfkje = UtilMap.getDouble(detail, "numberField_mmvqom6k");//已付款金额
|
|
|
String fkzt = UtilMap.getString(detail, "selectField_mmvhtdy0");//付款状态
|
|
|
+
|
|
|
if (yfkje + amt == jscb){
|
|
|
- detail.put("selectField_mmvhtdy0","全部付款");
|
|
|
+ detailMap.put("selectField_mmvhtdy0","全部付款");
|
|
|
}else if (yfkje + amt < jscb && yfkje + amt > 0 && !"部分退款".equals(fkzt)){
|
|
|
- detail.put("selectField_mmvhtdy0","部分付款");
|
|
|
+ detailMap.put("selectField_mmvhtdy0","部分付款");
|
|
|
}
|
|
|
|
|
|
- detail.put("numberField_mmvqom6k",yfkje + amt);
|
|
|
-
|
|
|
- break;
|
|
|
+ detailMap.put("numberField_mmvqom6k",yfkje + amt);
|
|
|
}
|
|
|
+ updateDetailList.add(detailMap);
|
|
|
}
|
|
|
+ updateFormData.put("tableField_mkkmij56",updateDetailList);
|
|
|
}else {
|
|
|
List<Map> detailList = UtilMap.getList(ydFormData, "tableField_mkkmij61");
|
|
|
|
|
|
for (Map detail : detailList) {
|
|
|
+ Map detailMap = new HashMap();
|
|
|
if (index == UtilMap.getInt(detail, "numberField_mn36ykxz")){
|
|
|
-
|
|
|
Double jscb = UtilMap.getDouble(detail, "numberField_mkkmij6p");//结算成本
|
|
|
Double yfkje = UtilMap.getDouble(detail, "numberField_mmvqom6l");//已付款金额
|
|
|
String fkzt = UtilMap.getString(detail, "selectField_mkkmij6a");//付款状态
|
|
|
|
|
|
if (yfkje + amt == jscb){
|
|
|
- detail.put("selectField_mkkmij6a","全部付款");
|
|
|
+ detailMap.put("selectField_mkkmij6a","全部付款");
|
|
|
}else if (yfkje + amt < jscb && yfkje + amt > 0 && !"部分退款".equals(fkzt)){
|
|
|
- detail.put("selectField_mkkmij6a","部分付款");
|
|
|
+ detailMap.put("selectField_mkkmij6a","部分付款");
|
|
|
}
|
|
|
|
|
|
- detail.put("numberField_mmvqom6l",yfkje + amt);
|
|
|
-
|
|
|
- break;
|
|
|
+ detailMap.put("numberField_mmvqom6l",yfkje + amt);
|
|
|
}
|
|
|
+ updateDetailList.add(detailMap);
|
|
|
}
|
|
|
+ updateFormData.put("tableField_mkkmij61",updateDetailList);
|
|
|
}
|
|
|
-
|
|
|
Double yzf = UtilMap.getDouble(ydFormData, "numberField_mkf2qumf");//已支付
|
|
|
|
|
|
- ydFormData.put("numberField_mkf2qumf",yzf + amt);
|
|
|
+ updateFormData.put("numberField_mkf2qumf",yzf + amt);//已支付
|
|
|
+ updateFormData.put("numberField_mnibjld0",amt);//最新支付金额
|
|
|
+
|
|
|
|
|
|
ydClient.operateData(YDParam.builder()
|
|
|
.formInstanceId(formInstanceId)
|
|
|
- .updateFormDataJson(JSONObject.toJSONString(ydFormData))
|
|
|
+ .updateFormDataJson(JSONObject.toJSONString(updateFormData))
|
|
|
+ .useLatestVersion(true)
|
|
|
.build(), YDConf.FORM_OPERATION.update);
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
+ //更新宜搭采购已核销金额
|
|
|
+ private void updateYdDeduction(String formCode, Double deductionAmount) {
|
|
|
+ String[] split = formCode.split("-");
|
|
|
+ String bh = split[0];
|
|
|
+ int index = Integer.parseInt(split[1]);
|
|
|
+
|
|
|
+ Map updateFormData = new HashMap();
|
|
|
+ List<Map> updateDetailList = new ArrayList<>();
|
|
|
+
|
|
|
+ if (formCode.contains("需求")){
|
|
|
+ //采购需求&结算
|
|
|
+ List<Map> data = (List<Map>) ydClient.queryData(YDParam.builder()
|
|
|
+ .formUuid("FORM-C8C1FBBA781C4C5EBAC487C07BC5A86AD2HO")
|
|
|
+ .searchCondition(JSONObject.toJSONString(UtilMap.map("serialNumberField_mkkmij3o", bh)))
|
|
|
+ .build(), YDConf.FORM_QUERY.retrieve_list_all).getData();
|
|
|
+
|
|
|
+ String formInstanceId = UtilMap.getString(data.get(0), "formInstanceId");
|
|
|
+
|
|
|
+ Map ydFormData = UtilMap.getMap(data.get(0), "formData");
|
|
|
+
|
|
|
+ String type = UtilMap.getString(ydFormData, "radioField_mkkmij3b");
|
|
|
+
|
|
|
+ if ("常规需求".equals(type)){
|
|
|
+ List<Map> detailList = UtilMap.getList(ydFormData, "tableField_mkkmij56");
|
|
|
+
|
|
|
+ for (Map detail : detailList) {
|
|
|
+ Map detailMap = new HashMap();
|
|
|
+ if (index == UtilMap.getInt(detail, "numberField_mn36ykxx")){
|
|
|
+ Double yhxje = UtilMap.getDouble(detail, "numberField_mniatky8");//已核销金额
|
|
|
+
|
|
|
+ detailMap.put("numberField_mniatky8",yhxje + deductionAmount);
|
|
|
+ }
|
|
|
+ updateDetailList.add(detailMap);
|
|
|
+ }
|
|
|
+ updateFormData.put("tableField_mkkmij56",updateDetailList);
|
|
|
+ }else {
|
|
|
+ List<Map> detailList = UtilMap.getList(ydFormData, "tableField_mkkmij61");
|
|
|
+
|
|
|
+ for (Map detail : detailList) {
|
|
|
+ Map detailMap = new HashMap();
|
|
|
+ if (index == UtilMap.getInt(detail, "numberField_mn36ykxz")){
|
|
|
+ Double yhxje = UtilMap.getDouble(detail, "numberField_mniatkya");//已核销金额
|
|
|
+
|
|
|
+ detailMap.put("numberField_mniatkya",yhxje + deductionAmount);
|
|
|
+ }
|
|
|
+ updateDetailList.add(detailMap);
|
|
|
+ }
|
|
|
+ updateFormData.put("tableField_mkkmij61",updateDetailList);
|
|
|
+ }
|
|
|
+
|
|
|
+ ydClient.operateData(YDParam.builder()
|
|
|
+ .formInstanceId(formInstanceId)
|
|
|
+ .updateFormDataJson(JSONObject.toJSONString(updateFormData))
|
|
|
+ .useLatestVersion(true)
|
|
|
+ .build(), YDConf.FORM_OPERATION.update);
|
|
|
+ }else {
|
|
|
+ //直接采购结算单
|
|
|
+ List<Map> data = (List<Map>) ydClient.queryData(YDParam.builder()
|
|
|
+ .formUuid("FORM-1AFEDDA034C74F0DB18FA60C941CB56EHUUG")
|
|
|
+ .searchCondition(JSONObject.toJSONString(UtilMap.map("serialNumberField_mkkmij3o", bh)))
|
|
|
+ .build(), YDConf.FORM_QUERY.retrieve_list_all).getData();
|
|
|
+
|
|
|
+ String formInstanceId = UtilMap.getString(data.get(0), "formInstanceId");
|
|
|
+
|
|
|
+ Map ydFormData = UtilMap.getMap(data.get(0), "formData");
|
|
|
+
|
|
|
+ String type = UtilMap.getString(ydFormData, "radioField_mkkmij3b");
|
|
|
+
|
|
|
+ if ("常规采购".equals(type)){
|
|
|
+ List<Map> detailList = UtilMap.getList(ydFormData, "tableField_mkkmij56");
|
|
|
+
|
|
|
+ for (Map detail : detailList) {
|
|
|
+ Map detailMap = new HashMap();
|
|
|
+ if (index == UtilMap.getInt(detail, "numberField_mn36ykxx")){
|
|
|
+ Double yhxje = UtilMap.getDouble(detail, "numberField_mniatky8");//已核销金额
|
|
|
+
|
|
|
+ detailMap.put("numberField_mniatky8",yhxje + deductionAmount);
|
|
|
+ }
|
|
|
+ updateDetailList.add(detailMap);
|
|
|
+ }
|
|
|
+ updateFormData.put("tableField_mkkmij56",updateDetailList);
|
|
|
+ }else {
|
|
|
+ List<Map> detailList = UtilMap.getList(ydFormData, "tableField_mkkmij61");
|
|
|
+
|
|
|
+ for (Map detail : detailList) {
|
|
|
+ Map detailMap = new HashMap();
|
|
|
+ if (index == UtilMap.getInt(detail, "numberField_mn36ykxz")){
|
|
|
+ Double yhxje = UtilMap.getDouble(detail, "numberField_mniatkya");//已核销金额
|
|
|
+
|
|
|
+ detailMap.put("numberField_mniatkya",yhxje + deductionAmount);
|
|
|
+ }
|
|
|
+ updateDetailList.add(detailMap);
|
|
|
+ }
|
|
|
+ updateFormData.put("tableField_mkkmij61",updateDetailList);
|
|
|
+ }
|
|
|
+
|
|
|
+ ydClient.operateData(YDParam.builder()
|
|
|
+ .formInstanceId(formInstanceId)
|
|
|
+ .updateFormDataJson(JSONObject.toJSONString(updateFormData))
|
|
|
+ .useLatestVersion(true)
|
|
|
+ .build(), YDConf.FORM_OPERATION.update);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
public McR saveBxReimbursement2(Map map) {
|
|
|
String formInstId = UtilMap.getString(map, "formInstId");
|
|
|
@@ -1270,6 +1439,302 @@ public class SikuServiceImpl implements SikuService {
|
|
|
|
|
|
}
|
|
|
|
|
|
+ @Async
|
|
|
+ @Override
|
|
|
+ public void invoiceWriteBack4(Map map) {
|
|
|
+ String formCode = UtilMap.getString(map, "formCode");//付款单编号
|
|
|
+
|
|
|
+ //查询付款单详情
|
|
|
+ Map paymentDetailInfo = MkBxUtil.paymentDetailInfo(formCode);
|
|
|
+
|
|
|
+ String reimburseFormSubTypeBizCode = UtilMap.getString(paymentDetailInfo, "reimburseFormSubTypeBizCode");//关联的报销单的单据小类编码
|
|
|
+
|
|
|
+ //项目支付单(对公)
|
|
|
+ if ("FT208629766551519240".equals(reimburseFormSubTypeBizCode)){
|
|
|
+ String reimburseCode = UtilMap.getString(paymentDetailInfo, "reimburseCode");
|
|
|
+
|
|
|
+ //宜搭推送的项目支付单编号 格式:流水号-index
|
|
|
+ if (reimburseCode.contains("采购") || reimburseCode.contains("需求")){
|
|
|
+ String[] split = reimburseCode.split("-");
|
|
|
+
|
|
|
+ String ydFormCode = split[0];
|
|
|
+ int index = Integer.parseInt(split[1]);
|
|
|
+
|
|
|
+ Map approvedAmount = UtilMap.getMap(paymentDetailInfo, "approvedAmount");
|
|
|
+ Double amt = UtilMap.getDouble(approvedAmount, "amount");//审批通过金额
|
|
|
+
|
|
|
+ long settledAt = UtilMap.getLong(paymentDetailInfo, "settledAt");//支付时间
|
|
|
+
|
|
|
+ Map updateFormData = new HashMap();
|
|
|
+ List<Map> updateDetailList = new ArrayList<>();
|
|
|
+
|
|
|
+ if (reimburseCode.contains("需求")){
|
|
|
+ //采购需求&结算
|
|
|
+ List<Map> data = (List<Map>) ydClient.queryData(YDParam.builder()
|
|
|
+ .formUuid("FORM-C8C1FBBA781C4C5EBAC487C07BC5A86AD2HO")
|
|
|
+ .searchCondition(JSONObject.toJSONString(UtilMap.map("serialNumberField_mkkmij3o", ydFormCode)))
|
|
|
+ .build(), YDConf.FORM_QUERY.retrieve_list_all).getData();
|
|
|
+
|
|
|
+ String formInstanceId = UtilMap.getString(data.get(0), "formInstanceId");
|
|
|
+
|
|
|
+ Map ydFormData = UtilMap.getMap(data.get(0), "formData");
|
|
|
+
|
|
|
+ String type = UtilMap.getString(ydFormData, "radioField_mkkmij3b");
|
|
|
+
|
|
|
+ if ("常规需求".equals(type)){
|
|
|
+ List<Map> detailList = UtilMap.getList(ydFormData, "tableField_mkkmij56");
|
|
|
+
|
|
|
+ for (Map detail : detailList) {
|
|
|
+ Map detailMap = new HashMap();
|
|
|
+ if (index == UtilMap.getInt(detail, "numberField_mn36ykxx")){
|
|
|
+ Double jscb = UtilMap.getDouble(detail, "numberField_mkkmij5e");//结算成本
|
|
|
+ Double yfkje = UtilMap.getDouble(detail, "numberField_mmvqom6l");//已付款金额
|
|
|
+ String fkzt = UtilMap.getString(detail, "selectField_mmvhqm0p");//付款状态
|
|
|
+ if (yfkje + amt == jscb){
|
|
|
+ detailMap.put("selectField_mmvhqm0p","全部付款");
|
|
|
+ }else if (yfkje + amt < jscb && yfkje + amt > 0 && !"部分退款".equals(fkzt)){
|
|
|
+ detailMap.put("selectField_mmvhqm0p","部分付款");
|
|
|
+ }
|
|
|
+
|
|
|
+ detailMap.put("numberField_mmvqom6l",yfkje + amt);
|
|
|
+ detailMap.put("dateField_mnh6e4zy",settledAt);
|
|
|
+ }
|
|
|
+ updateDetailList.add(detailMap);
|
|
|
+ }
|
|
|
+ updateFormData.put("tableField_mkkmij56",updateDetailList);
|
|
|
+ }else {
|
|
|
+ List<Map> detailList = UtilMap.getList(ydFormData, "tableField_mkkmij61");
|
|
|
+
|
|
|
+ for (Map detail : detailList) {
|
|
|
+ Map detailMap = new HashMap();
|
|
|
+ if (index == UtilMap.getInt(detail, "numberField_mn36ykxz")){
|
|
|
+ Double jscb = UtilMap.getDouble(detail, "numberField_mkkmij6p");//结算成本
|
|
|
+ Double yfkje = UtilMap.getDouble(detail, "numberField_mmvqs9h6");//已付款金额
|
|
|
+ String fkzt = UtilMap.getString(detail, "selectField_mkkmij6a");//付款状态
|
|
|
+
|
|
|
+ if (yfkje + amt == jscb){
|
|
|
+ detail.put("selectField_mkkmij6a","全部付款");
|
|
|
+ }else if (yfkje + amt < jscb && yfkje + amt > 0 && !"部分退款".equals(fkzt)){
|
|
|
+ detailMap.put("selectField_mkkmij6a","部分付款");
|
|
|
+ }
|
|
|
+
|
|
|
+ detailMap.put("numberField_mmvqs9h6",yfkje + amt);
|
|
|
+ detailMap.put("dateField_mnh6e4zy",settledAt);
|
|
|
+ }
|
|
|
+ updateDetailList.add(detailMap);
|
|
|
+ }
|
|
|
+ updateFormData.put("tableField_mkkmij61",updateDetailList);
|
|
|
+ }
|
|
|
+
|
|
|
+ Double yzf = UtilMap.getDouble(ydFormData, "numberField_mkf2qumf");//已支付
|
|
|
+
|
|
|
+ ydFormData.put("numberField_mkf2qumf",yzf + amt);//已支付
|
|
|
+ ydFormData.put("numberField_mnibjld0",amt);//最新支付金额
|
|
|
+
|
|
|
+ ydClient.operateData(YDParam.builder()
|
|
|
+ .formInstanceId(formInstanceId)
|
|
|
+ .updateFormDataJson(JSONObject.toJSONString(ydFormData))
|
|
|
+ .build(), YDConf.FORM_OPERATION.update);
|
|
|
+ }else {
|
|
|
+ //直接采购结算单
|
|
|
+ List<Map> data = (List<Map>) ydClient.queryData(YDParam.builder()
|
|
|
+ .formUuid("FORM-1AFEDDA034C74F0DB18FA60C941CB56EHUUG")
|
|
|
+ .searchCondition(JSONObject.toJSONString(UtilMap.map("serialNumberField_mkkmij3o", ydFormCode)))
|
|
|
+ .build(), YDConf.FORM_QUERY.retrieve_list_all).getData();
|
|
|
+
|
|
|
+ String formInstanceId = UtilMap.getString(data.get(0), "formInstanceId");
|
|
|
+
|
|
|
+ Map ydFormData = UtilMap.getMap(data.get(0), "formData");
|
|
|
+
|
|
|
+ String type = UtilMap.getString(ydFormData, "radioField_mkkmij3b");
|
|
|
+
|
|
|
+ if ("常规采购".equals(type)){
|
|
|
+ List<Map> detailList = UtilMap.getList(ydFormData, "tableField_mkkmij56");
|
|
|
+
|
|
|
+ for (Map detail : detailList) {
|
|
|
+ Map detailMap = new HashMap();
|
|
|
+ if (index == UtilMap.getInt(detail, "numberField_mn36ykxx")){
|
|
|
+ Double jscb = UtilMap.getDouble(detail, "numberField_mkkmij5e");//结算成本
|
|
|
+ Double yfkje = UtilMap.getDouble(detail, "numberField_mmvqom6k");//已付款金额
|
|
|
+ String fkzt = UtilMap.getString(detail, "selectField_mmvhtdy0");//付款状态
|
|
|
+ if (yfkje + amt == jscb){
|
|
|
+ detailMap.put("selectField_mmvhtdy0","全部付款");
|
|
|
+ }else if (yfkje + amt < jscb && yfkje + amt > 0 && !"部分退款".equals(fkzt)){
|
|
|
+ detailMap.put("selectField_mmvhtdy0","部分付款");
|
|
|
+ }
|
|
|
+
|
|
|
+ detailMap.put("numberField_mmvqom6k",yfkje + amt);
|
|
|
+ detailMap.put("dateField_mnh6e4zy",settledAt);
|
|
|
+ }
|
|
|
+ updateDetailList.add(detailMap);
|
|
|
+ }
|
|
|
+ updateFormData.put("tableField_mkkmij56",updateDetailList);
|
|
|
+ }else {
|
|
|
+ List<Map> detailList = UtilMap.getList(ydFormData, "tableField_mkkmij61");
|
|
|
+
|
|
|
+ for (Map detail : detailList) {
|
|
|
+ Map detailMap = new HashMap();
|
|
|
+ if (index == UtilMap.getInt(detail, "numberField_mn36ykxz")){
|
|
|
+ Double jscb = UtilMap.getDouble(detail, "numberField_mkkmij6p");//结算成本
|
|
|
+ Double yfkje = UtilMap.getDouble(detail, "numberField_mmvqom6l");//已付款金额
|
|
|
+ String fkzt = UtilMap.getString(detail, "selectField_mkkmij6a");//付款状态
|
|
|
+
|
|
|
+ if (yfkje + amt == jscb){
|
|
|
+ detailMap.put("selectField_mkkmij6a","全部付款");
|
|
|
+ }else if (yfkje + amt < jscb && yfkje + amt > 0 && !"部分退款".equals(fkzt)){
|
|
|
+ detailMap.put("selectField_mkkmij6a","部分付款");
|
|
|
+ }
|
|
|
+
|
|
|
+ detailMap.put("numberField_mmvqom6l",yfkje + amt);
|
|
|
+ detailMap.put("dateField_mnh6e4zy",settledAt);
|
|
|
+ }
|
|
|
+ updateDetailList.add(detailMap);
|
|
|
+ }
|
|
|
+ updateFormData.put("tableField_mkkmij61",updateDetailList);
|
|
|
+ }
|
|
|
+
|
|
|
+ Double yzf = UtilMap.getDouble(ydFormData, "numberField_mkf2qumf");//已支付
|
|
|
+
|
|
|
+ updateFormData.put("numberField_mkf2qumf",yzf + amt);//已支付
|
|
|
+ updateFormData.put("numberField_mnibjld0",amt);//最新支付金额
|
|
|
+
|
|
|
+ ydClient.operateData(YDParam.builder()
|
|
|
+ .formInstanceId(formInstanceId)
|
|
|
+ .updateFormDataJson(JSONObject.toJSONString(updateFormData))
|
|
|
+ .build(), YDConf.FORM_OPERATION.update);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Async
|
|
|
+ @Override
|
|
|
+ public void invoiceWriteBack5(Map map) {
|
|
|
+ String formCode = UtilMap.getString(map, "formCode");
|
|
|
+
|
|
|
+ Map repayDetailInfo = MkBxUtil.repayDetailInfo(formCode);
|
|
|
+
|
|
|
+ Map repayAmount = UtilMap.getMap(repayDetailInfo, "repayAmount");
|
|
|
+
|
|
|
+ Double amount = UtilMap.getDouble(repayAmount, "amount");//还款金额
|
|
|
+
|
|
|
+ List<Map> returnDeductions = UtilMap.getList(repayDetailInfo, "returnDeductions");
|
|
|
+
|
|
|
+ for (Map returnDeduction : returnDeductions) {
|
|
|
+ String recordFormCode = UtilMap.getString(returnDeduction, "recordFormCode");
|
|
|
+
|
|
|
+ if (recordFormCode.contains("采购") || recordFormCode.contains("需求")){
|
|
|
+ updateYdRepay(recordFormCode,amount);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //更新宜搭采购已退回金额
|
|
|
+ private void updateYdRepay(String formCode, Double amount) {
|
|
|
+ String[] split = formCode.split("-");
|
|
|
+ String bh = split[0];
|
|
|
+ int index = Integer.parseInt(split[1]);
|
|
|
+
|
|
|
+ Map updateFormData = new HashMap();
|
|
|
+ List<Map> updateDetailList = new ArrayList<>();
|
|
|
+
|
|
|
+ if (formCode.contains("需求")){
|
|
|
+ //采购需求&结算
|
|
|
+ List<Map> data = (List<Map>) ydClient.queryData(YDParam.builder()
|
|
|
+ .formUuid("FORM-C8C1FBBA781C4C5EBAC487C07BC5A86AD2HO")
|
|
|
+ .searchCondition(JSONObject.toJSONString(UtilMap.map("serialNumberField_mkkmij3o", bh)))
|
|
|
+ .build(), YDConf.FORM_QUERY.retrieve_list_all).getData();
|
|
|
+
|
|
|
+ String formInstanceId = UtilMap.getString(data.get(0), "formInstanceId");
|
|
|
+
|
|
|
+ Map ydFormData = UtilMap.getMap(data.get(0), "formData");
|
|
|
+
|
|
|
+ String type = UtilMap.getString(ydFormData, "radioField_mkkmij3b");
|
|
|
+
|
|
|
+ if ("常规需求".equals(type)){
|
|
|
+ List<Map> detailList = UtilMap.getList(ydFormData, "tableField_mkkmij56");
|
|
|
+
|
|
|
+ for (Map detail : detailList) {
|
|
|
+ Map detailMap = new HashMap();
|
|
|
+ if (index == UtilMap.getInt(detail, "numberField_mn36ykxx")){
|
|
|
+ Double ythje = UtilMap.getDouble(detail, "numberField_mn4g182f");//已退回金额
|
|
|
+
|
|
|
+ detailMap.put("numberField_mn4g182f",ythje + amount);
|
|
|
+ }
|
|
|
+ updateDetailList.add(detailMap);
|
|
|
+ }
|
|
|
+ updateFormData.put("tableField_mkkmij56",updateDetailList);
|
|
|
+ }else {
|
|
|
+ List<Map> detailList = UtilMap.getList(ydFormData, "tableField_mkkmij61");
|
|
|
+
|
|
|
+ for (Map detail : detailList) {
|
|
|
+ Map detailMap = new HashMap();
|
|
|
+ if (index == UtilMap.getInt(detail, "numberField_mn36ykxz")){
|
|
|
+ Double ythje = UtilMap.getDouble(detail, "numberField_mn4g182g");//已退回金额
|
|
|
+
|
|
|
+ detailMap.put("numberField_mn4g182g",ythje + amount);
|
|
|
+ }
|
|
|
+ updateDetailList.add(detailMap);
|
|
|
+ }
|
|
|
+ updateFormData.put("tableField_mkkmij61",updateDetailList);
|
|
|
+ }
|
|
|
+
|
|
|
+ ydClient.operateData(YDParam.builder()
|
|
|
+ .formInstanceId(formInstanceId)
|
|
|
+ .updateFormDataJson(JSONObject.toJSONString(updateFormData))
|
|
|
+ .useLatestVersion(true)
|
|
|
+ .build(), YDConf.FORM_OPERATION.update);
|
|
|
+ }else {
|
|
|
+ //直接采购结算单
|
|
|
+ List<Map> data = (List<Map>) ydClient.queryData(YDParam.builder()
|
|
|
+ .formUuid("FORM-1AFEDDA034C74F0DB18FA60C941CB56EHUUG")
|
|
|
+ .searchCondition(JSONObject.toJSONString(UtilMap.map("serialNumberField_mkkmij3o", bh)))
|
|
|
+ .build(), YDConf.FORM_QUERY.retrieve_list_all).getData();
|
|
|
+
|
|
|
+ String formInstanceId = UtilMap.getString(data.get(0), "formInstanceId");
|
|
|
+
|
|
|
+ Map ydFormData = UtilMap.getMap(data.get(0), "formData");
|
|
|
+
|
|
|
+ String type = UtilMap.getString(ydFormData, "radioField_mkkmij3b");
|
|
|
+
|
|
|
+ if ("常规采购".equals(type)){
|
|
|
+ List<Map> detailList = UtilMap.getList(ydFormData, "tableField_mkkmij56");
|
|
|
+
|
|
|
+ for (Map detail : detailList) {
|
|
|
+ Map detailMap = new HashMap();
|
|
|
+ if (index == UtilMap.getInt(detail, "numberField_mn36ykxx")){
|
|
|
+ Double ythje = UtilMap.getDouble(detail, "numberField_mn4g182f");//已退回金额
|
|
|
+
|
|
|
+ detailMap.put("numberField_mn4g182f",ythje + amount);
|
|
|
+ }
|
|
|
+ updateDetailList.add(detailMap);
|
|
|
+ }
|
|
|
+ updateFormData.put("tableField_mkkmij56",updateDetailList);
|
|
|
+ }else {
|
|
|
+ List<Map> detailList = UtilMap.getList(ydFormData, "tableField_mkkmij61");
|
|
|
+
|
|
|
+ for (Map detail : detailList) {
|
|
|
+ Map detailMap = new HashMap();
|
|
|
+ if (index == UtilMap.getInt(detail, "numberField_mn36ykxz")){
|
|
|
+ Double ythje = UtilMap.getDouble(detail, "numberField_mn4g182g");//已退回金额
|
|
|
+
|
|
|
+ detailMap.put("numberField_mn4g182g",ythje + amount);
|
|
|
+ }
|
|
|
+ updateDetailList.add(detailMap);
|
|
|
+ }
|
|
|
+ updateFormData.put("tableField_mkkmij61",updateDetailList);
|
|
|
+ }
|
|
|
+
|
|
|
+ ydClient.operateData(YDParam.builder()
|
|
|
+ .formInstanceId(formInstanceId)
|
|
|
+ .updateFormDataJson(JSONObject.toJSONString(updateFormData))
|
|
|
+ .useLatestVersion(true)
|
|
|
+ .build(), YDConf.FORM_OPERATION.update);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
//文件下载到本地
|
|
|
private void downloadFile(String downloadUri,String downloadPath){
|
|
|
try {
|