|
@@ -19,6 +19,7 @@ import lombok.Synchronized;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.apache.commons.lang3.StringEscapeUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.scheduling.annotation.Async;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
import java.util.*;
|
|
@@ -30,8 +31,11 @@ public class KKLImplService implements KKLService {
|
|
|
|
|
|
//供应商原材料档案表
|
|
|
private static final String SUPPLIER_MATERIALS = "FORM-12EB6BCE3C264630824721E7BBABCC03L8U9";
|
|
|
+ private static final String SUPPLIER_CHANGE = "FORM-C939E9F486124464B17A6910D66A2425EWPX";
|
|
|
//定价单明细中间表
|
|
|
private static final String PRICE_DETAIL_MIDDLE = "FORM-E6766M811CKD2PIXEAKOM9S2DKBM2PBQU1MLL5";
|
|
|
+ //菜品管理
|
|
|
+ private static final String FOOD = "FORM-GP666M71DIGDE0ZADDLZ85VEFBD128OUH1MLLF";
|
|
|
|
|
|
@Autowired
|
|
|
private YDService ydService;
|
|
@@ -651,6 +655,50 @@ public class KKLImplService implements KKLService {
|
|
|
return diffList;
|
|
|
}
|
|
|
|
|
|
+ @Async
|
|
|
+ @Override
|
|
|
+ public McR updateFoodMaterials(String formInstId) {
|
|
|
+ //获取菜品管理信息
|
|
|
+ Map foodFormData = ydClient.queryData(YDParam.builder().formInstanceId(formInstId).build(), YDConf.FORM_QUERY.retrieve_id).getFormData();
|
|
|
+ List<Map> materialList = (List<Map>) foodFormData.get("tableField_llm1i9yy");
|
|
|
+ for (Map material : materialList) {
|
|
|
+ String jsonString = material.get("associationFormField_lln3lmmv_id").toString();
|
|
|
+ String materialJsonString = StringEscapeUtils.unescapeJava(jsonString.substring(1, jsonString.length() - 1));//新供应商原材料(关联表单)
|
|
|
+
|
|
|
+ Map materialMap =(((List<Map>) JSONArray.parse(materialJsonString))).get(0);
|
|
|
+ String instanceId = materialMap.get("instanceId").toString();
|
|
|
+
|
|
|
+ //获取定价单明细中间表信息
|
|
|
+ Map formData1 = ydClient.queryData(YDParam.builder().formInstanceId(instanceId).build(), YDConf.FORM_QUERY.retrieve_id).getFormData();
|
|
|
+
|
|
|
+ materialMap.put("title",formData1.get("textField_llkb7kd1").toString());
|
|
|
+ materialMap.put("subTitle",formData1.get("textField_lmkfg67e"));
|
|
|
+ List<Map> list = new ArrayList<>();
|
|
|
+ list.add(materialMap);
|
|
|
+ material.put("associationFormField_lln3lmmv",list);//原材料(关联表单)
|
|
|
+ material.put("textField_lln3lmn2",formData1.get("textField_llkb7kd3"));//单位
|
|
|
+ material.put("textField_llyy3khw",formData1.get("textField_lmkfg67e"));//品牌
|
|
|
+ material.put("textField_lz0ve9ct",formData1.get("textField_llkb7kd4"));//规格
|
|
|
+ material.put("numberField_lnrzzg03",formData1.get("numberField_lnrzzg03"));//整包装数量
|
|
|
+ material.put("textField_lnrzzg04",formData1.get("textField_lnrzzg04"));//整包装单位
|
|
|
+ material.put("textField_llndm599",formData1.get("textField_llkb7kd1"));//原材料名称
|
|
|
+ material.put("textField_lmk94yf5",formData1.get("textField_llkb7kd2"));//原材料编号
|
|
|
+ material.put("selectField_lmqclyx9",formData1.get("selectField_llkb7kd5"));//第一分类
|
|
|
+ material.put("numberField_lmqclyxa",formData1.get("numberField_llkknd6h"));//供货价
|
|
|
+ material.put("numberField_lmsvffts",formData1.get("numberField_llkknd6g"));//成本单价
|
|
|
+ material.put("numberField_lmsvfftt",formData1.get("numberField_llkb7kcy"));//服务费率
|
|
|
+ }
|
|
|
+
|
|
|
+// foodFormData.put("tableField_llm1i9yy",materialList);
|
|
|
+
|
|
|
+ ydClient.operateData(YDParam.builder()
|
|
|
+ .formInstanceId(formInstId)
|
|
|
+ .updateFormDataJson(JSON.toJSONString(foodFormData))
|
|
|
+ .build(), YDConf.FORM_OPERATION.update);
|
|
|
+
|
|
|
+ return McR.success();
|
|
|
+ }
|
|
|
+
|
|
|
private List<Map> getYdFormDataList(String formUuid, String searchCondition, YDConf.FORM_QUERY formQuery) {
|
|
|
List<Map> list = new ArrayList<>();
|
|
|
DDR_New ddrNew;
|
|
@@ -668,6 +716,25 @@ public class KKLImplService implements KKLService {
|
|
|
return list;
|
|
|
}
|
|
|
|
|
|
+ private List<Map> getYdInnerTableList(String formUuid,String formInstId,String tableFieldId) {
|
|
|
+ List<Map> list = new ArrayList<>();
|
|
|
+ DDR_New ddrNew;
|
|
|
+ int pageNumber = 1;
|
|
|
+ int pageSize = 50;
|
|
|
+ do {
|
|
|
+ ddrNew = ydClient.queryData(YDParam.builder()
|
|
|
+ .formUuid(formUuid)
|
|
|
+ .formInstanceId(formInstId)
|
|
|
+ .tableFieldId(tableFieldId)
|
|
|
+ .pageNumber(pageNumber)
|
|
|
+ .pageSize(pageSize).build(), YDConf.FORM_QUERY.retrieve_details);
|
|
|
+
|
|
|
+ list.addAll((List<Map>) ddrNew.getData());
|
|
|
+ pageNumber++;
|
|
|
+ }while (ddrNew.getTotalCount() > ddrNew.getPageNumber() * pageSize);
|
|
|
+ return list;
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
@Override
|
|
|
public McR updateSuppliers(String formInstId) {
|
|
@@ -679,28 +746,39 @@ public class KKLImplService implements KKLService {
|
|
|
String newSupplierCode = String.valueOf(formData.get("textField_llzzbai8"));//新供应商编号
|
|
|
String newSupplierName = String.valueOf(formData.get("textField_lmsli3bq"));//新供应商名称
|
|
|
String jsonString = formData.get("associationFormField_llkb7kct_id").toString();
|
|
|
- String res = StringEscapeUtils.unescapeJava(jsonString.substring(1, jsonString.length() - 1));
|
|
|
- List<Map> supplier =(List<Map>) JSONArray.parse(res);//供应商(关联表单)
|
|
|
+ String supplierJsonString = StringEscapeUtils.unescapeJava(jsonString.substring(1, jsonString.length() - 1));//新供应商(关联表单)
|
|
|
+ List<Map> supplier =(List<Map>) JSONArray.parse(supplierJsonString);
|
|
|
+
|
|
|
+ String jsonString2 = formData.get("associationFormField_llkb7kcs_id").toString();
|
|
|
+ String orderJsonString = StringEscapeUtils.unescapeJava(jsonString2.substring(1, jsonString2.length() - 1));//定价单(关联表单)
|
|
|
+ List<Map> order =(List<Map>) JSONArray.parse(orderJsonString);
|
|
|
|
|
|
String projectCode = String.valueOf(formData.get("textField_lllovku7"));//定价单编号
|
|
|
+
|
|
|
//新供应商差异原材料编号
|
|
|
List<String> newDiffSupplierMaterialCodes = new ArrayList<>();
|
|
|
- //老供应商差异原材料编号
|
|
|
- List<String> oldDiffSupplierMaterialCodes = new ArrayList<>();
|
|
|
- //老供应商匹配原材料编号
|
|
|
- List<String> oldMatchSupplierMaterialCodes = new ArrayList<>();
|
|
|
//新供应商匹配原材料编号
|
|
|
List<String> newMatchSupplierMaterialCodes = new ArrayList<>();
|
|
|
//新供应商匹配原材料名称
|
|
|
List<String> newMatchSupplierMaterialNames = new ArrayList<>();
|
|
|
|
|
|
+ //老供应商差异原材料编号
|
|
|
+ List<String> oldDiffSupplierMaterialCodes = new ArrayList<>();
|
|
|
+ //老供应商匹配原材料编号
|
|
|
+ List<String> oldMatchSupplierMaterialCodes = new ArrayList<>();
|
|
|
+
|
|
|
+
|
|
|
//校验新供应商原材料是否存在
|
|
|
List<Map> newSupplierMaterials = getYdFormDataList(SUPPLIER_MATERIALS, JSON.toJSONString(UtilMap.map("textField_llzzbyj1", newSupplierCode)), YDConf.FORM_QUERY.retrieve_list);
|
|
|
List<String> newSupplierMaterialCodes = newSupplierMaterials.stream()
|
|
|
.map(item -> String.valueOf(((Map)item.get("formData")).get("textField_llkb7kd2")))
|
|
|
.collect(Collectors.toList());
|
|
|
|
|
|
- List<Map> diffList = (List<Map>) formData.get("tableField_lywr2qcp");
|
|
|
+ //获取差异子表所有数据(可能超过50条)
|
|
|
+ List<Map> diffList = getYdInnerTableList(SUPPLIER_CHANGE, formInstId, "tableField_lywr2qcp");
|
|
|
+
|
|
|
+
|
|
|
+// List<Map> diffList = (List<Map>) formData.get("tableField_lywr2qcp");
|
|
|
|
|
|
for (Map diff : diffList) {
|
|
|
String oldCode = String.valueOf(diff.get("textField_lyxr5c44"));//老供应商原材料编号
|
|
@@ -736,58 +814,155 @@ public class KKLImplService implements KKLService {
|
|
|
.build(), YDConf.FORM_QUERY.retrieve_list).getData();
|
|
|
//复制旧供应商原材料信息到新供应商
|
|
|
if (Objects.nonNull(data) && !data.isEmpty()){
|
|
|
- Map formData1 = (Map) data.get(0).get("formData");
|
|
|
- formData1.put("associationFormField_lphya7cq",res);//供应商(关联表单)
|
|
|
- formData1.put("textField_llzzbyj1", newSupplierCode);//供应商编号
|
|
|
- formData1.put("textField_lmsli3bq", newSupplierName);//供应商名称
|
|
|
- formData1.put("textField_llkb7kd2", newCode);//物品编号
|
|
|
+ Map diffFormData = (Map) data.get(0).get("formData");
|
|
|
+ diffFormData.put("associationFormField_lphya7cq",supplierJsonString);//供应商(关联表单)
|
|
|
+ diffFormData.put("textField_llzzbyj1", newSupplierCode);//供应商编号
|
|
|
+ diffFormData.put("textField_lmsli3bq", newSupplierName);//供应商名称
|
|
|
+ diffFormData.put("textField_llkb7kd2", newCode);//物品编号
|
|
|
|
|
|
ydClient.operateData(YDParam.builder().formUuid(SUPPLIER_MATERIALS)
|
|
|
- .formDataJson(JSON.toJSONString(formData1)).build(), YDConf.FORM_OPERATION.create);
|
|
|
+ .formDataJson(JSON.toJSONString(diffFormData)).build(), YDConf.FORM_OPERATION.create);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+ Map changeCodeMap = new HashMap<>();
|
|
|
//获取旧供应商定价单明细中间表
|
|
|
List<Map> oldSupplierMaterials = getYdFormDataList(PRICE_DETAIL_MIDDLE, JSON.toJSONString(UtilMap.map("textField_llzzbyj1, textField_llm1vtjm", oldSupplierCode,projectCode)), YDConf.FORM_QUERY.retrieve_list);
|
|
|
for (Map oldSupplierMaterial : oldSupplierMaterials) {
|
|
|
- Map formData2 = (Map) oldSupplierMaterial.get("formData");
|
|
|
- String code = String.valueOf(formData2.get("textField_llkb7kd2"));
|
|
|
- String name = String.valueOf(formData2.get("textField_llkb7kd1"));
|
|
|
+ Map oldSupplierMaterialFormData = (Map) oldSupplierMaterial.get("formData");
|
|
|
+ String code = String.valueOf(oldSupplierMaterialFormData.get("textField_llkb7kd2"));
|
|
|
+ String name = String.valueOf(oldSupplierMaterialFormData.get("textField_llkb7kd1"));
|
|
|
String formInstanceId = String.valueOf(oldSupplierMaterial.get("formInstanceId"));
|
|
|
|
|
|
+ String newCode = "";
|
|
|
+ String newName = "";
|
|
|
+
|
|
|
//更新定价单明细中间表
|
|
|
- formData2.put("textField_lmsli3bq", newSupplierName);//供应商名称
|
|
|
- formData2.put("textField_llzzbyj1", newSupplierCode);//供应商编号
|
|
|
+ oldSupplierMaterialFormData.put("textField_lmsli3bq", newSupplierName);//供应商名称
|
|
|
+ oldSupplierMaterialFormData.put("textField_llzzbyj1", newSupplierCode);//供应商编号
|
|
|
+
|
|
|
//未匹配上的原材料
|
|
|
int index1 = oldDiffSupplierMaterialCodes.indexOf(code);
|
|
|
if (index1 != -1){
|
|
|
- formData2.put("textField_llkb7kd2", newDiffSupplierMaterialCodes.get(index1));//物品编号
|
|
|
+ newCode = newDiffSupplierMaterialCodes.get(index1);
|
|
|
+ oldSupplierMaterialFormData.put("textField_llkb7kd2", newCode);//物品编号
|
|
|
ydClient.operateData(YDParam.builder().formUuid(PRICE_DETAIL_MIDDLE)
|
|
|
.formInstanceId(formInstanceId)
|
|
|
- .updateFormDataJson(JSON.toJSONString(formData2)).build(), YDConf.FORM_OPERATION.update);
|
|
|
+ .updateFormDataJson(JSON.toJSONString(oldSupplierMaterialFormData)).build(), YDConf.FORM_OPERATION.update);
|
|
|
+ changeCodeMap.put(code,newCode);
|
|
|
continue;
|
|
|
}
|
|
|
//手动匹配上的原材料
|
|
|
int index2 = oldMatchSupplierMaterialCodes.indexOf(code);
|
|
|
if (index2 != -1){
|
|
|
- formData2.put("textField_llkb7kd2", newMatchSupplierMaterialCodes.get(index2));//物品编号
|
|
|
- formData2.put("textField_llkb7kd1",newMatchSupplierMaterialNames.get(index2));//物品名称
|
|
|
+ newCode = newMatchSupplierMaterialCodes.get(index2);
|
|
|
+ oldSupplierMaterialFormData.put("textField_llkb7kd2", newCode);//物品编号
|
|
|
+ oldSupplierMaterialFormData.put("textField_llkb7kd1",newMatchSupplierMaterialNames.get(index2));//物品名称
|
|
|
ydClient.operateData(YDParam.builder().formUuid(PRICE_DETAIL_MIDDLE)
|
|
|
.formInstanceId(formInstanceId)
|
|
|
- .updateFormDataJson(JSON.toJSONString(formData2)).build(), YDConf.FORM_OPERATION.update);
|
|
|
+ .updateFormDataJson(JSON.toJSONString(oldSupplierMaterialFormData)).build(), YDConf.FORM_OPERATION.update);
|
|
|
+ changeCodeMap.put(code,newCode);
|
|
|
continue;
|
|
|
}
|
|
|
//自动匹配上的原材料
|
|
|
for (Map newSupplierMaterial : newSupplierMaterials) {
|
|
|
- Map formData4 = (Map) newSupplierMaterial.get("formData");
|
|
|
- if (String.valueOf(formData4.get("textField_llkb7kd1")).equals(name)){
|
|
|
- formData2.put("textField_llkb7kd2", formData4.get("textField_llkb7kd2").toString());//物品编号
|
|
|
+ Map newSupplierMaterialFormData = (Map) newSupplierMaterial.get("formData");
|
|
|
+ if (String.valueOf(newSupplierMaterialFormData.get("textField_llkb7kd1")).equals(name)){
|
|
|
+ newCode = newSupplierMaterialFormData.get("textField_llkb7kd2").toString();
|
|
|
+ oldSupplierMaterialFormData.put("textField_llkb7kd2", newCode);//物品编号
|
|
|
ydClient.operateData(YDParam.builder().formUuid(PRICE_DETAIL_MIDDLE)
|
|
|
.formInstanceId(formInstanceId)
|
|
|
- .formDataJson(JSON.toJSONString(formData2)).build(), YDConf.FORM_OPERATION.update);
|
|
|
+ .updateFormDataJson(JSON.toJSONString(oldSupplierMaterialFormData)).build(), YDConf.FORM_OPERATION.update);
|
|
|
+ changeCodeMap.put(code,newCode);
|
|
|
+ break;
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ //更新定价单
|
|
|
+ String supplierInstanceId = supplier.get(0).get("instanceId").toString();
|
|
|
+ Map supplierMap = ydClient.queryData(YDParam.builder()
|
|
|
+ .formInstId(supplierInstanceId).build(), YDConf.FORM_QUERY.retrieve_id).getFormData();
|
|
|
+ List<Map> employee = (List<Map>) supplierMap.get("employeeField_lllodwha_id");
|
|
|
+
|
|
|
+ String orderInstanceId = order.get(0).get("instanceId").toString();
|
|
|
+ Map updateFormData = new HashMap<>();
|
|
|
+ updateFormData.put("associationFormField_llkb7kct",supplierJsonString);//供应商(关联表单)
|
|
|
+ updateFormData.put("textField_llzzbai8", newSupplierCode);//供应商编号
|
|
|
+ updateFormData.put("textField_lmsli3bq", newSupplierName);//供应商名称
|
|
|
+ updateFormData.put("textField_lv3w1k1l", oldSupplierCode);//历史供应商编号
|
|
|
+ updateFormData.put("employeeField_lmsli3br", employee);//供应商负责人
|
|
|
+
|
|
|
+ ydClient.operateData(YDParam.builder()
|
|
|
+ .formInstId(orderInstanceId)
|
|
|
+ .updateFormDataJson(JSON.toJSONString(updateFormData))
|
|
|
+ .build(), YDConf.FORM_OPERATION.update);
|
|
|
+
|
|
|
+ //更新菜品
|
|
|
+ List<Map> data = (List<Map>) ydClient.queryData(YDParam.builder()
|
|
|
+ .formUuid(FOOD)
|
|
|
+ .searchCondition(JSON.toJSONString(UtilMap.map("textField_lln3lmn1", projectCode)))
|
|
|
+ .build(), YDConf.FORM_QUERY.retrieve_list_all).getData();
|
|
|
+ for (Map datum : data) {
|
|
|
+ //获取菜品管理信息
|
|
|
+ Map foodFormData = (Map) datum.get("formData");
|
|
|
+ List<Map> materialList = (List<Map>) foodFormData.get("tableField_llm1i9yy");
|
|
|
+
|
|
|
+// Map foodFormData = ydClient.queryData(YDParam.builder().formInstanceId(formInstId).build(), YDConf.FORM_QUERY.retrieve_id).getFormData();
|
|
|
+// List<Map> materialList = (List<Map>) foodFormData.get("tableField_llm1i9yy");
|
|
|
+ for (Map material : materialList) {
|
|
|
+ String jsonString3 = material.get("associationFormField_lln3lmmv_id").toString();
|
|
|
+ String materialJsonString = StringEscapeUtils.unescapeJava(jsonString3.substring(1, jsonString3.length() - 1));//新供应商原材料(关联表单)
|
|
|
+
|
|
|
+ Map materialMap =(((List<Map>) JSONArray.parse(materialJsonString))).get(0);
|
|
|
+ String instanceId = materialMap.get("instanceId").toString();
|
|
|
+
|
|
|
+ //获取定价单明细中间表信息
|
|
|
+ Map formData1 = ydClient.queryData(YDParam.builder().formInstanceId(instanceId).build(), YDConf.FORM_QUERY.retrieve_id).getFormData();
|
|
|
+
|
|
|
+ materialMap.put("title",formData1.get("textField_llkb7kd1").toString());
|
|
|
+ materialMap.put("subTitle",formData1.get("textField_lmkfg67e"));
|
|
|
+ List<Map> list = new ArrayList<>();
|
|
|
+ list.add(materialMap);
|
|
|
+ material.put("associationFormField_lln3lmmv",list);//原材料(关联表单)
|
|
|
+ material.put("textField_lln3lmn2",formData1.get("textField_llkb7kd3"));//单位
|
|
|
+ material.put("textField_llyy3khw",formData1.get("textField_lmkfg67e"));//品牌
|
|
|
+ material.put("textField_lz0ve9ct",formData1.get("textField_llkb7kd4"));//规格
|
|
|
+ material.put("numberField_lnrzzg03",formData1.get("numberField_lnrzzg03"));//整包装数量
|
|
|
+ material.put("textField_lnrzzg04",formData1.get("textField_lnrzzg04"));//整包装单位
|
|
|
+ material.put("textField_llndm599",formData1.get("textField_llkb7kd1"));//原材料名称
|
|
|
+ material.put("textField_lmk94yf5",formData1.get("textField_llkb7kd2"));//原材料编号
|
|
|
+ material.put("selectField_lmqclyx9",formData1.get("selectField_llkb7kd5"));//第一分类
|
|
|
+ material.put("numberField_lmqclyxa",formData1.get("numberField_llkknd6h"));//供货价
|
|
|
+ material.put("numberField_lmsvffts",formData1.get("numberField_llkknd6g"));//成本单价
|
|
|
+ material.put("numberField_lmsvfftt",formData1.get("numberField_llkb7kcy"));//服务费率
|
|
|
+ }
|
|
|
+
|
|
|
+ foodFormData.put("tableField_llm1i9yy",materialList);
|
|
|
+
|
|
|
+ ydClient.operateData(YDParam.builder()
|
|
|
+ .formInstanceId(formInstId)
|
|
|
+ .updateFormDataJson(JSON.toJSONString(foodFormData))
|
|
|
+ .build(), YDConf.FORM_OPERATION.update);
|
|
|
+
|
|
|
+ /*for (Map material : materialList) {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ String code = material.get("textField_lmk94yf5").toString();//老供应商原材料编号
|
|
|
+ if (changeCodeMap.containsKey(code)){
|
|
|
+ material.put("textField_lmk94yf5", changeCodeMap.get(code));//新供应商原材料编号
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ foodFormData.put("tableField_llm1i9yy",materialList);
|
|
|
+ ydClient.operateData(YDParam.builder()
|
|
|
+ .formInstanceId(datum.get("formInstanceId").toString())
|
|
|
+ .updateFormDataJson(JSON.toJSONString(foodFormData))
|
|
|
+ .build(),YDConf.FORM_OPERATION.update);*/
|
|
|
}
|
|
|
|
|
|
return McR.success();
|