package com.ruoyi.inspect.aspect; import cn.hutool.core.bean.BeanUtil; import cn.hutool.json.JSONUtil; import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.ruoyi.basic.dto.IfsInventoryQuantityDto; import com.ruoyi.basic.mapper.IfsInventoryQuantityMapper; import com.ruoyi.basic.pojo.IfsInventoryQuantity; import com.ruoyi.common.core.domain.Result; import com.ruoyi.common.enums.ContractType; import com.ruoyi.common.enums.OrderType; import com.ruoyi.common.utils.api.IfsApiUtils; import com.ruoyi.inspect.dto.IfsPartPropsRecordDTO; import com.ruoyi.inspect.service.IfsPartPropsRecordService; import com.ruoyi.inspect.service.IfsSplitOrderRecordService; import lombok.extern.slf4j.Slf4j; import org.aspectj.lang.JoinPoint; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Before; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Isolation; import org.springframework.transaction.annotation.Transactional; import java.util.*; /** * 外购下单:KJNS域订单免检后,查询ZTNS域相同订单的批次属性并推送到IFS */ @Aspect @Slf4j @Component public class PushIfsPartPropsRecordAspect { @Autowired private IfsInventoryQuantityMapper ifsInventoryQuantityMapper; @Autowired private IfsApiUtils ifsApiUtils; @Autowired private IfsPartPropsRecordService ifsPartPropsRecordService; @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); //如果订单是KJNS域的外购订单,免检时同步ZTNS域的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 inAttrMap = new HashMap<>(); String actionType = "New"; inAttrMap.put("RECORD_ID", UUID.randomUUID().toString()); inAttrMap.put("SYSCODE", "LIMS"); inAttrMap.put("SYSMODEL", "库存物料批次属性修改"); HashMap 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()); } } ifsPartPropsRecordService.save(oneByContract); } } } }