|
@@ -20,8 +20,10 @@ import org.springframework.web.bind.annotation.RestController;
|
|
|
import javax.annotation.Resource;
|
|
|
import java.math.BigDecimal;
|
|
|
import java.util.ArrayList;
|
|
|
+import java.util.Collections;
|
|
|
import java.util.Date;
|
|
|
import java.util.List;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
|
* mrp10201Controller
|
|
@@ -261,6 +263,9 @@ public class Inc10100Controller extends BaseController {
|
|
|
}
|
|
|
|
|
|
List<Sfc10401> sfc10401List = sfc10401Service.getList(sfc10401QueryWrapper);
|
|
|
+ QueryWrapper<Sfc10401> sfc10401AllQueryWrapper = new QueryWrapper<>();
|
|
|
+ sfc10401AllQueryWrapper.in("concat(rtrim(cpart), rtrim(prver))", sfc10401List.isEmpty() ? Collections.singletonList("0") : sfc10401List.stream().map(v -> v.getCpart().trim() + v.getPrver().trim()).collect(Collectors.toList()));
|
|
|
+ List<Sfc10401> all10401List = sfc10401Service.getList(sfc10401AllQueryWrapper);
|
|
|
List<BizProcess> bases = processService.list();
|
|
|
List<BizTechnologicalProcessDetail> processDetails = technologicalProcessDetailService.query().list();
|
|
|
List<BizTechnologicalProcess> processes = technologicalProcessService.list();
|
|
@@ -271,82 +276,133 @@ public class Inc10100Controller extends BaseController {
|
|
|
List<BizTechnologicalProcessDetail> updateProcessDetail = new ArrayList<>();
|
|
|
sfc10401List.forEach(l -> {
|
|
|
// 判断是否有对应的technologicalProcessDetail
|
|
|
- BizTechnologicalProcessDetail old = processDetails.stream().filter(v -> v.getTechnologyVersion().equals(l.getPrver().trim()) && v.getProductCode().equals(l.getCpart().trim()) && v.getProcessStepNumber().equals(l.getPrseq().trim()) && v.getProcessCode().equals(l.getPrcode().trim())).findFirst().orElse(null);
|
|
|
- if (old != null) {
|
|
|
- old.setProcessKey(l.getFinkey());
|
|
|
- old.setProcessAlias(l.getPrna());
|
|
|
- old.setProductShaftCategory(l.getZtype());
|
|
|
- old.setProductShaftCategoryName(l.getZtydm());
|
|
|
- old.setProductDescription(l.getDescr());
|
|
|
- old.setTenantId(Long.parseLong(l.getFacno()));
|
|
|
- updateProcessDetail.add(old);
|
|
|
- } else {
|
|
|
- BizTechnologicalProcessDetail newProcess = new BizTechnologicalProcessDetail();
|
|
|
- newProcess.setTechnologyVersion(l.getPrver().trim());
|
|
|
- newProcess.setProductCode(l.getCpart().trim());
|
|
|
- newProcess.setProcessCode(l.getPrcode().trim());
|
|
|
- newProcess.setProcessStepNumber(l.getPrseq());
|
|
|
- newProcess.setProcessKey(l.getFinkey());
|
|
|
- newProcess.setProcessAlias(l.getPrna());
|
|
|
- newProcess.setProductShaftCategory(l.getZtype());
|
|
|
- newProcess.setProductShaftCategoryName(l.getZtydm());
|
|
|
- newProcess.setProductDescription(l.getDescr());
|
|
|
- newProcess.setTenantId(Long.parseLong(l.getFacno()));
|
|
|
- if (newProcess.getProductCode() != null && !newProcess.getProductCode().isEmpty()) {
|
|
|
- BizProduct bizProduct = products.stream().filter(v -> v.getProductCode().equals(l.getCpart().trim())).findFirst().orElse(null);
|
|
|
- if (bizProduct != null) {
|
|
|
- newProcess.setProductId(bizProduct.getId());
|
|
|
- }
|
|
|
- bizProduct = newProducts.stream().filter(v -> v.getProductCode().equals(l.getCpart().trim())).findFirst().orElse(null);
|
|
|
- if (bizProduct != null && newProcess.getProductId() == null) {
|
|
|
- newProcess.setProductId(bizProduct.getId());
|
|
|
- }
|
|
|
- }
|
|
|
- if (newProcess.getProcessCode() != null && !newProcess.getProcessCode().isEmpty()) {
|
|
|
- BizProcess bizProcess = bases.stream().filter(v -> v.getProcessCode().equals(l.getPrcode().trim())).findFirst().orElse(null);
|
|
|
- newProcess.setProcessId(bizProcess == null ? null : bizProcess.getId());
|
|
|
- }
|
|
|
- // 判断下是否有对用工艺
|
|
|
+ // 判断是工序序号的变化还是新增还是其他。
|
|
|
+ // 获取对应
|
|
|
+ Sfc10400 sfc10400 = sfc10400List.stream().filter(v -> v.getPrver().trim().equals(l.getPrver().trim()) && v.getCpart().trim().equals(l.getCpart().trim())).findFirst().orElse(new Sfc10400());
|
|
|
+ BizTechnologicalProcess oldTech = processes.stream().filter(v -> v.getTechnologyVersion().trim().equals(l.getPrver().trim()) && v.getProductCode().trim().equals(l.getCpart().trim()) && v.getIsHistory().equals(0)).findFirst().orElse(null);
|
|
|
|
|
|
- Sfc10400 sfc10400 = sfc10400List.stream().filter(v -> v.getPrver().trim().equals(l.getPrver().trim()) && v.getCpart().trim().equals(l.getCpart().trim())).findFirst().orElse(null);
|
|
|
- BizTechnologicalProcess oldTech = processes.stream().filter(v -> v.getTechnologyVersion().trim().equals(l.getPrver().trim()) && v.getProductCode().trim().equals(l.getCpart().trim())).findFirst().orElse(null);
|
|
|
- if (oldTech != null) {
|
|
|
- if (sfc10400 != null) {
|
|
|
- oldTech.setProductShaftCategory(sfc10400.getZtype());
|
|
|
- oldTech.setProductShaftCategoryName(sfc10400.getZtydm());
|
|
|
- oldTech.setProductSpecification(sfc10400.getSpec());
|
|
|
- oldTech.setProductDrawingNumber(sfc10400.getDraw());
|
|
|
- oldTech.setProductDescription(sfc10400.getDescr());
|
|
|
- updateProcess.add(oldTech);
|
|
|
- newProcess.setTechnologicalProcessId(oldTech.getId());
|
|
|
+ BizTechnologicalProcessDetail old = processDetails.stream().filter(v -> v.getTechnologyVersion().equals(l.getPrver().trim()) && v.getProductCode().equals(l.getCpart().trim()) && v.getProcessCode().equals(l.getPrcode().trim()) && v.getTechnologicalProcessId().equals(oldTech.getId())).findFirst().orElse(null);
|
|
|
+ // 假设旧工序存在则判断是否序号相同 假设不同添加新的工艺信息
|
|
|
+ if (oldTech == null) {
|
|
|
+ // 假设旧的工艺版本不存在新增一个新的工艺版本。然后新增一个工艺
|
|
|
+ if (saveProcess.stream().anyMatch(v -> v.getTechnologyVersion().trim().equals(l.getPrver().trim()) && v.getProductCode().trim().equals(l.getCpart().trim()))) {
|
|
|
+ // 判断工艺版本是否已新增过假设已新增过只新增新工艺。
|
|
|
+ BizTechnologicalProcess newTech = saveProcess.stream().filter(v -> v.getTechnologyVersion().trim().equals(l.getPrver().trim()) && v.getProductCode().trim().equals(l.getCpart().trim())).findFirst().orElse(new BizTechnologicalProcess());
|
|
|
+ BizTechnologicalProcessDetail newProcess = new BizTechnologicalProcessDetail();
|
|
|
+ newProcess.setTechnologyVersion(l.getPrver().trim());
|
|
|
+ newProcess.setProductCode(l.getCpart().trim());
|
|
|
+ newProcess.setProcessCode(l.getPrcode().trim());
|
|
|
+ newProcess.setProcessStepNumber(l.getPrseq());
|
|
|
+ newProcess.setProcessKey(l.getFinkey());
|
|
|
+ newProcess.setProcessAlias(l.getPrna());
|
|
|
+ newProcess.setProductShaftCategory(l.getZtype());
|
|
|
+ newProcess.setProductShaftCategoryName(l.getZtydm());
|
|
|
+ newProcess.setProductDescription(l.getDescr());
|
|
|
+ newProcess.setTenantId(Long.parseLong(l.getFacno()));
|
|
|
+ newProcess.setTechnologicalProcessId(newTech.getId());
|
|
|
+ if (newProcess.getProcessCode() != null && !newProcess.getProcessCode().isEmpty()) {
|
|
|
+ BizProcess bizProcess = bases.stream().filter(v -> v.getProcessCode().equals(l.getPrcode().trim())).findFirst().orElse(null);
|
|
|
+ newProcess.setProcessId(bizProcess == null ? null : bizProcess.getId());
|
|
|
}
|
|
|
+ if (newTech.getProductCode() != null && !newTech.getProductCode().isEmpty()) {
|
|
|
+ BizProduct bizProduct = products.stream().filter(v -> v.getProductCode().trim().equals(sfc10400.getCpart().trim())).findFirst().orElse(null);
|
|
|
+ if (bizProduct != null) {
|
|
|
+ newProcess.setProductId(bizProduct.getId());
|
|
|
+ }
|
|
|
+ bizProduct = newProducts.stream().filter(v -> v.getProductCode().trim().equals(sfc10400.getCpart().trim())).findFirst().orElse(null);
|
|
|
+ if (bizProduct != null && newProcess.getProductId() == null) {
|
|
|
+ newProcess.setProductId(bizProduct.getId());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ saveProcessDetail.add(newProcess);
|
|
|
} else {
|
|
|
- if (sfc10400 != null) {
|
|
|
- BizTechnologicalProcess newTech = new BizTechnologicalProcess();
|
|
|
- newTech.setProductCode(sfc10400.getCpart());
|
|
|
- newTech.setTechnologyVersion(l.getPrver());
|
|
|
- newTech.setTenantId(1L);
|
|
|
- if (newTech.getProductCode() != null && !newTech.getProductCode().isEmpty()) {
|
|
|
- BizProduct bizProduct = products.stream().filter(v -> v.getProductCode().equals(sfc10400.getCpart())).findFirst().orElse(null);
|
|
|
- if (bizProduct != null) {
|
|
|
- newProcess.setProductId(bizProduct.getId());
|
|
|
- }
|
|
|
- bizProduct = newProducts.stream().filter(v -> v.getProductCode().equals(sfc10400.getCpart())).findFirst().orElse(null);
|
|
|
- if (bizProduct != null && newProcess.getProductId() == null) {
|
|
|
- newProcess.setProductId(bizProduct.getId());
|
|
|
- }
|
|
|
+ // 判断工艺版本未新增过则既新增工艺又新增工序
|
|
|
+ BizTechnologicalProcess newTech = new BizTechnologicalProcess();
|
|
|
+ newTech.setProductCode(sfc10400.getCpart().trim());
|
|
|
+ newTech.setTechnologyVersion(l.getPrver());
|
|
|
+ newTech.setTenantId(1L);
|
|
|
+ BizTechnologicalProcessDetail newProcess = new BizTechnologicalProcessDetail();
|
|
|
+
|
|
|
+ newProcess.setTechnologyVersion(l.getPrver().trim());
|
|
|
+ newProcess.setProductCode(l.getCpart().trim());
|
|
|
+ newProcess.setProcessCode(l.getPrcode().trim());
|
|
|
+ newProcess.setProcessStepNumber(l.getPrseq());
|
|
|
+ newProcess.setProcessKey(l.getFinkey());
|
|
|
+ newProcess.setProcessAlias(l.getPrna());
|
|
|
+ newProcess.setProductShaftCategory(l.getZtype());
|
|
|
+ newProcess.setProductShaftCategoryName(l.getZtydm());
|
|
|
+ newProcess.setProductDescription(l.getDescr());
|
|
|
+ newProcess.setTenantId(Long.parseLong(l.getFacno()));
|
|
|
+ if (newTech.getProductCode() != null && !newTech.getProductCode().isEmpty()) {
|
|
|
+ BizProduct bizProduct = products.stream().filter(v -> v.getProductCode().trim().equals(sfc10400.getCpart().trim())).findFirst().orElse(null);
|
|
|
+ if (bizProduct != null) {
|
|
|
+ newProcess.setProductId(bizProduct.getId());
|
|
|
+ newTech.setProductId(bizProduct.getId());
|
|
|
}
|
|
|
- newTech.setProductShaftCategory(sfc10400.getZtype());
|
|
|
- newTech.setProductShaftCategoryName(sfc10400.getZtydm());
|
|
|
- newTech.setProductSpecification(sfc10400.getSpec());
|
|
|
- newTech.setProductDrawingNumber(sfc10400.getDraw());
|
|
|
- newTech.setProductDescription(sfc10400.getDescr());
|
|
|
+ bizProduct = newProducts.stream().filter(v -> v.getProductCode().trim().equals(sfc10400.getCpart().trim())).findFirst().orElse(null);
|
|
|
+ if (bizProduct != null && newProcess.getProductId() == null) {
|
|
|
+ newProcess.setProductId(bizProduct.getId());
|
|
|
+ newTech.setProductId(bizProduct.getId());
|
|
|
+ };
|
|
|
+ }
|
|
|
+ if (newProcess.getProcessCode() != null && !newProcess.getProcessCode().isEmpty()) {
|
|
|
+ BizProcess bizProcess = bases.stream().filter(v -> v.getProcessCode().equals(l.getPrcode().trim())).findFirst().orElse(null);
|
|
|
+ newProcess.setProcessId(bizProcess == null ? null : bizProcess.getId());
|
|
|
+ }
|
|
|
+ newTech.setProductShaftCategory(sfc10400.getZtype());
|
|
|
+ newTech.setProductShaftCategoryName(sfc10400.getZtydm());
|
|
|
+ newTech.setProductSpecification(sfc10400.getSpec());
|
|
|
+ newTech.setProductDrawingNumber(sfc10400.getDraw());
|
|
|
+ newTech.setProductDescription(sfc10400.getDescr());
|
|
|
+ newTech.setId(snowflakeIdWorker.nextId());
|
|
|
+ saveProcess.add(newTech);
|
|
|
+ newProcess.setTechnologicalProcessId(newTech.getId());
|
|
|
+
|
|
|
+ saveProcessDetail.add(newProcess);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ if (old == null || !old.getProcessStepNumber().trim().equals(l.getPrseq().trim())) {
|
|
|
+ // 假设旧工艺不存在,或新的工艺序号和旧的不同则将旧工艺版本isHistory置为1
|
|
|
+ oldTech.setIsHistory(1);
|
|
|
+ updateProcess.add(oldTech);
|
|
|
+ BizTechnologicalProcess newTech;
|
|
|
+ // 判断是否已加过对应工艺
|
|
|
+ if(!saveProcess.stream().anyMatch(v -> v.getProductCode().trim().equals(l.getCpart().trim()) && v.getTechnologyVersion().trim().equals(l.getPrver()))) {
|
|
|
+ newTech = new BizTechnologicalProcess(oldTech);
|
|
|
+ newTech.setIsHistory(0);
|
|
|
newTech.setId(snowflakeIdWorker.nextId());
|
|
|
saveProcess.add(newTech);
|
|
|
- newProcess.setTechnologicalProcessId(newTech.getId());
|
|
|
+ // 添加所有工艺明细
|
|
|
+ List<Sfc10401> itemProcesses = all10401List.stream().filter(v -> v.getCpart().trim().equals(l.getCpart().trim()) && v.getPrver().trim().equals(l.getPrver().trim())).collect(Collectors.toList());
|
|
|
+ itemProcesses.forEach(e -> {
|
|
|
+ BizTechnologicalProcessDetail newItem = new BizTechnologicalProcessDetail(e);
|
|
|
+ newItem.setTechnologicalProcessId(newTech.getId());
|
|
|
+ if (newTech.getProductCode() != null && !newTech.getProductCode().isEmpty()) {
|
|
|
+ BizProduct bizProduct = products.stream().filter(v -> v.getProductCode().trim().equals(sfc10400.getCpart().trim())).findFirst().orElse(null);
|
|
|
+ if (bizProduct != null) {
|
|
|
+ newItem.setProductId(bizProduct.getId());
|
|
|
+ }
|
|
|
+ bizProduct = newProducts.stream().filter(v -> v.getProductCode().trim().equals(sfc10400.getCpart().trim())).findFirst().orElse(null);
|
|
|
+ if (bizProduct != null && newItem.getProductId() == null) {
|
|
|
+ newItem.setProductId(bizProduct.getId());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (newItem.getProcessCode() != null && !newItem.getProcessCode().isEmpty()) {
|
|
|
+ BizProcess bizProcess = bases.stream().filter(v -> v.getProcessCode().equals(e.getPrcode().trim())).findFirst().orElse(null);
|
|
|
+ newItem.setProcessId(bizProcess == null ? null : bizProcess.getId());
|
|
|
+ }
|
|
|
+ saveProcessDetail.add(newItem);
|
|
|
+ });
|
|
|
}
|
|
|
+ } else {
|
|
|
+ // 假设工艺存在则更新工艺信息
|
|
|
+ old.setProcessKey(l.getFinkey());
|
|
|
+ old.setProcessAlias(l.getPrna());
|
|
|
+ old.setProductShaftCategory(l.getZtype());
|
|
|
+ old.setProductShaftCategoryName(l.getZtydm());
|
|
|
+ old.setProductDescription(l.getDescr());
|
|
|
+ updateProcessDetail.add(old);
|
|
|
}
|
|
|
- saveProcessDetail.add(newProcess);
|
|
|
}
|
|
|
});
|
|
|
if ((saveProcess.isEmpty() || technologicalProcessService.saveBatch(saveProcess)) && (updateProcess.isEmpty() || technologicalProcessService.updateBatchById(updateProcess)) && (saveProcessDetail.isEmpty() || technologicalProcessDetailService.saveBatch(saveProcessDetail)) && (updateProcessDetail.isEmpty() || technologicalProcessDetailService.updateBatchById(updateProcessDetail))) {
|
|
@@ -360,7 +416,6 @@ public class Inc10100Controller extends BaseController {
|
|
|
} else {
|
|
|
result = false;
|
|
|
}
|
|
|
-
|
|
|
return toAjax(result);
|
|
|
}
|
|
|
|
|
@@ -465,4 +520,303 @@ public class Inc10100Controller extends BaseController {
|
|
|
public BizShaftCategory getShaftCode(String code) {
|
|
|
return bizShaftCategoryService.query().eq("sub_category_code", code).one();
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取inc10100详细信息
|
|
|
+ * 获取 inc10100 信息传到 biz_product
|
|
|
+ * 20270716 之前 旧版本
|
|
|
+ */
|
|
|
+ @PreAuthorize("@ss.hasPermi('business:product:sync')")
|
|
|
+ @GetMapping(value = "/getP2ProductV0")
|
|
|
+ public AjaxResult getP2ProductV0() {
|
|
|
+ boolean result;
|
|
|
+// result = true;
|
|
|
+ result = getP2Process();
|
|
|
+ // 先从新系统中的 biz_pull_p2_time 中获取最新数据
|
|
|
+ BizPullP2Time pullDetail = new BizPullP2Time();
|
|
|
+ pullDetail.setType("product");
|
|
|
+ List<BizPullP2Time> pullDetails = pullP2TimeService.getList(pullDetail);
|
|
|
+ /*
|
|
|
+ * 如果 pullDetails 不为空,则获取最后一条数据,做为查询P2的生产计划明细的条件。
|
|
|
+ * 这里有个细节,每次从P2中获取生产计划明细,不能都从头开始,否则随着数据量增加,将会重复拉取大量的数据,性能很差
|
|
|
+ * 拉取数据后,存入新系统中,每次拉取前,将新系统中 biz_pull_p2_time 的最后一条数据记录的时间,做为条件传递过去
|
|
|
+ * P2中,获取领料时间大于上一次拉取时间的新数据,再存入新系统中。
|
|
|
+ */
|
|
|
+ BizPullP2Time lastPullDetail = null;
|
|
|
+ if (pullDetails.size() > 0) {
|
|
|
+ int lastIndex = pullDetails.size() - 1;
|
|
|
+ lastPullDetail = pullDetails.get(lastIndex);
|
|
|
+ }
|
|
|
+
|
|
|
+ QueryWrapper<Inc10100> queryWrapper = new QueryWrapper<>();
|
|
|
+ if (lastPullDetail != null) {
|
|
|
+ Date newCondition = lastPullDetail.getPullTime();
|
|
|
+ /*
|
|
|
+ * 这里应该根据新系统中记录的最大的拉取日期
|
|
|
+ * modate:P2中的修改日期,为了避免重复拉取,需要做条件判断。modate必须大于上一次拉取时间
|
|
|
+ */
|
|
|
+ queryWrapper.apply("modate IS NOT NULL AND modate > {0}", newCondition);
|
|
|
+ }
|
|
|
+ List<Inc10100> inc10100List = IInc10100Service.getList(queryWrapper);
|
|
|
+ List<BizProduct> products = productService.query().list();
|
|
|
+ List<BizProduct> newProducts = new ArrayList<>();
|
|
|
+ List<BizProduct> changeProducts = new ArrayList<>();
|
|
|
+ List<SysUser> userList = sysUserService.getList();
|
|
|
+ SysDictData conditions = new SysDictData();
|
|
|
+ conditions.setDictType("product_status_code");
|
|
|
+ List<SysDictData> dictList = sysDictDataService.selectDictDataList(conditions);
|
|
|
+ List<BizShaftCategory> categories = bizShaftCategoryService.query().list();
|
|
|
+ inc10100List.forEach(l -> {
|
|
|
+ if (products.stream().anyMatch(v -> v.getProductCode().equals(l.getPart().trim()) && v.getPreStock().equals(l.getPrloc().trim()))) {
|
|
|
+ // 已插入产品
|
|
|
+ BizProduct old = products.stream().filter(v -> v.getProductCode().equals(l.getPart().trim()) && v.getPreStock().equals(l.getPrloc().trim())).findFirst().orElse(null);
|
|
|
+ if (old != null) {
|
|
|
+ old.setType(l.getType());
|
|
|
+ old.setShaftBroadCategoryCode(l.getDtype());
|
|
|
+ old.setShaftCategoryCode(l.getZtype());
|
|
|
+ if (old.getShaftCategoryCode() != null) {
|
|
|
+ BizShaftCategory bizShaftCategory = categories.stream().filter(v -> v.getSubCategoryCode().equals(old.getShaftCategoryCode())).findFirst().orElse(null);
|
|
|
+ old.setShaftCategoryId(bizShaftCategory != null ? bizShaftCategory.getId() : null);
|
|
|
+ }
|
|
|
+ if (old.getShaftBroadCategoryCode() != null) {
|
|
|
+
|
|
|
+ }
|
|
|
+ old.setSpecification(l.getSpec());
|
|
|
+ old.setDrawingNumber(l.getDraw());
|
|
|
+ old.setCompanyAlias(l.getKhjc());
|
|
|
+ old.setCompanyCode(l.getCust());
|
|
|
+ old.setDescription(l.getDescr());
|
|
|
+ old.setProductionTenantId(l.getSfacno() != null ? Long.parseLong(l.getSfacno()) : null);
|
|
|
+ old.setDiameter(l.getDzj());
|
|
|
+ old.setLenght(l.getLenght());
|
|
|
+ old.setThickness(BigDecimal.valueOf(l.getAbbr()));
|
|
|
+ old.setDensity(l.getDensity());
|
|
|
+ old.setSalesmanCode(l.getXsyno());
|
|
|
+ if (old.getSalesmanCode() != null) {
|
|
|
+ SysUser user = userList.stream().filter(v -> v.getUserName().equals(old.getSalesmanCode())).findFirst().orElse(null);
|
|
|
+ old.setSalesmanId(user != null ? user.getUserId() : null);
|
|
|
+ }
|
|
|
+ old.setStockKeeperCode(l.getBgyno());
|
|
|
+ if (old.getStockKeeperCode() != null) {
|
|
|
+ SysUser bgy = userList.stream().filter(v -> v.getUserName().equals(old.getStockKeeperCode())).findFirst().orElse(null);
|
|
|
+ old.setStockKeeperId(bgy != null ? bgy.getUserId() : null);
|
|
|
+ }
|
|
|
+ old.setDispatcherCode(l.getDdyno());
|
|
|
+ if (old.getDispatcherCode() != null) {
|
|
|
+ SysUser ddy = userList.stream().filter(v -> v.getUserName().equals(old.getDispatcherCode())).findFirst().orElse(null);
|
|
|
+ old.setDispatcherId(ddy != null ? ddy.getUserId() : null);
|
|
|
+ }
|
|
|
+ old.setMaterialCode(l.getPhcode());
|
|
|
+ if (old.getMaterialCode() != null) {
|
|
|
+ // 目前没有材料表
|
|
|
+ }
|
|
|
+ old.setProductStatusCode(l.getStatus());
|
|
|
+ if (old.getProductStatusCode() != null) {
|
|
|
+ SysDictData dictData = dictList.stream().filter(v -> v.getDictValue().equals(old.getProductStatusCode())).findFirst().orElse(null);
|
|
|
+ old.setProductStatusId(dictData != null ? dictData.getDictCode() : null);
|
|
|
+ }
|
|
|
+ old.setTechnicianCode(l.getJsyno());
|
|
|
+ if (old.getTechnicianCode() != null) {
|
|
|
+ SysUser jsy = userList.stream().filter(v -> v.getUserName().equals(old.getTechnicianCode())).findFirst().orElse(null);
|
|
|
+ old.setTechnicianId(jsy != null ? jsy.getUserId() : null);
|
|
|
+ }
|
|
|
+ old.setRemark(l.getRemark());
|
|
|
+ changeProducts.add(old);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ // 新产品
|
|
|
+ BizProduct newProduct = new BizProduct();
|
|
|
+ newProduct.setProductCode(l.getPart());
|
|
|
+ newProduct.setPreStock(l.getPrloc());
|
|
|
+ newProduct.setType(l.getType());
|
|
|
+ newProduct.setShaftBroadCategoryCode(l.getDtype());
|
|
|
+ newProduct.setShaftCategoryCode(l.getZtype());
|
|
|
+ if (newProduct.getShaftCategoryCode() != null) {
|
|
|
+ BizShaftCategory bizShaftCategory = categories.stream().filter(v -> v.getSubCategoryCode().equals(newProduct.getShaftCategoryCode())).findFirst().orElse(null);
|
|
|
+ newProduct.setShaftCategoryId(bizShaftCategory != null ? bizShaftCategory.getId() : null);
|
|
|
+ }
|
|
|
+ if (newProduct.getShaftBroadCategoryCode() != null) {
|
|
|
+
|
|
|
+ }
|
|
|
+ newProduct.setSpecification(l.getSpec());
|
|
|
+ newProduct.setDrawingNumber(l.getDraw());
|
|
|
+ newProduct.setCompanyAlias(l.getKhjc());
|
|
|
+ newProduct.setCompanyCode(l.getCust());
|
|
|
+ newProduct.setDescription(l.getDescr());
|
|
|
+ newProduct.setProductionTenantId(l.getSfacno() != null ? Long.parseLong(l.getSfacno()) : null);
|
|
|
+ newProduct.setDiameter(l.getDzj());
|
|
|
+ newProduct.setLenght(l.getLenght());
|
|
|
+ newProduct.setThickness(BigDecimal.valueOf(l.getAbbr()));
|
|
|
+ newProduct.setDensity(l.getDensity());
|
|
|
+ newProduct.setSalesmanCode(l.getXsyno());
|
|
|
+ if (newProduct.getSalesmanCode() != null) {
|
|
|
+ SysUser user = userList.stream().filter(v -> v.getUserName().equals(newProduct.getSalesmanCode())).findFirst().orElse(null);
|
|
|
+ newProduct.setSalesmanId(user != null ? user.getUserId() : null);
|
|
|
+ }
|
|
|
+ newProduct.setStockKeeperCode(l.getBgyno());
|
|
|
+ if (newProduct.getStockKeeperCode() != null) {
|
|
|
+ SysUser user = userList.stream().filter(v -> v.getUserName().equals(newProduct.getStockKeeperCode())).findFirst().orElse(null);
|
|
|
+ newProduct.setStockKeeperId(user != null ? user.getUserId() : null);
|
|
|
+ }
|
|
|
+ newProduct.setDispatcherCode(l.getDdyno());
|
|
|
+ if (newProduct.getDispatcherCode() != null) {
|
|
|
+ SysUser user = userList.stream().filter(v -> v.getUserName().equals(newProduct.getDispatcherCode())).findFirst().orElse(null);
|
|
|
+ newProduct.setDispatcherId(user != null ? user.getUserId() : null);
|
|
|
+ }
|
|
|
+ newProduct.setMaterialCode(l.getPhcode());
|
|
|
+ if (newProduct.getMaterialCode() != null) {
|
|
|
+ // 目前没有材料表
|
|
|
+ }
|
|
|
+ newProduct.setProductStatusCode(l.getStatus());
|
|
|
+ if (newProduct.getProductStatusCode() != null) {
|
|
|
+ SysDictData dictData = dictList.stream().filter(v -> v.getDictValue().equals(newProduct.getProductStatusCode())).findFirst().orElse(null);
|
|
|
+ newProduct.setProductStatusId(dictData != null ? dictData.getDictCode() : null);
|
|
|
+ }
|
|
|
+ newProduct.setTechnicianCode(l.getJsyno());
|
|
|
+ if (newProduct.getTechnicianCode() != null) {
|
|
|
+ SysUser jsy = userList.stream().filter(v -> v.getUserName().equals(newProduct.getTechnicianCode())).findFirst().orElse(null);
|
|
|
+ newProduct.setTechnicianId(jsy != null ? jsy.getUserId() : null);
|
|
|
+ }
|
|
|
+ newProduct.setRemark(l.getRemark());
|
|
|
+ newProducts.add(newProduct);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ if ((newProducts.isEmpty() || productService.saveBatch(newProducts)) && (changeProducts.isEmpty() || productService.updateBatchById(changeProducts))) {
|
|
|
+ BizPullP2Time bizPullP2Time = new BizPullP2Time();
|
|
|
+ // 将当前时间赋值给 pullTime 属性
|
|
|
+ bizPullP2Time.setPullTime(new Date());
|
|
|
+ bizPullP2Time.setType("product");
|
|
|
+ // 保存数据
|
|
|
+ pullP2TimeService.saveOrUpdate(bizPullP2Time);
|
|
|
+ result = result && pullP2TimeService.saveOrUpdate(bizPullP2Time);
|
|
|
+ } else {
|
|
|
+ result = false;
|
|
|
+ }
|
|
|
+ // 先从新系统中的 biz_pull_p2_time 中获取最新数据
|
|
|
+ BizPullP2Time pullProcess = new BizPullP2Time();
|
|
|
+ pullProcess.setType("productProcess");
|
|
|
+ List<BizPullP2Time> pullProcesses = pullP2TimeService.getList(pullProcess);
|
|
|
+ /*
|
|
|
+ * 如果 pullDetails 不为空,则获取最后一条数据,做为查询P2的生产计划明细的条件。
|
|
|
+ * 这里有个细节,每次从P2中获取生产计划明细,不能都从头开始,否则随着数据量增加,将会重复拉取大量的数据,性能很差
|
|
|
+ * 拉取数据后,存入新系统中,每次拉取前,将新系统中 biz_pull_p2_time 的最后一条数据记录的时间,做为条件传递过去
|
|
|
+ * P2中,获取领料时间大于上一次拉取时间的新数据,再存入新系统中。
|
|
|
+ */
|
|
|
+ BizPullP2Time lastPullProcess = null;
|
|
|
+ if (pullProcesses.size() > 0) {
|
|
|
+ int lastIndex = pullProcesses.size() - 1;
|
|
|
+ lastPullProcess = pullProcesses.get(lastIndex);
|
|
|
+ }
|
|
|
+ QueryWrapper<Sfc10401> sfc10401QueryWrapper = new QueryWrapper<>();
|
|
|
+ if (lastPullProcess != null) {
|
|
|
+ Date newCondition = lastPullProcess.getPullTime();
|
|
|
+ /*
|
|
|
+ * 这里应该根据新系统中记录的最大的拉取日期
|
|
|
+ * modate:P2中的修改日期,为了避免重复拉取,需要做条件判断。modate必须大于上一次拉取时间
|
|
|
+ */
|
|
|
+ sfc10401QueryWrapper.apply("modate IS NOT NULL AND modate > {0}", newCondition);
|
|
|
+ }
|
|
|
+
|
|
|
+ List<Sfc10401> sfc10401List = sfc10401Service.getList(sfc10401QueryWrapper);
|
|
|
+ List<BizProcess> bases = processService.list();
|
|
|
+ List<BizTechnologicalProcessDetail> processDetails = technologicalProcessDetailService.query().list();
|
|
|
+ List<BizTechnologicalProcess> processes = technologicalProcessService.list();
|
|
|
+ List<Sfc10400> sfc10400List = sfc10400Service.getList(new QueryWrapper<>());
|
|
|
+ List<BizTechnologicalProcess> saveProcess = new ArrayList<>();
|
|
|
+ List<BizTechnologicalProcess> updateProcess = new ArrayList<>();
|
|
|
+ List<BizTechnologicalProcessDetail> saveProcessDetail = new ArrayList<>();
|
|
|
+ List<BizTechnologicalProcessDetail> updateProcessDetail = new ArrayList<>();
|
|
|
+ sfc10401List.forEach(l -> {
|
|
|
+ // 判断是否有对应的technologicalProcessDetail
|
|
|
+ BizTechnologicalProcessDetail old = processDetails.stream().filter(v -> v.getTechnologyVersion().equals(l.getPrver().trim()) && v.getProductCode().trim().equals(l.getCpart().trim()) && v.getProcessStepNumber().equals(l.getPrseq().trim()) && v.getProcessCode().equals(l.getPrcode().trim())).findFirst().orElse(null);
|
|
|
+ if (old != null) {
|
|
|
+ old.setProcessKey(l.getFinkey());
|
|
|
+ old.setProcessAlias(l.getPrna());
|
|
|
+ old.setProductShaftCategory(l.getZtype());
|
|
|
+ old.setProductShaftCategoryName(l.getZtydm());
|
|
|
+ old.setProductDescription(l.getDescr());
|
|
|
+ updateProcessDetail.add(old);
|
|
|
+ } else {
|
|
|
+ BizTechnologicalProcessDetail newProcess = new BizTechnologicalProcessDetail();
|
|
|
+ newProcess.setTechnologyVersion(l.getPrver().trim());
|
|
|
+ newProcess.setProductCode(l.getCpart().trim());
|
|
|
+ newProcess.setProcessCode(l.getPrcode().trim());
|
|
|
+ newProcess.setProcessStepNumber(l.getPrseq());
|
|
|
+ newProcess.setProcessKey(l.getFinkey());
|
|
|
+ newProcess.setProcessAlias(l.getPrna());
|
|
|
+ newProcess.setProductShaftCategory(l.getZtype());
|
|
|
+ newProcess.setProductShaftCategoryName(l.getZtydm());
|
|
|
+ newProcess.setProductDescription(l.getDescr());
|
|
|
+ newProcess.setTenantId(1L);
|
|
|
+ if (newProcess.getProductCode() != null && !newProcess.getProductCode().isEmpty()) {
|
|
|
+ BizProduct bizProduct = products.stream().filter(v -> v.getProductCode().trim().equals(l.getCpart().trim())).findFirst().orElse(null);
|
|
|
+ if (bizProduct != null) {
|
|
|
+ newProcess.setProductId(bizProduct.getId());
|
|
|
+ }
|
|
|
+ bizProduct = newProducts.stream().filter(v -> v.getProductCode().trim().equals(l.getCpart().trim())).findFirst().orElse(null);
|
|
|
+ if (bizProduct != null && newProcess.getProductId() == null) {
|
|
|
+ newProcess.setProductId(bizProduct.getId());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (newProcess.getProcessCode() != null && !newProcess.getProcessCode().isEmpty()) {
|
|
|
+ BizProcess bizProcess = bases.stream().filter(v -> v.getProcessCode().equals(l.getPrcode().trim())).findFirst().orElse(null);
|
|
|
+ newProcess.setProcessId(bizProcess == null ? null : bizProcess.getId());
|
|
|
+ }
|
|
|
+ // 判断下是否有对用工艺
|
|
|
+
|
|
|
+ Sfc10400 sfc10400 = sfc10400List.stream().filter(v -> v.getPrver().trim().equals(l.getPrver().trim()) && v.getCpart().trim().equals(l.getCpart().trim())).findFirst().orElse(null);
|
|
|
+ BizTechnologicalProcess oldTech = processes.stream().filter(v -> v.getTechnologyVersion().trim().equals(l.getPrver().trim()) && v.getProductCode().trim().equals(l.getCpart().trim())).findFirst().orElse(null);
|
|
|
+ if (oldTech != null) {
|
|
|
+ if (sfc10400 != null) {
|
|
|
+ oldTech.setProductShaftCategory(sfc10400.getZtype());
|
|
|
+ oldTech.setProductShaftCategoryName(sfc10400.getZtydm());
|
|
|
+ oldTech.setProductSpecification(sfc10400.getSpec());
|
|
|
+ oldTech.setProductDrawingNumber(sfc10400.getDraw());
|
|
|
+ oldTech.setProductDescription(sfc10400.getDescr());
|
|
|
+ updateProcess.add(oldTech);
|
|
|
+ newProcess.setTechnologicalProcessId(oldTech.getId());
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ if (sfc10400 != null) {
|
|
|
+ BizTechnologicalProcess newTech = new BizTechnologicalProcess();
|
|
|
+ newTech.setProductCode(sfc10400.getCpart());
|
|
|
+ newTech.setTechnologyVersion(l.getPrver());
|
|
|
+ newTech.setTenantId(1L);
|
|
|
+ if (newTech.getProductCode() != null && !newTech.getProductCode().isEmpty()) {
|
|
|
+ BizProduct bizProduct = products.stream().filter(v -> v.getProductCode().equals(sfc10400.getCpart())).findFirst().orElse(null);
|
|
|
+ if (bizProduct != null) {
|
|
|
+ newProcess.setProductId(bizProduct.getId());
|
|
|
+ }
|
|
|
+ bizProduct = newProducts.stream().filter(v -> v.getProductCode().equals(sfc10400.getCpart())).findFirst().orElse(null);
|
|
|
+ if (bizProduct != null && newProcess.getProductId() == null) {
|
|
|
+ newProcess.setProductId(bizProduct.getId());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ newTech.setProductShaftCategory(sfc10400.getZtype());
|
|
|
+ newTech.setProductShaftCategoryName(sfc10400.getZtydm());
|
|
|
+ newTech.setProductSpecification(sfc10400.getSpec());
|
|
|
+ newTech.setProductDrawingNumber(sfc10400.getDraw());
|
|
|
+ newTech.setProductDescription(sfc10400.getDescr());
|
|
|
+ newTech.setId(snowflakeIdWorker.nextId());
|
|
|
+ saveProcess.add(newTech);
|
|
|
+ newProcess.setTechnologicalProcessId(newTech.getId());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ saveProcessDetail.add(newProcess);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ if ((saveProcess.isEmpty() || technologicalProcessService.saveBatch(saveProcess)) && (updateProcess.isEmpty() || technologicalProcessService.updateBatchById(updateProcess)) && (saveProcessDetail.isEmpty() || technologicalProcessDetailService.saveBatch(saveProcessDetail)) && (updateProcessDetail.isEmpty() || technologicalProcessDetailService.updateBatchById(updateProcessDetail))) {
|
|
|
+ BizPullP2Time bizPullP2Time = new BizPullP2Time();
|
|
|
+ // 将当前时间赋值给 pullTime 属性
|
|
|
+ bizPullP2Time.setPullTime(new Date());
|
|
|
+ bizPullP2Time.setType("productProcess");
|
|
|
+ // 保存数据
|
|
|
+ pullP2TimeService.saveOrUpdate(bizPullP2Time);
|
|
|
+ result = result && pullP2TimeService.saveOrUpdate(bizPullP2Time);
|
|
|
+ } else {
|
|
|
+ result = false;
|
|
|
+ }
|
|
|
+
|
|
|
+ return toAjax(result);
|
|
|
+ }
|
|
|
}
|