| | |
| | | package com.ruoyi.inspect.service.impl; |
| | | |
| | | import cn.hutool.core.util.ObjectUtil; |
| | | import cn.hutool.json.JSONArray; |
| | | import cn.hutool.json.JSONObject; |
| | | import cn.hutool.json.JSONUtil; |
| | | import com.alibaba.fastjson2.TypeReference; |
| | | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | 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 lombok.extern.slf4j.Slf4j; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Isolation; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.util.*; |
| | | |
| | | /** |
| | |
| | | @Autowired |
| | | private IfsSplitOrderRecordMapper ifsSplitOrderRecordMapper; |
| | | |
| | | @Value("${ifs.contract}") |
| | | public String contract; |
| | | @Autowired |
| | | private IfsPartPropsRecordMapper ifsPartPropsRecordMapper; |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | |
| | | if(Objects.isNull(ifsPartPropsRecord)){ |
| | | throw new RuntimeException("参数不能为空"); |
| | | } |
| | | //查询是否已有同批次同零件号的批次属性,没有才更新 |
| | | Long count = baseMapper.selectCountByPartNoAndLotBatchNo(ifsPartPropsRecord.getPartNo(),ifsPartPropsRecord.getLotBatchNo()); |
| | | if(count==0){ |
| | | //判断是新增还是更新 |
| | | String actionType = Objects.isNull(ifsPartPropsRecord.getId())?"New":"Modify"; |
| | | Map<String, Object> inAttrMap = new HashMap<>(); |
| | | inAttrMap.put("RECORD_ID", UUID.randomUUID().toString()); |
| | | inAttrMap.put("SYSCODE", "LIMS"); |
| | | inAttrMap.put("SYSMODEL", "库存物料批次属性修改"); |
| | | HashMap<String, Object> batchInfoMap = new HashMap<>(); |
| | | batchInfoMap.put("CONTRACT",contract);//域 |
| | | batchInfoMap.put("PART_NO",ifsPartPropsRecord.getPartNo());//零件号 |
| | | batchInfoMap.put("LOT_BATCH_NO",ifsPartPropsRecord.getLotBatchNo());//批次号 |
| | | batchInfoMap.put("ATTR1",ifsPartPropsRecord.getDrumNo());//载具编号 |
| | | batchInfoMap.put("ATTR2",ifsPartPropsRecord.getStartMeterMark().toString());//起始米标 |
| | | batchInfoMap.put("ATTR3",ifsPartPropsRecord.getEndMeterMark().toString());//截止米标 |
| | | batchInfoMap.put("ATTR4", ifsPartPropsRecord.getOuterColor());//外护颜色 |
| | | batchInfoMap.put("ATTR5",ifsPartPropsRecord.getInsulationColor());//绝缘颜色 |
| | | batchInfoMap.put("ATTR8",ifsPartPropsRecord.getLetteringInfo());//印字信息 |
| | | batchInfoMap.put("ATTR23","车间订单");//入库来源 |
| | | batchInfoMap.put("ATTR24","0");//分割预留数量 |
| | | batchInfoMap.put("ACTION_TYPE",actionType);//操作类型 |
| | | inAttrMap.put("BATCH_INFO", Collections.singletonList(batchInfoMap)); |
| | | Result result = ifsApiUtils.importPartLotAttr(JSONUtil.toJsonStr(inAttrMap)); |
| | | if(result.getCode()!=200){ |
| | | throw new RuntimeException("库存物料批次属性更新失败:"+result.getMessage()); |
| | | } |
| | | //判断是新增还是更新 |
| | | String actionType = Objects.isNull(ifsPartPropsRecord.getId())?"New":"Modify"; |
| | | Map<String, Object> inAttrMap = new HashMap<>(); |
| | | inAttrMap.put("RECORD_ID", UUID.randomUUID().toString()); |
| | | inAttrMap.put("SYSCODE", "LIMS"); |
| | | inAttrMap.put("SYSMODEL", "库存物料批次属性修改"); |
| | | HashMap<String, Object> batchInfoMap = new HashMap<>(); |
| | | batchInfoMap.put("CONTRACT",ifsPartPropsRecord.getContract());//域 |
| | | batchInfoMap.put("PART_NO",ifsPartPropsRecord.getPartNo());//零件号 |
| | | batchInfoMap.put("LOT_BATCH_NO",ifsPartPropsRecord.getLotBatchNo());//批次号 |
| | | batchInfoMap.put("ATTR1",ifsPartPropsRecord.getDrumNo());//载具编号 |
| | | batchInfoMap.put("ATTR2",ifsPartPropsRecord.getStartMeterMark().toString());//起始米标 |
| | | batchInfoMap.put("ATTR3",ifsPartPropsRecord.getEndMeterMark().toString());//截止米标 |
| | | batchInfoMap.put("ATTR4", ifsPartPropsRecord.getOuterColor());//外护颜色 |
| | | batchInfoMap.put("ATTR5",ifsPartPropsRecord.getInsulationColor());//绝缘颜色 |
| | | batchInfoMap.put("ATTR8",ifsPartPropsRecord.getLetteringInfo());//印字信息 |
| | | batchInfoMap.put("ATTR23","车间订单");//入库来源 |
| | | batchInfoMap.put("ATTR24","0");//分割预留数量 |
| | | batchInfoMap.put("ACTION_TYPE",actionType);//操作类型 |
| | | inAttrMap.put("BATCH_INFO", Collections.singletonList(batchInfoMap)); |
| | | Result result = ifsApiUtils.importPartLotAttr(ifsPartPropsRecord.getContract(),JSONUtil.toJsonStr(inAttrMap)); |
| | | if(result.getCode()!=200){ |
| | | throw new RuntimeException("库存物料批次属性更新失败:"+result.getMessage()); |
| | | } |
| | | return this.saveOrUpdate(ifsPartPropsRecord); |
| | | } |
| | | |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class,isolation = Isolation.READ_COMMITTED) |
| | | public IfsPartPropsRecord getOneByIfsId(Long ifsId) { |
| | | //查询ifs订单信息 |
| | | IfsInventoryQuantity ifsInventoryQuantity = ifsInventoryQuantityMapper.selectById(ifsId); |
| | |
| | | ifsPartPropsRecord.setLetteringInfo(splitRecord.getLetteringInfo()); |
| | | ifsPartPropsRecord.setInsulationColor(splitRecord.getInsulationColor()); |
| | | ifsPartPropsRecord.setOuterColor(splitRecord.getOuterColor()); |
| | | ifsPartPropsRecord.setDrumNo(splitRecord.getDrumNo()); |
| | | ifsPartPropsRecord.setDrumNo(splitRecord.getDrumNo()); |
| | | return ifsPartPropsRecord; |
| | | } |
| | | return this.getOne(Wrappers.<IfsPartPropsRecord>lambdaQuery().eq(IfsPartPropsRecord::getIfsInventoryId,ifsId).last("limit 1")); |
| | | //查询批次属性记录 |
| | | IfsPartPropsRecord propsRecord = this.getOne(Wrappers.<IfsPartPropsRecord>lambdaQuery().eq(IfsPartPropsRecord::getIfsInventoryId, ifsId).last("limit 1")); |
| | | if(ObjectUtil.isNotEmpty(propsRecord)){ |
| | | return propsRecord; |
| | | } |
| | | //查询ifs批次属性记录,有就先新增到数据库 |
| | | Map<String, Object> queryMap = new HashMap<>(); |
| | | queryMap.put("LOT_BATCH_NO",ifsInventoryQuantity.getUpdateBatchNo()); |
| | | queryMap.put("PART_NO",ifsInventoryQuantity.getPartNo()); |
| | | Result queryPartLotResult = ifsApiUtils.queryPartLotAttr(ifsInventoryQuantity.getContract(), JSONUtil.toJsonStr(queryMap)); |
| | | if(queryPartLotResult.getCode()==200){ |
| | | JSONObject entries = JSONUtil.parseObj(queryPartLotResult.getData()); |
| | | JSONArray listInfo = entries.getJSONArray("LIST_INFO"); |
| | | if(!listInfo.isEmpty()){ |
| | | Map<String,Object> parseObject = com.alibaba.fastjson2.JSONObject.parseObject(JSONUtil.toJsonStr(listInfo.get(0)), new TypeReference<Map<String, Object>>() {}.getType()); |
| | | IfsPartPropsRecord ifsPartPropsRecord = new IfsPartPropsRecord(); |
| | | ifsPartPropsRecord.setIfsInventoryId(ifsInventoryQuantity.getId());//ifs订单id |
| | | ifsPartPropsRecord.setDrumNo(parseObject.get("ATTR1").toString());//载具编号 |
| | | BigDecimal startMeterMark = new BigDecimal(parseObject.get("ATTR2").toString()); |
| | | BigDecimal endMeterMark = new BigDecimal(parseObject.get("ATTR3").toString()); |
| | | ifsPartPropsRecord.setStartMeterMark(startMeterMark);//起始米标 |
| | | ifsPartPropsRecord.setEndMeterMark(endMeterMark);//截止米标 |
| | | ifsPartPropsRecord.setOuterColor(parseObject.get("ATTR4").toString());//外护颜色 |
| | | ifsPartPropsRecord.setInsulationColor(parseObject.get("ATTR5").toString());//绝缘颜色 |
| | | ifsPartPropsRecord.setLetteringInfo(parseObject.get("ATTR8").toString());//印字信息 |
| | | ifsPartPropsRecordMapper.insert(ifsPartPropsRecord); |
| | | } |
| | | } |
| | | return this.getOne(Wrappers.<IfsPartPropsRecord>lambdaQuery().eq(IfsPartPropsRecord::getIfsInventoryId, ifsId).last("limit 1")); |
| | | } |
| | | |
| | | @Override |
| | | public IfsPartPropsRecordDTO getOneByContract(IfsInventoryQuantityDto ifsInventoryQuantityDto) { |
| | | return baseMapper.selectOneByContract(ifsInventoryQuantityDto); |
| | | } |
| | | } |
| | | |