|
@@ -76,8 +76,22 @@ public class SikuServiceImpl implements SikuService {
|
|
|
|
|
|
|
|
Map result = MkBxUtil.saveTradingPartner(body);
|
|
Map result = MkBxUtil.saveTradingPartner(body);
|
|
|
|
|
|
|
|
- //保存供应商账户
|
|
|
|
|
- if ("供应商".equals(type)){
|
|
|
|
|
|
|
+ List<Map> data = UtilMap.getList(result, "data");
|
|
|
|
|
+
|
|
|
|
|
+ String status = UtilMap.getString(data.get(0), "status");
|
|
|
|
|
+
|
|
|
|
|
+ if ("ALL_FAIL".equals(status)){
|
|
|
|
|
+ //保存往来单位失败回写错误信息
|
|
|
|
|
+ String message = UtilMap.getString(data.get(0), "message");
|
|
|
|
|
+
|
|
|
|
|
+ ydClient.operateData(YDParam.builder()
|
|
|
|
|
+ .formInstanceId(formInstId)
|
|
|
|
|
+ .updateFormDataJson(JSONObject.toJSONString(UtilMap.map("selectField_mmx7nk6m, textareaField_mmx7nk6r","入库失败",message)))
|
|
|
|
|
+ .build(), YDConf.FORM_OPERATION.update);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ //保存往来单位账户
|
|
|
|
|
+ if ("SUCCESS".equals(status)){
|
|
|
Map account = new HashMap();
|
|
Map account = new HashMap();
|
|
|
account.put("businessCode",UtilMap.getString(formData,"serialNumberField_mketkvw4"));
|
|
account.put("businessCode",UtilMap.getString(formData,"serialNumberField_mketkvw4"));
|
|
|
|
|
|
|
@@ -89,7 +103,23 @@ public class SikuServiceImpl implements SikuService {
|
|
|
|
|
|
|
|
account.put("accounts",Arrays.asList(accountItem));
|
|
account.put("accounts",Arrays.asList(accountItem));
|
|
|
|
|
|
|
|
- MkBxUtil.saveAccount(Arrays.asList(account));
|
|
|
|
|
|
|
+ Map result2 = MkBxUtil.saveAccount(Arrays.asList(account));
|
|
|
|
|
+
|
|
|
|
|
+ List<Map> data2 = UtilMap.getList(result2, "data");
|
|
|
|
|
+ String status2 = UtilMap.getString(data2.get(0), "status");
|
|
|
|
|
+ if ("ALL_FAIL".equals(status2)){
|
|
|
|
|
+ String message = UtilMap.getString(data2.get(0), "message");
|
|
|
|
|
+
|
|
|
|
|
+ ydClient.operateData(YDParam.builder()
|
|
|
|
|
+ .formInstanceId(formInstId)
|
|
|
|
|
+ .updateFormDataJson(JSONObject.toJSONString(UtilMap.map("selectField_mmx7nk6m, textareaField_mmx7nk6r","入库成功,账号保存失败",message)))
|
|
|
|
|
+ .build(), YDConf.FORM_OPERATION.update);
|
|
|
|
|
+ }else {
|
|
|
|
|
+ ydClient.operateData(YDParam.builder()
|
|
|
|
|
+ .formInstanceId(formInstId)
|
|
|
|
|
+ .updateFormDataJson(JSONObject.toJSONString(UtilMap.map("selectField_mmx7nk6m, textareaField_mmx7nk6r","入库成功","")))
|
|
|
|
|
+ .build(), YDConf.FORM_OPERATION.update);
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
return McR.success();
|
|
return McR.success();
|
|
@@ -109,6 +139,9 @@ public class SikuServiceImpl implements SikuService {
|
|
|
|
|
|
|
|
application.put("clientBizCode",UtilMap.getString(formData,"textField_mkxpe3fj"));//收票方bizCode(客户的业务编码(云票系统内维护的))与收票方开票信息字段二选一必填
|
|
application.put("clientBizCode",UtilMap.getString(formData,"textField_mkxpe3fj"));//收票方bizCode(客户的业务编码(云票系统内维护的))与收票方开票信息字段二选一必填
|
|
|
|
|
|
|
|
|
|
+// application.put("submitterBizCode","18857526310");//提交人工号,单据状态为审批中时必填 todo 暂时固定 周漂
|
|
|
|
|
+// application.put("applicantBizCode","18857526310");//开票申请人工号 todo 暂时固定 周漂
|
|
|
|
|
+
|
|
|
/*Map clientLegalEntityOaDto = new HashMap();//收票方开票信息(不在云票系统内维护的)与收票方bizCode(客户的业务编码)二选一必填且优先级高于收票方bizCode(客户的业务编码)(也就是当两字段都有值时,忽略客户的业务编码)
|
|
/*Map clientLegalEntityOaDto = new HashMap();//收票方开票信息(不在云票系统内维护的)与收票方bizCode(客户的业务编码)二选一必填且优先级高于收票方bizCode(客户的业务编码)(也就是当两字段都有值时,忽略客户的业务编码)
|
|
|
clientLegalEntityOaDto.put("invoiceTitle",UtilMap.getString(formData,"selectField_mkxmix7e"));//名称
|
|
clientLegalEntityOaDto.put("invoiceTitle",UtilMap.getString(formData,"selectField_mkxmix7e"));//名称
|
|
|
clientLegalEntityOaDto.put("dutyParagraph",UtilMap.getString(formData,"textField_mm2wj87l"));//税号
|
|
clientLegalEntityOaDto.put("dutyParagraph",UtilMap.getString(formData,"textField_mm2wj87l"));//税号
|
|
@@ -217,46 +250,62 @@ public class SikuServiceImpl implements SikuService {
|
|
|
public void invoiceWriteBack2(Map map) {
|
|
public void invoiceWriteBack2(Map map) {
|
|
|
//获取发票信息
|
|
//获取发票信息
|
|
|
Map calloutParams = UtilMap.getMap(map, "calloutParams");
|
|
Map calloutParams = UtilMap.getMap(map, "calloutParams");
|
|
|
|
|
+ String serviceType = UtilMap.getString(map, "serviceType");
|
|
|
Map bizData = UtilMap.getMap(calloutParams, "bizData");
|
|
Map bizData = UtilMap.getMap(calloutParams, "bizData");
|
|
|
|
|
|
|
|
- String bizCode = UtilMap.getString(bizData, "bizCode");//发票号码
|
|
|
|
|
- String invoiceNumber = UtilMap.getString(bizData, "invoiceNumber");//发票号码
|
|
|
|
|
- String pdfUrl = UtilMap.getString(bizData, "pdfUrl");//pdf文件下载地址
|
|
|
|
|
- String downloadPageUrl = UtilMap.getString(bizData, "downloadPageUrl");//发票下载页面链接
|
|
|
|
|
- List<Map> detailItems = (List<Map>) UtilMap.getList(bizData, "detailItems");
|
|
|
|
|
- List<Map> documentCorrelates = UtilMap.getList(detailItems.get(0), "documentCorrelates");
|
|
|
|
|
- String lsh = UtilMap.getString(documentCorrelates.get(0), "bizCode");//开票申请单编号
|
|
|
|
|
-
|
|
|
|
|
- //回写宜搭
|
|
|
|
|
- Map formData = new HashMap();
|
|
|
|
|
- formData.put("radioField_mkxripcc","开票成功");
|
|
|
|
|
- formData.put("textField_mkxripc6",invoiceNumber);
|
|
|
|
|
- formData.put("textField_mm3aixk0",downloadPageUrl);
|
|
|
|
|
- formData.put("textareaField_mmlzqvn0","");
|
|
|
|
|
-
|
|
|
|
|
- if (Strings.isNotBlank(pdfUrl)){
|
|
|
|
|
- String fileName = invoiceNumber + ".pdf";
|
|
|
|
|
- String downloadPath = downloadFilePath + fileName;
|
|
|
|
|
- downloadFile(pdfUrl,downloadPath);//下载pdf发票
|
|
|
|
|
-
|
|
|
|
|
- String downloadUri = downloadUrl + "/files/" + fileName + "?option=download" + fileName;
|
|
|
|
|
- String previewUri = downloadUrl + "/files/"+fileName+"?option=preview" + fileName;
|
|
|
|
|
-
|
|
|
|
|
- Map attachmentField = new HashMap();
|
|
|
|
|
- attachmentField.put("downloadUrl",downloadUri);
|
|
|
|
|
- attachmentField.put("name",fileName);
|
|
|
|
|
- attachmentField.put("previewUrl",previewUri);
|
|
|
|
|
- attachmentField.put("url",downloadUri);
|
|
|
|
|
- attachmentField.put("ext","pdf");
|
|
|
|
|
- formData.put("attachmentField_mkxripc5",Arrays.asList(attachmentField));
|
|
|
|
|
|
|
+ if ("INVOICE_VAT_INVOICED_NOTIFY_AR".equals(serviceType)){
|
|
|
|
|
+ //发票开具成功后回调
|
|
|
|
|
+ String bizCode = UtilMap.getString(bizData, "bizCode");//发票号码
|
|
|
|
|
+ String invoiceNumber = UtilMap.getString(bizData, "invoiceNumber");//发票号码
|
|
|
|
|
+ String pdfUrl = UtilMap.getString(bizData, "pdfUrl");//pdf文件下载地址
|
|
|
|
|
+ String downloadPageUrl = UtilMap.getString(bizData, "downloadPageUrl");//发票下载页面链接
|
|
|
|
|
+ List<Map> detailItems = (List<Map>) UtilMap.getList(bizData, "detailItems");
|
|
|
|
|
+ List<Map> documentCorrelates = UtilMap.getList(detailItems.get(0), "documentCorrelates");
|
|
|
|
|
+ String lsh = UtilMap.getString(documentCorrelates.get(0), "bizCode");//开票申请单编号
|
|
|
|
|
+
|
|
|
|
|
+ //回写宜搭
|
|
|
|
|
+ Map formData = new HashMap();
|
|
|
|
|
+ formData.put("radioField_mkxripcc","开票成功");
|
|
|
|
|
+ formData.put("textField_mkxripc6",invoiceNumber);
|
|
|
|
|
+ formData.put("textField_mm3aixk0",downloadPageUrl);
|
|
|
|
|
+ formData.put("textareaField_mmlzqvn0","");
|
|
|
|
|
+
|
|
|
|
|
+ if (Strings.isNotBlank(pdfUrl)){
|
|
|
|
|
+ String fileName = invoiceNumber + ".pdf";
|
|
|
|
|
+ String downloadPath = downloadFilePath + fileName;
|
|
|
|
|
+ downloadFile(pdfUrl,downloadPath);//下载pdf发票
|
|
|
|
|
+
|
|
|
|
|
+ String downloadUri = downloadUrl + "/files/" + fileName + "?option=download" + fileName;
|
|
|
|
|
+ String previewUri = downloadUrl + "/files/"+fileName+"?option=preview" + fileName;
|
|
|
|
|
+
|
|
|
|
|
+ Map attachmentField = new HashMap();
|
|
|
|
|
+ attachmentField.put("downloadUrl",downloadUri);
|
|
|
|
|
+ attachmentField.put("name",fileName);
|
|
|
|
|
+ attachmentField.put("previewUrl",previewUri);
|
|
|
|
|
+ attachmentField.put("url",downloadUri);
|
|
|
|
|
+ attachmentField.put("ext","pdf");
|
|
|
|
|
+ formData.put("attachmentField_mkxripc5",Arrays.asList(attachmentField));
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ ydClient.operateData(YDParam.builder()
|
|
|
|
|
+ .formInstanceId(bizCode)
|
|
|
|
|
+ .searchCondition(JSONObject.toJSONString(UtilMap.map("serialNumberField_mknspz75",lsh)))
|
|
|
|
|
+ .formUuid("FORM-A9A47B0365DB437F8F4C8E01B4468220K7GU")
|
|
|
|
|
+ .formDataJson(JSONObject.toJSONString(formData))
|
|
|
|
|
+ .build(), YDConf.FORM_OPERATION.upsert);
|
|
|
|
|
+
|
|
|
|
|
+ }else if ("INVOICE_APPLICATION_VAT_FAIL_NOTIFY_AR".equals(serviceType)){
|
|
|
|
|
+ //开票失败后回调
|
|
|
|
|
+
|
|
|
|
|
+ String invoiceErrorMsg = UtilMap.getString(bizData, "invoiceErrorMsg");
|
|
|
|
|
+
|
|
|
|
|
+ String bizCode = UtilMap.getString(bizData, "bizCode");
|
|
|
|
|
+
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- ydClient.operateData(YDParam.builder()
|
|
|
|
|
- .formInstanceId(bizCode)
|
|
|
|
|
- .searchCondition(JSONObject.toJSONString(UtilMap.map("serialNumberField_mknspz75",lsh)))
|
|
|
|
|
- .formUuid("FORM-A9A47B0365DB437F8F4C8E01B4468220K7GU")
|
|
|
|
|
- .formDataJson(JSONObject.toJSONString(formData))
|
|
|
|
|
- .build(), YDConf.FORM_OPERATION.upsert);
|
|
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
@@ -267,7 +316,214 @@ public class SikuServiceImpl implements SikuService {
|
|
|
.formInstanceId(formInstId)
|
|
.formInstanceId(formInstId)
|
|
|
.build(), YDConf.FORM_QUERY.retrieve_id).getFormData();
|
|
.build(), YDConf.FORM_QUERY.retrieve_id).getFormData();
|
|
|
|
|
|
|
|
- Map body = new HashMap();
|
|
|
|
|
|
|
+ String type = UtilMap.getString(formData, "radioField_mkkmij3b");//需求单类型
|
|
|
|
|
+ String formSubTypeBizCode = "FT208629766551519240";//项目支付单
|
|
|
|
|
+
|
|
|
|
|
+ Double amt = UtilMap.getDouble(formData, "numberField_mkkmij6i");
|
|
|
|
|
+
|
|
|
|
|
+ String empId = "";
|
|
|
|
|
+ String deptBusinessCode = "";
|
|
|
|
|
+
|
|
|
|
|
+ String ydfqr = UtilMap.getString(formData, "textField_mmwvodde");//宜搭发起人工号
|
|
|
|
|
+
|
|
|
|
|
+ if (amt >= 5000){
|
|
|
|
|
+ //支付金额>=5000元,每刻发起人为宜搭采购单据发起人;每刻中的【费用承担部门】实际为采购单发起人所在部门,非每刻单据发起人部门
|
|
|
|
|
+ Map employeeDetails = MkBxUtil.employeeDetails(UtilMap.map("employeeIds", Arrays.asList(ydfqr)));
|
|
|
|
|
+ if (Objects.nonNull(employeeDetails)){
|
|
|
|
|
+ List<Map> departments = UtilMap.getList(employeeDetails, "departments");
|
|
|
|
|
+ deptBusinessCode = UtilMap.getString(departments.get(0), "businessCode");
|
|
|
|
|
+
|
|
|
|
|
+ empId = ydfqr;
|
|
|
|
|
+ }else {
|
|
|
|
|
+ empId = "002";//默认沃洲洋
|
|
|
|
|
+ deptBusinessCode = "DI203800035494740082";//默认DI203800035494740082
|
|
|
|
|
+ }
|
|
|
|
|
+ }else {
|
|
|
|
|
+ //支付金额<5000元,每刻发起人为宜搭采购单据中的中台采购;每刻中的【费用承担部门】实际为采购单发起人所在部门,非每刻单据发起人部门
|
|
|
|
|
+ Map employeeDetails = MkBxUtil.employeeDetails(UtilMap.map("employeeIds", Arrays.asList(ydfqr)));
|
|
|
|
|
+ if (Objects.nonNull(employeeDetails)){
|
|
|
|
|
+ List<Map> departments = UtilMap.getList(employeeDetails, "departments");
|
|
|
|
|
+ deptBusinessCode = UtilMap.getString(departments.get(0), "businessCode");
|
|
|
|
|
+ }else {
|
|
|
|
|
+ deptBusinessCode = "DI203800035494740082";//默认DI203800035494740082
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ String ztcggh = UtilMap.getString(formData, "textField_mmwvfb97");//中台采购工号
|
|
|
|
|
+ Map employeeDetails2 = MkBxUtil.employeeDetails(UtilMap.map("employeeIds", Arrays.asList(ztcggh)));
|
|
|
|
|
+
|
|
|
|
|
+ if (Objects.nonNull(employeeDetails2)){
|
|
|
|
|
+ empId = ztcggh;
|
|
|
|
|
+ }else {
|
|
|
|
|
+ empId = "002";//默认沃洲洋
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ String submittedUserEmployeeId = empId;//提单人工号
|
|
|
|
|
+ String legalEntityBizCode = UtilMap.getString(formData, "textField_mmd6hio7");//公司抬头编码
|
|
|
|
|
+ String coverUserEmployeeId = empId;//承担人工号
|
|
|
|
|
+ String coverDepartmentBizCode = deptBusinessCode;//承担部门编码
|
|
|
|
|
+
|
|
|
|
|
+ String xqbh = UtilMap.getString(formData, "serialNumberField_mkkmij3o");//需求编号
|
|
|
|
|
+ long ldjssj = UtilMap.getLong(formData, "dateField_mkdf8q8q");//落地结束时间
|
|
|
|
|
+ String isFree = "FREE需求".equals(type) ? "是" : "否";//是否free
|
|
|
|
|
+ String isDdf = "是".equals(UtilMap.getString(formData, "radioField_mkf2quln")) ? "1" : "2";//是否代垫付
|
|
|
|
|
+ String xmsssyb = UtilMap.getString(formData, "selectField_mkdedkv7");//项目所属事业部
|
|
|
|
|
+ String projectCode = UtilMap.getString(formData, "textField_mmoh6nvx");//项目编码
|
|
|
|
|
+
|
|
|
|
|
+ //针对多供应商分期付款拆分多条每刻项目支付单
|
|
|
|
|
+ if ("常规需求".equals(type)){
|
|
|
|
|
+ List<Map> detailList = UtilMap.getList(formData, "tableField_mkkmij56");//常规-采购明细
|
|
|
|
|
+
|
|
|
|
|
+ int index = 0;
|
|
|
|
|
+ for (Map detail : detailList) {
|
|
|
|
|
+ index++;
|
|
|
|
|
+ String uuid = UtilMap.getString(detail, "textField_mmvhqm0q");//子表uuid
|
|
|
|
|
+ Map body = new HashMap();
|
|
|
|
|
+ body.put("formCode",xqbh + "-" + index);//有值时会使用该值作为单据号
|
|
|
|
|
+ body.put("formSubTypeBizCode",formSubTypeBizCode);//表单类型的业务编号
|
|
|
|
|
+ body.put("submittedUserEmployeeId",submittedUserEmployeeId);//提单人工号
|
|
|
|
|
+ body.put("reimburseName",UtilMap.getString(detail,"textareaField_mkkmij5i"));//报销事由
|
|
|
|
|
+ body.put("legalEntityBizCode",legalEntityBizCode);//公司抬头编码
|
|
|
|
|
+ body.put("coverUserEmployeeId",coverUserEmployeeId);//承担人工号
|
|
|
|
|
+ body.put("coverDepartmentBizCode",coverDepartmentBizCode);//承担部门编码
|
|
|
|
|
+ body.put("tradingPartnerBizCode",UtilMap.getString(detail,"textField_mmbmohrb"));//往来单位编码
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ Map customObject = new HashMap();
|
|
|
|
|
+ customObject.put("CF4",new HashMap<String,Long>(){{put("currentTime",ldjssj);}});//落地结束时间
|
|
|
|
|
+ customObject.put("CF3",new HashMap<String,Long>(){{put("currentTime",UtilMap.getLong(detail,"dateField_mmvhqm0u"));}});//期望支付日期
|
|
|
|
|
+ customObject.put("CF6",isFree);////free 是;否
|
|
|
|
|
+ customObject.put("CF5",isDdf);//代垫付 是:1 ; 否:2
|
|
|
|
|
+ customObject.put("CF2",xmsssyb);//项目所属事业部
|
|
|
|
|
+ customObject.put("CF1",projectCode);//项目
|
|
|
|
|
+ customObject.put("CF7",UtilMap.getString(detail,"numberField_mmwt2wcn"));//逾期天数
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ body.put("customObject",customObject);
|
|
|
|
|
+
|
|
|
|
|
+ //报销单费用导入
|
|
|
|
|
+ Map expenseListItem = new HashMap();
|
|
|
|
|
+
|
|
|
|
|
+ Map consumeAmount = new HashMap();
|
|
|
|
|
+ consumeAmount.put("amount",String.format("%.2f", UtilMap.getDouble(detail,"numberField_mkkmij5e")));//结算金额
|
|
|
|
|
+ consumeAmount.put("currency","CNY");
|
|
|
|
|
+
|
|
|
|
|
+ expenseListItem.put("consumeAmount",consumeAmount);
|
|
|
|
|
+ expenseListItem.put("corpExpense",true);//是否对公费用,需要填写true
|
|
|
|
|
+ String gysej = UtilMap.getString(detail, "selectField_mkkkw28y");//供应商二级
|
|
|
|
|
+ expenseListItem.put("expenseTypeBizCode",MkBxUtil.expenseTypeSearch(UtilMap.map("keyword",gysej)));//费用类型业务编码
|
|
|
|
|
+ expenseListItem.put("corpType","NO_RECEIPT");//业务场景:ALL_RECEIPTS(全部到票) NO_RECEIPT(预付未到票) RECEIPT_DEDUCTION(到票核销) RECEIPT_PAY_SOME(到票部分支付或不支付) PAY_BEFORE_RECEIPT(支付前期已到的发票)
|
|
|
|
|
+ expenseListItem.put("nonReceiptAmount",new HashMap<>(consumeAmount));//未到票金额(预付未到票场景必填)
|
|
|
|
|
+ expenseListItem.put("forecastReceiptDate",System.currentTimeMillis());//预计到票时间(预付未到票场景必填)
|
|
|
|
|
+ expenseListItem.put("tradingPartnerBizCode",UtilMap.getString(detail,"textField_mmbmohrb"));//往来单位业务编码
|
|
|
|
|
+
|
|
|
|
|
+ Map consumeLocation = new HashMap();
|
|
|
|
|
+ consumeLocation.put("cityPair",null);
|
|
|
|
|
+ consumeLocation.put("location","110001");//todo 暂时写死 110001 北京
|
|
|
|
|
+ expenseListItem.put("consumeLocation",consumeLocation);
|
|
|
|
|
+
|
|
|
|
|
+ expenseListItem.put("corpExpenseResponsibleEmpIds",Arrays.asList("002"));//责任人/业务经办人(预付未到票/到票部分支付或不支付 两种场景必填) todo 暂时写死 002 wzy
|
|
|
|
|
+
|
|
|
|
|
+ Map body2 = new HashMap();
|
|
|
|
|
+ body2.put("employeeId","002");//需要导入的对应员工的工号
|
|
|
|
|
+ body2.put("expenseList",Arrays.asList(expenseListItem));
|
|
|
|
|
+
|
|
|
|
|
+ List<String> expenseCodes = MkBxUtil.receiveExpense(body2);
|
|
|
|
|
+
|
|
|
|
|
+ body.put("expenseCodes",expenseCodes);//费用类型业务编码
|
|
|
|
|
+
|
|
|
|
|
+ //收款账户
|
|
|
|
|
+ Map payeeAccount = new HashMap();
|
|
|
|
|
+ payeeAccount.put("bankAcctName",UtilMap.getString(detail,"textField_mkkmij6z"));//账户名
|
|
|
|
|
+ payeeAccount.put("bankAcctNumber",UtilMap.getString(detail,"textField_mkkmij6y"));//银行账户
|
|
|
|
|
+ payeeAccount.put("paymentType","BANK");//账户类型;ALIPAY-支付宝,BANK-银行账户,CASH-现金
|
|
|
|
|
+ payeeAccount.put("accountType","CORP");//收款账户类型:个人(员工)-PERSONAL,公司(往来单位)-CORP
|
|
|
|
|
+ body.put("payeeAccount",payeeAccount);
|
|
|
|
|
+
|
|
|
|
|
+ body.put("stagingFlag",true);//暂存标识,默认为false表示不暂存
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ Map result = MkBxUtil.receiveReimburse(body);
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+ }else {
|
|
|
|
|
+ List<Map> detailList = UtilMap.getList(formData, "tableField_mkkmij61");//free-采购明细
|
|
|
|
|
+
|
|
|
|
|
+ int index = 0;
|
|
|
|
|
+ for (Map detail : detailList) {
|
|
|
|
|
+ index ++;
|
|
|
|
|
+ String uuid = UtilMap.getString(detail, "textField_mmvhqm0s");//子表uuid
|
|
|
|
|
+ Map body = new HashMap();
|
|
|
|
|
+// body.put("formCode",xqbh + "-" + uuid);//有值时会使用该值作为单据号
|
|
|
|
|
+ body.put("formCode",xqbh + "-" +index);//有值时会使用该值作为单据号
|
|
|
|
|
+ body.put("formSubTypeBizCode",formSubTypeBizCode);//表单类型的业务编号
|
|
|
|
|
+ body.put("submittedUserEmployeeId",submittedUserEmployeeId);//提单人工号
|
|
|
|
|
+ body.put("reimburseName","FREE-" + UtilMap.getString(detail,"selectField_mkkixdd7"));//报销事由
|
|
|
|
|
+ body.put("legalEntityBizCode",legalEntityBizCode);//公司抬头编码
|
|
|
|
|
+ body.put("coverUserEmployeeId",coverUserEmployeeId);//承担人工号
|
|
|
|
|
+ body.put("coverDepartmentBizCode",coverDepartmentBizCode);//承担部门编码
|
|
|
|
|
+ body.put("tradingPartnerBizCode",UtilMap.getString(detail,"textField_mmekbfa2"));//往来单位编码
|
|
|
|
|
+
|
|
|
|
|
+ Map customObject = new HashMap();
|
|
|
|
|
+ customObject.put("CF4",new HashMap<String,Long>(){{put("currentTime",ldjssj);}});//落地结束时间
|
|
|
|
|
+ customObject.put("CF3",new HashMap<String,Long>(){{put("currentTime",UtilMap.getLong(detail,"dateField_mkkkw298"));}});//期望支付日期
|
|
|
|
|
+ customObject.put("CF6",isFree);//free 是;否
|
|
|
|
|
+ customObject.put("CF5",isDdf);//代垫付 是:1 ; 否:2
|
|
|
|
|
+ customObject.put("CF2",xmsssyb);//项目所属事业部
|
|
|
|
|
+ customObject.put("CF1",projectCode);//项目
|
|
|
|
|
+ customObject.put("CF7",UtilMap.getString(detail,"numberField_mmwswtkx"));//逾期天数
|
|
|
|
|
+
|
|
|
|
|
+ body.put("customObject",customObject);
|
|
|
|
|
+
|
|
|
|
|
+ //报销单费用导入
|
|
|
|
|
+ Map expenseListItem = new HashMap();
|
|
|
|
|
+
|
|
|
|
|
+ Map consumeAmount = new HashMap();
|
|
|
|
|
+ consumeAmount.put("amount",String.format("%.2f", UtilMap.getDouble(detail,"numberField_mkkmij6p")));//结算金额
|
|
|
|
|
+ consumeAmount.put("currency","CNY");
|
|
|
|
|
+
|
|
|
|
|
+ expenseListItem.put("consumeAmount",consumeAmount);
|
|
|
|
|
+ expenseListItem.put("corpExpense",true);//是否对公费用,需要填写true
|
|
|
|
|
+ String gysej = UtilMap.getString(detail, "selectField_mmwuzaql");//供应商二级
|
|
|
|
|
+ expenseListItem.put("expenseTypeBizCode",MkBxUtil.expenseTypeSearch(UtilMap.map("keyword",gysej)));//费用类型业务编码
|
|
|
|
|
+ expenseListItem.put("corpType","NO_RECEIPT");//业务场景:ALL_RECEIPTS(全部到票) NO_RECEIPT(预付未到票) RECEIPT_DEDUCTION(到票核销) RECEIPT_PAY_SOME(到票部分支付或不支付) PAY_BEFORE_RECEIPT(支付前期已到的发票)
|
|
|
|
|
+ expenseListItem.put("nonReceiptAmount",new HashMap<>(consumeAmount));//未到票金额(预付未到票场景必填)
|
|
|
|
|
+ expenseListItem.put("forecastReceiptDate",System.currentTimeMillis());//预计到票时间(预付未到票场景必填)
|
|
|
|
|
+ expenseListItem.put("tradingPartnerBizCode",UtilMap.getString(detail,"textField_mmekbfa2"));//往来单位业务编码
|
|
|
|
|
+
|
|
|
|
|
+ Map consumeLocation = new HashMap();
|
|
|
|
|
+ consumeLocation.put("cityPair",null);
|
|
|
|
|
+ consumeLocation.put("location","110001");//todo 暂时写死 110001 北京
|
|
|
|
|
+ expenseListItem.put("consumeLocation",consumeLocation);
|
|
|
|
|
+
|
|
|
|
|
+ expenseListItem.put("corpExpenseResponsibleEmpIds",Arrays.asList("002"));//责任人/业务经办人(预付未到票/到票部分支付或不支付 两种场景必填) todo 暂时写死 002 wzy
|
|
|
|
|
+
|
|
|
|
|
+ Map body2 = new HashMap();
|
|
|
|
|
+ body2.put("employeeId","002");//需要导入的对应员工的工号
|
|
|
|
|
+ body2.put("expenseList",Arrays.asList(expenseListItem));
|
|
|
|
|
+
|
|
|
|
|
+ List<String> expenseCodes = MkBxUtil.receiveExpense(body2);
|
|
|
|
|
+
|
|
|
|
|
+ body.put("expenseCodes",expenseCodes);//费用类型业务编码
|
|
|
|
|
+
|
|
|
|
|
+ //收款账户
|
|
|
|
|
+ Map payeeAccount = new HashMap();
|
|
|
|
|
+ payeeAccount.put("bankAcctName",UtilMap.getString(detail,"textField_mketkvxa"));//账户名
|
|
|
|
|
+ payeeAccount.put("bankAcctNumber",UtilMap.getString(detail,"textField_mketkvxc"));//银行账户
|
|
|
|
|
+ payeeAccount.put("paymentType","BANK");//账户类型;ALIPAY-支付宝,BANK-银行账户,CASH-现金
|
|
|
|
|
+ payeeAccount.put("accountType","CORP");//收款账户类型:个人(员工)-PERSONAL,公司(往来单位)-CORP
|
|
|
|
|
+ body.put("payeeAccount",payeeAccount);
|
|
|
|
|
+
|
|
|
|
|
+ body.put("stagingFlag",true);//暂存标识,默认为false表示不暂存
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ Map result = MkBxUtil.receiveReimburse(body);
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /*Map body = new HashMap();
|
|
|
body.put("formCode",UtilMap.getString(formData,"serialNumberField_mkkmij3o"));//有值时会使用该值作为单据号
|
|
body.put("formCode",UtilMap.getString(formData,"serialNumberField_mkkmij3o"));//有值时会使用该值作为单据号
|
|
|
body.put("formSubTypeBizCode","FT208629766551519240");//表单类型的业务编号 todo 暂时写死 FT208629766551519240 宜搭支付单
|
|
body.put("formSubTypeBizCode","FT208629766551519240");//表单类型的业务编号 todo 暂时写死 FT208629766551519240 宜搭支付单
|
|
|
body.put("submittedUserEmployeeId","002");//提单人工号 todo 暂时写死 002 wzy
|
|
body.put("submittedUserEmployeeId","002");//提单人工号 todo 暂时写死 002 wzy
|
|
@@ -282,12 +538,10 @@ public class SikuServiceImpl implements SikuService {
|
|
|
customObject.put("CF6",UtilMap.getString(formData,"radioField_mkf2quln"));////free 是;否
|
|
customObject.put("CF6",UtilMap.getString(formData,"radioField_mkf2quln"));////free 是;否
|
|
|
customObject.put("CF5","是".equals(UtilMap.getString(formData,"radioField_mkf2quln")) ? "1" : "2");//代垫付 是:1 ; 否:2
|
|
customObject.put("CF5","是".equals(UtilMap.getString(formData,"radioField_mkf2quln")) ? "1" : "2");//代垫付 是:1 ; 否:2
|
|
|
customObject.put("CF2",UtilMap.getString(formData,"selectField_mkdedkv7"));//项目所属事业部
|
|
customObject.put("CF2",UtilMap.getString(formData,"selectField_mkdedkv7"));//项目所属事业部
|
|
|
- customObject.put("CF1",UtilMap.getString(formData,"textField_mkkmij50"));//项目
|
|
|
|
|
|
|
+ customObject.put("CF1",UtilMap.getString(formData,"textField_mmoh6nvx"));//项目
|
|
|
|
|
|
|
|
body.put("customObject",customObject);
|
|
body.put("customObject",customObject);
|
|
|
|
|
|
|
|
- String type = UtilMap.getString(formData, "radioField_mkkmij3b");//需求单类型
|
|
|
|
|
-
|
|
|
|
|
List<String> expenseCodes = new ArrayList<>();
|
|
List<String> expenseCodes = new ArrayList<>();
|
|
|
List<Map> collectionSchedule = new ArrayList<>();
|
|
List<Map> collectionSchedule = new ArrayList<>();
|
|
|
|
|
|
|
@@ -392,7 +646,7 @@ public class SikuServiceImpl implements SikuService {
|
|
|
|
|
|
|
|
body.put("stagingFlag",false);////暂存标识,默认为false表示不暂存
|
|
body.put("stagingFlag",false);////暂存标识,默认为false表示不暂存
|
|
|
|
|
|
|
|
- Map result = MkBxUtil.receiveReimburse(body);
|
|
|
|
|
|
|
+ Map result = MkBxUtil.receiveReimburse(body);*/
|
|
|
|
|
|
|
|
return McR.success();
|
|
return McR.success();
|
|
|
}
|
|
}
|
|
@@ -490,6 +744,19 @@ public class SikuServiceImpl implements SikuService {
|
|
|
public void invoiceWriteBack3(Map map) {
|
|
public void invoiceWriteBack3(Map map) {
|
|
|
String formCode = UtilMap.getString(map, "formCode");
|
|
String formCode = UtilMap.getString(map, "formCode");
|
|
|
|
|
|
|
|
|
|
+ String operation = UtilMap.getString(map, "operation");
|
|
|
|
|
+
|
|
|
|
|
+ if ("FORM_COMPLETE".equals(operation)){
|
|
|
|
|
+ //完成
|
|
|
|
|
+ }else if ("FORM_REJECT".equals(operation)){
|
|
|
|
|
+ //驳回
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ String[] split = formCode.split("-");
|
|
|
|
|
+
|
|
|
|
|
+ String bh = split[0];//采购需求编号/直接采购单编号
|
|
|
|
|
+ String uuid = split[1];//子表uuid
|
|
|
|
|
+
|
|
|
Map formData = UtilMap.getMap(map, "formData");
|
|
Map formData = UtilMap.getMap(map, "formData");
|
|
|
|
|
|
|
|
Map baseAmount = UtilMap.getMap(formData, "baseAmount");
|
|
Map baseAmount = UtilMap.getMap(formData, "baseAmount");
|
|
@@ -504,20 +771,35 @@ public class SikuServiceImpl implements SikuService {
|
|
|
//采购需求&结算
|
|
//采购需求&结算
|
|
|
List<Map> data = (List<Map>) ydClient.queryData(YDParam.builder()
|
|
List<Map> data = (List<Map>) ydClient.queryData(YDParam.builder()
|
|
|
.formUuid("FORM-C8C1FBBA781C4C5EBAC487C07BC5A86AD2HO")
|
|
.formUuid("FORM-C8C1FBBA781C4C5EBAC487C07BC5A86AD2HO")
|
|
|
- .searchCondition(JSONObject.toJSONString(UtilMap.map("serialNumberField_mkkmij3o", formCode)))
|
|
|
|
|
|
|
+ .searchCondition(JSONObject.toJSONString(UtilMap.map("serialNumberField_mkkmij3o", bh)))
|
|
|
.build(), YDConf.FORM_QUERY.retrieve_list).getData();
|
|
.build(), YDConf.FORM_QUERY.retrieve_list).getData();
|
|
|
|
|
|
|
|
String formInstanceId = UtilMap.getString(data.get(0), "formInstanceId");
|
|
String formInstanceId = UtilMap.getString(data.get(0), "formInstanceId");
|
|
|
|
|
|
|
|
|
|
+ Map ydFormData = UtilMap.getMap(data.get(0), "formData");
|
|
|
|
|
+
|
|
|
|
|
+ List<Map> detailList = UtilMap.getList(ydFormData, "tableField_mkkmij56");
|
|
|
|
|
+
|
|
|
|
|
+ for (Map detail : detailList) {
|
|
|
|
|
+ if (uuid.equals(UtilMap.getString(detail, "textField_mmvhqm0q"))){
|
|
|
|
|
+ detail.put("selectField_mmvhqm0p","已付款");
|
|
|
|
|
+ break;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ Double yzf = UtilMap.getDouble(ydFormData, "numberField_mkf2qumf");//已支付
|
|
|
|
|
+
|
|
|
|
|
+ ydFormData.put("numberField_mkf2qumf",yzf + amt);
|
|
|
|
|
+
|
|
|
ydClient.operateData(YDParam.builder()
|
|
ydClient.operateData(YDParam.builder()
|
|
|
.formInstanceId(formInstanceId)
|
|
.formInstanceId(formInstanceId)
|
|
|
- .updateFormDataJson(JSONObject.toJSONString(UtilMap.map("numberField_mkf2qumf",amt)))
|
|
|
|
|
|
|
+ .updateFormDataJson(JSONObject.toJSONString(ydFormData ))
|
|
|
.build(), YDConf.FORM_OPERATION.update);
|
|
.build(), YDConf.FORM_OPERATION.update);
|
|
|
}else {
|
|
}else {
|
|
|
//直接采购结算单
|
|
//直接采购结算单
|
|
|
List<Map> data = (List<Map>) ydClient.queryData(YDParam.builder()
|
|
List<Map> data = (List<Map>) ydClient.queryData(YDParam.builder()
|
|
|
.formUuid("FORM-1AFEDDA034C74F0DB18FA60C941CB56EHUUG")
|
|
.formUuid("FORM-1AFEDDA034C74F0DB18FA60C941CB56EHUUG")
|
|
|
- .searchCondition(JSONObject.toJSONString(UtilMap.map("serialNumberField_mkkmij3o", formCode)))
|
|
|
|
|
|
|
+ .searchCondition(JSONObject.toJSONString(UtilMap.map("serialNumberField_mkkmij3o", bh)))
|
|
|
.build(), YDConf.FORM_QUERY.retrieve_list).getData();
|
|
.build(), YDConf.FORM_QUERY.retrieve_list).getData();
|
|
|
|
|
|
|
|
String formInstanceId = UtilMap.getString(data.get(0), "formInstanceId");
|
|
String formInstanceId = UtilMap.getString(data.get(0), "formInstanceId");
|
|
@@ -538,132 +820,214 @@ public class SikuServiceImpl implements SikuService {
|
|
|
.formInstanceId(formInstId)
|
|
.formInstanceId(formInstId)
|
|
|
.build(), YDConf.FORM_QUERY.retrieve_id).getFormData();
|
|
.build(), YDConf.FORM_QUERY.retrieve_id).getFormData();
|
|
|
|
|
|
|
|
- Map body = new HashMap();
|
|
|
|
|
- body.put("formCode",UtilMap.getString(formData,"serialNumberField_mkkmij3o"));//有值时会使用该值作为单据号
|
|
|
|
|
- body.put("formSubTypeBizCode","FT208629766551519240");//表单类型的业务编号 todo 暂时写死 FT208629766551519240 宜搭支付单
|
|
|
|
|
- body.put("submittedUserEmployeeId","002");//提单人工号 todo 暂时写死 002 wzy
|
|
|
|
|
- body.put("reimburseName",UtilMap.getString(formData,"textareaField_mmbmohr9"));//报销事由
|
|
|
|
|
- body.put("legalEntityBizCode",UtilMap.getString(formData,"textField_mmd6hio7"));//公司抬头编码
|
|
|
|
|
- body.put("coverUserEmployeeId","002");//承担人工号 todo 暂时写死 002 wzy
|
|
|
|
|
- body.put("coverDepartmentBizCode","DI203800035494740082");//承担部门编码 todo 暂时写死 DI203800035494740082
|
|
|
|
|
|
|
+ String type = UtilMap.getString(formData, "radioField_mkkmij3b");//需求单类型
|
|
|
|
|
+ String formSubTypeBizCode = "FT208629766551519240";//项目支付单
|
|
|
|
|
|
|
|
- Map customObject = new HashMap();
|
|
|
|
|
- customObject.put("CF4",new HashMap<String,Long>(){{put("currentTime",UtilMap.getLong(formData,"dateField_mkdf8q8q"));}});//落地结束时间
|
|
|
|
|
- customObject.put("CF3",new HashMap<String,Long>(){{put("currentTime",UtilMap.getLong(formData,"dateField_mkkkw298"));}});//预计支付日期
|
|
|
|
|
- customObject.put("CF6",UtilMap.getString(formData,"radioField_mkf2quln"));////free 是;否
|
|
|
|
|
- customObject.put("CF5","是".equals(UtilMap.getString(formData,"radioField_mkf2quln")) ? "1" : "2");//代垫付 是:1 ; 否:2
|
|
|
|
|
- customObject.put("CF2",UtilMap.getString(formData,"selectField_mkdedkv7"));//项目所属事业部
|
|
|
|
|
- customObject.put("CF1",UtilMap.getString(formData,"textField_mkkmij50"));//项目
|
|
|
|
|
|
|
+ Double amt = UtilMap.getDouble(formData, "numberField_mkkmij6i");
|
|
|
|
|
|
|
|
- body.put("customObject",customObject);
|
|
|
|
|
|
|
+ String empId = "";
|
|
|
|
|
+ String deptBusinessCode = "";
|
|
|
|
|
|
|
|
- String type = UtilMap.getString(formData, "radioField_mkkmij3b");//需求单类型
|
|
|
|
|
|
|
+ String ydfqr = UtilMap.getString(formData, "textField_mmwvodde");//宜搭发起人工号
|
|
|
|
|
|
|
|
- List<String> expenseCodes = new ArrayList<>();
|
|
|
|
|
- List<Map> collectionSchedule = new ArrayList<>();
|
|
|
|
|
|
|
+ if (amt >= 5000){
|
|
|
|
|
+ //支付金额>=5000元,每刻发起人为宜搭采购单据发起人;每刻中的【费用承担部门】实际为采购单发起人所在部门,非每刻单据发起人部门
|
|
|
|
|
+ Map employeeDetails = MkBxUtil.employeeDetails(UtilMap.map("employeeIds", Arrays.asList(ydfqr)));
|
|
|
|
|
+ if (Objects.nonNull(employeeDetails)){
|
|
|
|
|
+ List<Map> departments = UtilMap.getList(employeeDetails, "departments");
|
|
|
|
|
+ deptBusinessCode = UtilMap.getString(departments.get(0), "businessCode");
|
|
|
|
|
|
|
|
- List<Map> expenseList = new ArrayList<>();
|
|
|
|
|
|
|
+ empId = ydfqr;
|
|
|
|
|
+ }else {
|
|
|
|
|
+ empId = "002";//默认沃洲洋
|
|
|
|
|
+ deptBusinessCode = "DI203800035494740082";//默认DI203800035494740082
|
|
|
|
|
+ }
|
|
|
|
|
+ }else {
|
|
|
|
|
+ //支付金额<5000元,每刻发起人为宜搭采购单据中的中台采购;每刻中的【费用承担部门】实际为采购单发起人所在部门,非每刻单据发起人部门
|
|
|
|
|
+ Map employeeDetails = MkBxUtil.employeeDetails(UtilMap.map("employeeIds", Arrays.asList(ydfqr)));
|
|
|
|
|
+ if (Objects.nonNull(employeeDetails)){
|
|
|
|
|
+ List<Map> departments = UtilMap.getList(employeeDetails, "departments");
|
|
|
|
|
+ deptBusinessCode = UtilMap.getString(departments.get(0), "businessCode");
|
|
|
|
|
+ }else {
|
|
|
|
|
+ deptBusinessCode = "DI203800035494740082";//默认DI203800035494740082
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
|
|
+ String ztcggh = UtilMap.getString(formData, "textField_mmwvfb97");//中台采购工号
|
|
|
|
|
+ Map employeeDetails2 = MkBxUtil.employeeDetails(UtilMap.map("employeeIds", Arrays.asList(ztcggh)));
|
|
|
|
|
+
|
|
|
|
|
+ if (Objects.nonNull(employeeDetails2)){
|
|
|
|
|
+ empId = ztcggh;
|
|
|
|
|
+ }else {
|
|
|
|
|
+ empId = "002";//默认沃洲洋
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ String submittedUserEmployeeId = empId;//提单人工号
|
|
|
|
|
+ String legalEntityBizCode = UtilMap.getString(formData, "textField_mmd6hio7");//公司抬头编码
|
|
|
|
|
+ String coverUserEmployeeId = empId;//承担人工号
|
|
|
|
|
+ String coverDepartmentBizCode = deptBusinessCode;//承担部门编码
|
|
|
|
|
+
|
|
|
|
|
+ String xqbh = UtilMap.getString(formData, "serialNumberField_mkkmij3o");//需求编号
|
|
|
|
|
+ long ldjssj = UtilMap.getLong(formData, "dateField_mkdf8q8q");//落地结束时间
|
|
|
|
|
+ String isFree = "FREE采购".equals(UtilMap.getString(formData, "radioField_mkf2quln")) ? "是" : "否";//是否free
|
|
|
|
|
+ String isDdf = "是".equals(UtilMap.getString(formData, "radioField_mkf2qulo")) ? "1" : "2";//是否代垫付
|
|
|
|
|
+ String xmsssyb = UtilMap.getString(formData, "selectField_mkdedkv7");//项目所属事业部
|
|
|
|
|
+ String projectCode = UtilMap.getString(formData, "textField_mmoh6nvx");//项目编码
|
|
|
|
|
+
|
|
|
|
|
+ //针对多供应商分期付款拆分多条每刻项目支付单
|
|
|
if ("常规采购".equals(type)){
|
|
if ("常规采购".equals(type)){
|
|
|
List<Map> detailList = UtilMap.getList(formData, "tableField_mkkmij56");//常规-采购明细
|
|
List<Map> detailList = UtilMap.getList(formData, "tableField_mkkmij56");//常规-采购明细
|
|
|
-
|
|
|
|
|
- for (Map result : detailList) {
|
|
|
|
|
- Map item = new HashMap();
|
|
|
|
|
|
|
+ int index = 0;
|
|
|
|
|
+ for (Map detail : detailList) {
|
|
|
|
|
+ index++;
|
|
|
|
|
+ String uuid = UtilMap.getString(detail, "textField_mmvhqm0q");//子表uuid
|
|
|
|
|
+ Map body = new HashMap();
|
|
|
|
|
+ body.put("formCode",xqbh + "-" + index);//有值时会使用该值作为单据号
|
|
|
|
|
+ body.put("formSubTypeBizCode",formSubTypeBizCode);//表单类型的业务编号
|
|
|
|
|
+ body.put("submittedUserEmployeeId",submittedUserEmployeeId);//提单人工号
|
|
|
|
|
+ body.put("reimburseName",UtilMap.getString(detail,"textareaField_mkkmij5i"));//报销事由
|
|
|
|
|
+ body.put("legalEntityBizCode",legalEntityBizCode);//公司抬头编码
|
|
|
|
|
+ body.put("coverUserEmployeeId",coverUserEmployeeId);//承担人工号
|
|
|
|
|
+ body.put("coverDepartmentBizCode",coverDepartmentBizCode);//承担部门编码
|
|
|
|
|
+ body.put("tradingPartnerBizCode",UtilMap.getString(detail,"textField_mmbmohrb"));//往来单位编码
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ Map customObject = new HashMap();
|
|
|
|
|
+ customObject.put("CF4",new HashMap<String,Long>(){{put("currentTime",ldjssj);}});//落地结束时间
|
|
|
|
|
+ customObject.put("CF3",new HashMap<String,Long>(){{put("currentTime",UtilMap.getLong(detail,"dateField_mkkkw298"));}});//期望支付日期
|
|
|
|
|
+ customObject.put("CF6",isFree);//free 是;否
|
|
|
|
|
+ customObject.put("CF5",isDdf);//代垫付 是:1 ; 否:2
|
|
|
|
|
+ customObject.put("CF2",xmsssyb);//项目所属事业部
|
|
|
|
|
+ customObject.put("CF1",projectCode);//项目
|
|
|
|
|
+ customObject.put("CF7",UtilMap.getString(detail,"numberField_mmwswtkv"));//逾期天数
|
|
|
|
|
+
|
|
|
|
|
+ body.put("customObject",customObject);
|
|
|
|
|
+
|
|
|
|
|
+ //报销单费用导入
|
|
|
|
|
+ Map expenseListItem = new HashMap();
|
|
|
|
|
|
|
|
Map consumeAmount = new HashMap();
|
|
Map consumeAmount = new HashMap();
|
|
|
- consumeAmount.put("amount",String.format("%.2f", UtilMap.getDouble(result,"numberField_mkkmij5e")));//结算金额
|
|
|
|
|
|
|
+ consumeAmount.put("amount",String.format("%.2f", UtilMap.getDouble(detail,"numberField_mkkmij5e")));//结算金额
|
|
|
consumeAmount.put("currency","CNY");
|
|
consumeAmount.put("currency","CNY");
|
|
|
|
|
|
|
|
- item.put("consumeAmount",consumeAmount);
|
|
|
|
|
- item.put("corpExpense",true);//是否对公费用,需要填写true
|
|
|
|
|
- item.put("expenseTypeBizCode","200140");//费用类型业务编码 todo 暂时写死 200140 其他费用
|
|
|
|
|
- item.put("corpType","NO_RECEIPT");//业务场景:ALL_RECEIPTS(全部到票) NO_RECEIPT(预付未到票) RECEIPT_DEDUCTION(到票核销) RECEIPT_PAY_SOME(到票部分支付或不支付) PAY_BEFORE_RECEIPT(支付前期已到的发票)
|
|
|
|
|
- item.put("nonReceiptAmount",new HashMap<>(consumeAmount));//未到票金额(预付未到票场景必填)
|
|
|
|
|
- item.put("forecastReceiptDate",System.currentTimeMillis());//预计到票时间(预付未到票场景必填)
|
|
|
|
|
- item.put("tradingPartnerBizCode",UtilMap.getString(result,"textField_mmbmohrb"));//往来单位业务编码
|
|
|
|
|
|
|
+ expenseListItem.put("consumeAmount",consumeAmount);
|
|
|
|
|
+ expenseListItem.put("corpExpense",true);//是否对公费用,需要填写true
|
|
|
|
|
+ String gysej = UtilMap.getString(detail, "selectField_mkkkw28y");//供应商二级
|
|
|
|
|
+ expenseListItem.put("expenseTypeBizCode",MkBxUtil.expenseTypeSearch(UtilMap.map("keyword",gysej)));//费用类型业务编码
|
|
|
|
|
+ expenseListItem.put("corpType","NO_RECEIPT");//业务场景:ALL_RECEIPTS(全部到票) NO_RECEIPT(预付未到票) RECEIPT_DEDUCTION(到票核销) RECEIPT_PAY_SOME(到票部分支付或不支付) PAY_BEFORE_RECEIPT(支付前期已到的发票)
|
|
|
|
|
+ expenseListItem.put("nonReceiptAmount",new HashMap<>(consumeAmount));//未到票金额(预付未到票场景必填)
|
|
|
|
|
+ expenseListItem.put("forecastReceiptDate",System.currentTimeMillis());//预计到票时间(预付未到票场景必填)
|
|
|
|
|
+ expenseListItem.put("tradingPartnerBizCode",UtilMap.getString(detail,"textField_mmbmohrb"));//往来单位业务编码
|
|
|
|
|
|
|
|
Map consumeLocation = new HashMap();
|
|
Map consumeLocation = new HashMap();
|
|
|
consumeLocation.put("cityPair",null);
|
|
consumeLocation.put("cityPair",null);
|
|
|
- consumeLocation.put("location","110001");
|
|
|
|
|
- item.put("consumeLocation",consumeLocation);
|
|
|
|
|
|
|
+ consumeLocation.put("location","110001");//todo 暂时写死 110001 北京
|
|
|
|
|
+ expenseListItem.put("consumeLocation",consumeLocation);
|
|
|
|
|
|
|
|
- item.put("corpExpenseResponsibleEmpIds",Arrays.asList("002"));//责任人/业务经办人(预付未到票/到票部分支付或不支付 两种场景必填) todo 暂时写死 002 wzy
|
|
|
|
|
|
|
+ expenseListItem.put("corpExpenseResponsibleEmpIds",Arrays.asList("002"));//责任人/业务经办人(预付未到票/到票部分支付或不支付 两种场景必填) todo 暂时写死 002 wzy
|
|
|
|
|
|
|
|
- expenseList.add(item);
|
|
|
|
|
|
|
+ Map body2 = new HashMap();
|
|
|
|
|
+ body2.put("employeeId","002");//需要导入的对应员工的工号
|
|
|
|
|
+ body2.put("expenseList",Arrays.asList(expenseListItem));
|
|
|
|
|
|
|
|
|
|
+ List<String> expenseCodes = MkBxUtil.receiveExpense(body2);
|
|
|
|
|
|
|
|
- Map collectionScheduleItem = new HashMap();
|
|
|
|
|
|
|
+ body.put("expenseCodes",expenseCodes);//费用类型业务编码
|
|
|
|
|
+
|
|
|
|
|
+ //收款账户
|
|
|
Map payeeAccount = new HashMap();
|
|
Map payeeAccount = new HashMap();
|
|
|
- payeeAccount.put("bankAcctName",UtilMap.getString(result,"textField_mkkmij6z"));//账户名
|
|
|
|
|
- payeeAccount.put("bankAcctNumber",UtilMap.getString(result,"textField_mkkmij6y"));//银行账户
|
|
|
|
|
|
|
+ payeeAccount.put("bankAcctName",UtilMap.getString(detail,"textField_mkkmij6z"));//账户名
|
|
|
|
|
+ payeeAccount.put("bankAcctNumber",UtilMap.getString(detail,"textField_mkkmij6y"));//银行账户
|
|
|
payeeAccount.put("paymentType","BANK");//账户类型;ALIPAY-支付宝,BANK-银行账户,CASH-现金
|
|
payeeAccount.put("paymentType","BANK");//账户类型;ALIPAY-支付宝,BANK-银行账户,CASH-现金
|
|
|
payeeAccount.put("accountType","CORP");//收款账户类型:个人(员工)-PERSONAL,公司(往来单位)-CORP
|
|
payeeAccount.put("accountType","CORP");//收款账户类型:个人(员工)-PERSONAL,公司(往来单位)-CORP
|
|
|
- collectionScheduleItem.put("payeeAccount",payeeAccount);
|
|
|
|
|
- collectionScheduleItem.put("collectionTradingPartnerBizCode",UtilMap.getString(result,"textField_mmbmohrb"));//收款往来单位编码
|
|
|
|
|
- collectionScheduleItem.put("amountRatio",0);//收款比例
|
|
|
|
|
- collectionScheduleItem.put("amount",new HashMap<>(consumeAmount));//收款金额
|
|
|
|
|
- collectionScheduleItem.put("collectionType","BANK");//支付类型
|
|
|
|
|
|
|
+ body.put("payeeAccount",payeeAccount);
|
|
|
|
|
+
|
|
|
|
|
+ body.put("stagingFlag",true);//暂存标识,默认为false表示不暂存
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ Map result = MkBxUtil.receiveReimburse(body);
|
|
|
|
|
|
|
|
- collectionSchedule.add(collectionScheduleItem);
|
|
|
|
|
}
|
|
}
|
|
|
}else {
|
|
}else {
|
|
|
List<Map> detailList = UtilMap.getList(formData, "tableField_mkkmij61");//free-采购明细
|
|
List<Map> detailList = UtilMap.getList(formData, "tableField_mkkmij61");//free-采购明细
|
|
|
|
|
|
|
|
- for (Map result : detailList) {
|
|
|
|
|
- Map item = new HashMap();
|
|
|
|
|
|
|
+ int index = 0;
|
|
|
|
|
+ for (Map detail : detailList) {
|
|
|
|
|
+ index ++;
|
|
|
|
|
+ String uuid = UtilMap.getString(detail, "textField_mmvhqm0s");//子表uuid
|
|
|
|
|
+ Map body = new HashMap();
|
|
|
|
|
+// body.put("formCode",xqbh + "-" + uuid);//有值时会使用该值作为单据号
|
|
|
|
|
+ body.put("formCode",xqbh + "-" +index);//有值时会使用该值作为单据号
|
|
|
|
|
+ body.put("formSubTypeBizCode",formSubTypeBizCode);//表单类型的业务编号
|
|
|
|
|
+ body.put("submittedUserEmployeeId",submittedUserEmployeeId);//提单人工号
|
|
|
|
|
+ body.put("reimburseName","FREE-" + UtilMap.getString(detail,"selectField_mkkixdd7"));//报销事由
|
|
|
|
|
+ body.put("legalEntityBizCode",legalEntityBizCode);//公司抬头编码
|
|
|
|
|
+ body.put("coverUserEmployeeId",coverUserEmployeeId);//承担人工号
|
|
|
|
|
+ body.put("coverDepartmentBizCode",coverDepartmentBizCode);//承担部门编码
|
|
|
|
|
+ body.put("tradingPartnerBizCode",UtilMap.getString(detail,"textField_mmekbfa2"));//往来单位编码
|
|
|
|
|
+
|
|
|
|
|
+ Map customObject = new HashMap();
|
|
|
|
|
+ customObject.put("CF4",new HashMap<String,Long>(){{put("currentTime",ldjssj);}});//落地结束时间
|
|
|
|
|
+ customObject.put("CF3",new HashMap<String,Long>(){{put("currentTime",UtilMap.getLong(detail,"dateField_mmvhtdy4"));}});//期望支付日期
|
|
|
|
|
+ customObject.put("CF6",isFree);//free 是;否
|
|
|
|
|
+ customObject.put("CF5",isDdf);//代垫付 是:1 ; 否:2
|
|
|
|
|
+ customObject.put("CF2",xmsssyb);//项目所属事业部
|
|
|
|
|
+ customObject.put("CF1",projectCode);//项目
|
|
|
|
|
+ customObject.put("CF7",UtilMap.getString(detail,"numberField_mmwswtkx"));//逾期天数
|
|
|
|
|
+
|
|
|
|
|
+ body.put("customObject",customObject);
|
|
|
|
|
+
|
|
|
|
|
+ //报销单费用导入
|
|
|
|
|
+ Map expenseListItem = new HashMap();
|
|
|
|
|
|
|
|
Map consumeAmount = new HashMap();
|
|
Map consumeAmount = new HashMap();
|
|
|
- consumeAmount.put("amount",String.format("%.2f", UtilMap.getDouble(result,"numberField_mkkmij6p")));//结算金额
|
|
|
|
|
|
|
+ consumeAmount.put("amount",String.format("%.2f", UtilMap.getDouble(detail,"numberField_mkkmij6p")));//结算金额
|
|
|
consumeAmount.put("currency","CNY");
|
|
consumeAmount.put("currency","CNY");
|
|
|
|
|
|
|
|
- item.put("consumeAmount",consumeAmount);
|
|
|
|
|
- item.put("corpExpense",true);//是否对公费用,需要填写true
|
|
|
|
|
- item.put("expenseTypeBizCode","200140");//费用类型业务编码 todo 暂时写死 200140 其他费用
|
|
|
|
|
- item.put("corpType","NO_RECEIPT");//业务场景:ALL_RECEIPTS(全部到票) NO_RECEIPT(预付未到票) RECEIPT_DEDUCTION(到票核销) RECEIPT_PAY_SOME(到票部分支付或不支付) PAY_BEFORE_RECEIPT(支付前期已到的发票)
|
|
|
|
|
- item.put("nonReceiptAmount",new HashMap<>(consumeAmount));//未到票金额(预付未到票场景必填)
|
|
|
|
|
- item.put("forecastReceiptDate",System.currentTimeMillis());//预计到票时间(预付未到票场景必填)
|
|
|
|
|
- item.put("tradingPartnerBizCode",UtilMap.getString(result,"textField_mmekbfa2"));//往来单位业务编码
|
|
|
|
|
|
|
+ expenseListItem.put("consumeAmount",consumeAmount);
|
|
|
|
|
+ expenseListItem.put("corpExpense",true);//是否对公费用,需要填写true
|
|
|
|
|
+ String gysej = UtilMap.getString(detail, "selectField_mmwuzaql");//供应商二级
|
|
|
|
|
+ expenseListItem.put("expenseTypeBizCode",MkBxUtil.expenseTypeSearch(UtilMap.map("keyword",gysej)));//费用类型业务编码
|
|
|
|
|
+ expenseListItem.put("corpType","NO_RECEIPT");//业务场景:ALL_RECEIPTS(全部到票) NO_RECEIPT(预付未到票) RECEIPT_DEDUCTION(到票核销) RECEIPT_PAY_SOME(到票部分支付或不支付) PAY_BEFORE_RECEIPT(支付前期已到的发票)
|
|
|
|
|
+ expenseListItem.put("nonReceiptAmount",new HashMap<>(consumeAmount));//未到票金额(预付未到票场景必填)
|
|
|
|
|
+ expenseListItem.put("forecastReceiptDate",System.currentTimeMillis());//预计到票时间(预付未到票场景必填)
|
|
|
|
|
+ expenseListItem.put("tradingPartnerBizCode",UtilMap.getString(detail,"textField_mmekbfa2"));//往来单位业务编码
|
|
|
|
|
|
|
|
Map consumeLocation = new HashMap();
|
|
Map consumeLocation = new HashMap();
|
|
|
consumeLocation.put("cityPair",null);
|
|
consumeLocation.put("cityPair",null);
|
|
|
- consumeLocation.put("location","110001");
|
|
|
|
|
- item.put("consumeLocation",consumeLocation);
|
|
|
|
|
|
|
+ consumeLocation.put("location","110001");//todo 暂时写死 110001 北京
|
|
|
|
|
+ expenseListItem.put("consumeLocation",consumeLocation);
|
|
|
|
|
|
|
|
- item.put("corpExpenseResponsibleEmpIds",Arrays.asList("002"));//责任人/业务经办人(预付未到票/到票部分支付或不支付 两种场景必填) todo 暂时写死 002 wzy
|
|
|
|
|
|
|
+ expenseListItem.put("corpExpenseResponsibleEmpIds",Arrays.asList("002"));//责任人/业务经办人(预付未到票/到票部分支付或不支付 两种场景必填) todo 暂时写死 002 wzy
|
|
|
|
|
|
|
|
- expenseList.add(item);
|
|
|
|
|
|
|
+ Map body2 = new HashMap();
|
|
|
|
|
+ body2.put("employeeId","002");//需要导入的对应员工的工号
|
|
|
|
|
+ body2.put("expenseList",Arrays.asList(expenseListItem));
|
|
|
|
|
|
|
|
|
|
+ List<String> expenseCodes = MkBxUtil.receiveExpense(body2);
|
|
|
|
|
|
|
|
- Map collectionScheduleItem = new HashMap();
|
|
|
|
|
|
|
+ body.put("expenseCodes",expenseCodes);//费用类型业务编码
|
|
|
|
|
+
|
|
|
|
|
+ //收款账户
|
|
|
Map payeeAccount = new HashMap();
|
|
Map payeeAccount = new HashMap();
|
|
|
- payeeAccount.put("bankAcctName",UtilMap.getString(result,"textField_mketkvxa"));//账户名
|
|
|
|
|
- payeeAccount.put("bankAcctNumber",UtilMap.getString(result,"textField_mketkvxc"));//银行账户
|
|
|
|
|
|
|
+ payeeAccount.put("bankAcctName",UtilMap.getString(detail,"textField_mketkvxa"));//账户名
|
|
|
|
|
+ payeeAccount.put("bankAcctNumber",UtilMap.getString(detail,"textField_mketkvxc"));//银行账户
|
|
|
payeeAccount.put("paymentType","BANK");//账户类型;ALIPAY-支付宝,BANK-银行账户,CASH-现金
|
|
payeeAccount.put("paymentType","BANK");//账户类型;ALIPAY-支付宝,BANK-银行账户,CASH-现金
|
|
|
payeeAccount.put("accountType","CORP");//收款账户类型:个人(员工)-PERSONAL,公司(往来单位)-CORP
|
|
payeeAccount.put("accountType","CORP");//收款账户类型:个人(员工)-PERSONAL,公司(往来单位)-CORP
|
|
|
- collectionScheduleItem.put("payeeAccount",payeeAccount);
|
|
|
|
|
- collectionScheduleItem.put("collectionTradingPartnerBizCode",UtilMap.getString(result,"textField_mmekbfa2"));//收款往来单位编码
|
|
|
|
|
- collectionScheduleItem.put("amountRatio",0);//收款比例
|
|
|
|
|
- collectionScheduleItem.put("amount",new HashMap<>(consumeAmount));//收款金额
|
|
|
|
|
- collectionScheduleItem.put("collectionType","BANK");//支付类型
|
|
|
|
|
|
|
+ body.put("payeeAccount",payeeAccount);
|
|
|
|
|
+
|
|
|
|
|
+ body.put("stagingFlag",true);//暂存标识,默认为false表示不暂存
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ Map result = MkBxUtil.receiveReimburse(body);
|
|
|
|
|
|
|
|
- collectionSchedule.add(collectionScheduleItem);
|
|
|
|
|
}
|
|
}
|
|
|
- }
|
|
|
|
|
|
|
|
|
|
- //报销单费用导入
|
|
|
|
|
- Map body2 = new HashMap();
|
|
|
|
|
- body2.put("employeeId","002");//需要导入的对应员工的工号
|
|
|
|
|
- body2.put("expenseList",expenseList);
|
|
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
- expenseCodes = MkBxUtil.receiveExpense(body2);
|
|
|
|
|
|
|
|
|
|
- body.put("expenseCodes",expenseCodes);//费用类型业务编码
|
|
|
|
|
- body.put("collectionSchedule",collectionSchedule);//多人收款,如果已填充该字段,则无需填充上方的收款账户字段,若传多人收款,则paymentSceneBizCode参数必填
|
|
|
|
|
- body.put("paymentSceneBizCode","DGYSSK");//多人收款场景(支付场景)表单业务编码,需要填写多人收款时必填
|
|
|
|
|
|
|
|
|
|
- body.put("stagingFlag",false);////暂存标识,默认为false表示不暂存
|
|
|
|
|
|
|
|
|
|
- Map result = MkBxUtil.receiveReimburse(body);
|
|
|
|
|
|
|
|
|
|
return McR.success();
|
|
return McR.success();
|
|
|
}
|
|
}
|