From 3166624edda4fc938593432b619fa5ad00409f0a Mon Sep 17 00:00:00 2001
From: liding <756868258@qq.com>
Date: 星期二, 03 十一月 2026 16:49:12 +0800
Subject: [PATCH] feat(outsource): 1.支持外协订单按物料属性分流复用原有业务流程 2.修复工时字段空值判断与赋值逻辑
---
inspect-server/src/main/java/com/ruoyi/inspect/aspect/PushIfsPartPropsRecordAspect.java | 84 +++++++++++++++++++++++++----------------
1 files changed, 51 insertions(+), 33 deletions(-)
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/aspect/PushIfsPartPropsRecordAspect.java b/inspect-server/src/main/java/com/ruoyi/inspect/aspect/PushIfsPartPropsRecordAspect.java
index 3573090..40eec31 100644
--- a/inspect-server/src/main/java/com/ruoyi/inspect/aspect/PushIfsPartPropsRecordAspect.java
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/aspect/PushIfsPartPropsRecordAspect.java
@@ -1,6 +1,8 @@
package com.ruoyi.inspect.aspect;
import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.json.JSONArray;
+import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.ruoyi.basic.dto.IfsInventoryQuantityDto;
@@ -13,6 +15,7 @@
import com.ruoyi.inspect.dto.IfsPartPropsRecordDTO;
import com.ruoyi.inspect.service.IfsPartPropsRecordService;
import com.ruoyi.inspect.service.IfsSplitOrderRecordService;
+import com.ruoyi.inspect.service.OutsourceOrderFlowService;
import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.Aspect;
@@ -41,48 +44,63 @@
@Autowired
private IfsPartPropsRecordService ifsPartPropsRecordService;
+ @Autowired
+ private OutsourceOrderFlowService outsourceOrderFlowService;
+
@Before(value = "execution(* com.ruoyi.inspect.service.impl.RawMaterialOrderServiceImpl.rawOrderRelease(..))")
@Transactional(rollbackFor = Exception.class,isolation = Isolation.READ_COMMITTED)
public void doAfterReturning(JoinPoint joinPoint) {
Object[] args = joinPoint.getArgs();
if(Objects.nonNull(args) && args.length>0) {
Long ifsInventoryId = (Long)args[0];
- log.info("id:{}",ifsInventoryId);
IfsInventoryQuantity ifsInventoryQuantity = ifsInventoryQuantityMapper.selectById(ifsInventoryId);
- //濡傛灉璁㈠崟鏄疜JNS鍩熺殑澶栬喘璁㈠崟锛屽厤妫�鏃跺悓姝TNS鍩熺殑IFS鎵规灞炴��
- if(StringUtils.equals(ContractType.KJNS.getValue(),ifsInventoryQuantity.getContract()) && StringUtils.equals(OrderType.WG.getValue(),ifsInventoryQuantity.getOrderType())){
- //鏌ヨZTNS鍩熺殑鐩稿悓鎵规璁㈠崟娑堟伅
- IfsInventoryQuantityDto ifsInventoryQuantityDto = new IfsInventoryQuantityDto();
- BeanUtil.copyProperties(ifsInventoryQuantity,ifsInventoryQuantityDto);
- ifsInventoryQuantityDto.setContract(ContractType.ZTNS.getValue());
- IfsPartPropsRecordDTO oneByContract = ifsPartPropsRecordService.getOneByContract(ifsInventoryQuantityDto);
- if(Objects.nonNull(oneByContract)){
- //鏇存柊IFS鎵规灞炴��
- Map<String, Object> inAttrMap = new HashMap<>();
- String actionType = "New";
- inAttrMap.put("RECORD_ID", UUID.randomUUID().toString());
- inAttrMap.put("SYSCODE", "LIMS");
- inAttrMap.put("SYSMODEL", "搴撳瓨鐗╂枡鎵规灞炴�т慨鏀�");
- HashMap<String, Object> batchInfoMap = new HashMap<>();
- batchInfoMap.put("CONTRACT",ContractType.KJNS.getValue());//鍩�
- batchInfoMap.put("PART_NO",oneByContract.getPartNo());//闆朵欢鍙�
- batchInfoMap.put("LOT_BATCH_NO",oneByContract.getLotBatchNo());//鎵规鍙�
- batchInfoMap.put("ATTR1",oneByContract.getDrumNo());//杞藉叿缂栧彿
- batchInfoMap.put("ATTR2",oneByContract.getStartMeterMark().toString());//璧峰绫虫爣
- batchInfoMap.put("ATTR3",oneByContract.getEndMeterMark().toString());//鎴绫虫爣
- batchInfoMap.put("ATTR4", oneByContract.getOuterColor());//澶栨姢棰滆壊
- batchInfoMap.put("ATTR5",oneByContract.getInsulationColor());//缁濈紭棰滆壊
- batchInfoMap.put("ATTR8",oneByContract.getLetteringInfo());//鍗板瓧淇℃伅
- batchInfoMap.put("ATTR23","杞﹂棿璁㈠崟");//鍏ュ簱鏉ユ簮
- batchInfoMap.put("ATTR24","0");//鍒嗗壊棰勭暀鏁伴噺
- batchInfoMap.put("ACTION_TYPE",actionType);//鎿嶄綔绫诲瀷
- inAttrMap.put("BATCH_INFO", Collections.singletonList(batchInfoMap));
- Result result = ifsApiUtils.importPartLotAttr(ContractType.KJNS.getValue(), JSONUtil.toJsonStr(inAttrMap));
- if(result.getCode()!=200){
- throw new RuntimeException("搴撳瓨鐗╂枡鎵规灞炴�ф洿鏂板け璐ワ細"+result.getMessage());
+ //鏌ヨifs鎵规灞炴�ц褰曪紝鏈夊垯鏇存柊娌℃湁鍒欐柊澧�
+ Map<String, Object> queryMap = new HashMap<>();
+ queryMap.put("LOT_BATCH_NO",ifsInventoryQuantity.getUpdateBatchNo());
+ queryMap.put("PART_NO",ifsInventoryQuantity.getPartNo());
+ Result queryPartLotResult = ifsApiUtils.queryPartLotAttr(ContractType.KJNS.getValue(), JSONUtil.toJsonStr(queryMap));
+ if(queryPartLotResult.getCode()==200){
+ JSONObject entries = JSONUtil.parseObj(queryPartLotResult.getData());
+ JSONArray listInfo = entries.getJSONArray("LIST_INFO");
+ //濡傛灉璁㈠崟鏄疜JNS鍩熺殑澶栬喘璁㈠崟锛屽厤妫�鏃跺悓姝TNS鍩熺殑IFS鎵规灞炴��
+ if(StringUtils.equals(ContractType.KJNS.getValue(),ifsInventoryQuantity.getContract()) && StringUtils.equals(OrderType.WG.getValue(),
+ outsourceOrderFlowService.resolve(ifsInventoryQuantity.getOrderType(), ifsInventoryQuantity.getMaterialProp()))){
+ //鏌ヨZTNS鍩熺殑鐩稿悓鎵规璁㈠崟娑堟伅
+ IfsInventoryQuantityDto ifsInventoryQuantityDto = new IfsInventoryQuantityDto();
+ BeanUtil.copyProperties(ifsInventoryQuantity,ifsInventoryQuantityDto);
+ ifsInventoryQuantityDto.setContract(ContractType.ZTNS.getValue());
+ IfsPartPropsRecordDTO oneByContract = ifsPartPropsRecordService.getOneByContract(ifsInventoryQuantityDto);
+ if(Objects.nonNull(oneByContract)){
+ //鏇存柊IFS鎵规灞炴��
+ Map<String, Object> inAttrMap = new HashMap<>();
+ String actionType = listInfo.isEmpty()?"New":"Modify";
+ inAttrMap.put("RECORD_ID", UUID.randomUUID().toString());
+ inAttrMap.put("SYSCODE", "LIMS");
+ inAttrMap.put("SYSMODEL", "搴撳瓨鐗╂枡鎵规灞炴�т慨鏀�");
+ HashMap<String, Object> batchInfoMap = new HashMap<>();
+ batchInfoMap.put("CONTRACT",ContractType.KJNS.getValue());//鍩�
+ batchInfoMap.put("PART_NO",oneByContract.getPartNo());//闆朵欢鍙�
+ batchInfoMap.put("LOT_BATCH_NO",oneByContract.getLotBatchNo());//鎵规鍙�
+ batchInfoMap.put("ATTR1",oneByContract.getDrumNo());//杞藉叿缂栧彿
+ batchInfoMap.put("ATTR2",oneByContract.getStartMeterMark().toString());//璧峰绫虫爣
+ batchInfoMap.put("ATTR3",oneByContract.getEndMeterMark().toString());//鎴绫虫爣
+ batchInfoMap.put("ATTR4", oneByContract.getOuterColor());//澶栨姢棰滆壊
+ batchInfoMap.put("ATTR5",oneByContract.getInsulationColor());//缁濈紭棰滆壊
+ batchInfoMap.put("ATTR8",oneByContract.getLetteringInfo());//鍗板瓧淇℃伅
+ batchInfoMap.put("ATTR23","杞﹂棿璁㈠崟");//鍏ュ簱鏉ユ簮
+ batchInfoMap.put("ATTR24","0");//鍒嗗壊棰勭暀鏁伴噺
+ batchInfoMap.put("ACTION_TYPE",actionType);//鎿嶄綔绫诲瀷
+ inAttrMap.put("BATCH_INFO", Collections.singletonList(batchInfoMap));
+ Result result = ifsApiUtils.importPartLotAttr(ContractType.KJNS.getValue(), JSONUtil.toJsonStr(inAttrMap));
+ if(result.getCode()!=200){
+ throw new RuntimeException("搴撳瓨鐗╂枡鎵规灞炴�ф洿鏂板け璐ワ細"+result.getMessage());
+ }
+ log.info("KJNS鍩熷璐鍗曞厤妫�鍚屾搴撳瓨鐗╂枡鎵规灞炴�у埌IFS->{}", result);
+ oneByContract.setId(null);
+ oneByContract.setIfsInventoryId(ifsInventoryId);
+ ifsPartPropsRecordService.save(oneByContract);
}
}
- ifsPartPropsRecordService.save(oneByContract);
}
}
}
--
Gitblit v1.9.3