package com.glxp.api.service.collect; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.github.pagehelper.PageHelper; import com.glxp.api.dao.collect.IoCollectCodeBackMapper; import com.glxp.api.entity.collect.*; import com.glxp.api.req.collect.CollectOrderBizRequest; import com.glxp.api.req.collect.IoCollectCodeRequest; import com.glxp.api.res.basic.UdiRelevanceResponse; import com.glxp.api.res.collect.CollectOrderBizResponse; import com.glxp.api.res.collect.IoCollectCodeResponse; import com.glxp.api.service.basic.UdiRelevanceService; import com.glxp.api.util.IntUtil; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.stream.Collectors; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.glxp.api.dao.collect.IoCollectCodeMapper; import org.springframework.transaction.annotation.Isolation; import org.springframework.transaction.annotation.Transactional; @Service public class IoCollectCodeService extends ServiceImpl { @Resource IoCollectOrderCodeAutoService collectOrderCodeAutoService; @Resource IoCollectOrderCodeManService collectOrderCodeManService; @Resource IoCollectOrderBizService collectOrderBizService; @Resource IoCollectOrderService collectOrderService; /** * 追溯码查询 * * @param ioCollectCodeRequest * @return */ public List filterList(IoCollectCodeRequest ioCollectCodeRequest) { if (ioCollectCodeRequest == null) { return Collections.emptyList(); } if (ioCollectCodeRequest.getPage() != null) { int offset = (ioCollectCodeRequest.getPage() - 1) * ioCollectCodeRequest.getLimit(); PageHelper.offsetPage(offset, ioCollectCodeRequest.getLimit()); } return super.baseMapper.filterList(ioCollectCodeRequest); } /** * 根据单号插入扫码明细 */ @Transactional(rollbackFor = Exception.class, isolation = Isolation.READ_COMMITTED) public void insertCodesByBill(String billNo,Integer isCheckFinish) { IoCollectOrder collectOrder = collectOrderService.getByBillNo(billNo); CollectOrderBizRequest collectOrderBizRequest = new CollectOrderBizRequest(); collectOrderBizRequest.setOrderIdFk(billNo); if (isCheckFinish != null){ collectOrderBizRequest.setIsOrderCheck(isCheckFinish); } List list = collectOrderBizService.filterList(collectOrderBizRequest); List splitCodes = collectOrderCodeAutoService.listByBillNo(collectOrderBizRequest.getOrderIdFk(), 1); List unSplitCodes = collectOrderCodeAutoService.listByBillNo(collectOrderBizRequest.getOrderIdFk(), 2); List manList = collectOrderCodeManService.listByBillNo(collectOrderBizRequest.getOrderIdFk()); // 码表插入采购类型 //如果是器械使用清单 标记io_collect_code_backup 码为已使用 已经有这个码根据订单号可能查到的不是同一个 for (CollectOrderBizResponse collectOrderBiz : list) { List temp1 = manList.stream() .filter(obj -> obj.getBizIdFk().equals(collectOrderBiz.getId())) .collect(Collectors.toList()); List temp2 = splitCodes.stream() .filter(obj -> obj.getBizIdFk().equals(collectOrderBiz.getId())) .collect(Collectors.toList()); List temp3 = unSplitCodes.stream() .filter(obj -> obj.getBizIdFk().equals(collectOrderBiz.getId())) .collect(Collectors.toList()); if (CollUtil.isNotEmpty(temp1)) { saveManuCode(temp1, collectOrder); } if (CollUtil.isNotEmpty(temp2)) { saveSplitCode(temp2, collectOrder); } if (CollUtil.isNotEmpty(temp3)) { saveUnSplitCode(temp3, collectOrder); } } } @Resource IoCollectCodeBackService collectCodeBackService; @Resource UdiRelevanceService udiRelevanceService; public void saveManuCode(List manList, IoCollectOrder collectOrder) { if (CollUtil.isEmpty(manList)) return; List ioCollectCodes = new ArrayList<>(); for (IoCollectOrderCodeMan ioCollectOrderCodeMan : manList) { //查询采购类型 UdiRelevanceResponse udiRelevanceResponse = udiRelevanceService.selectByRelId(ioCollectOrderCodeMan.getRelId() + ""); IoCollectCodeBackup collectCodeBackup = IoCollectCodeBackup.builder().code(ioCollectOrderCodeMan.getUdiCode()) .fromType(collectOrder.getFromType()) .busType(collectOrder.getBusType()) .billNo(collectOrder.getBillNo()) .fromCorp(collectOrder.getFromCorp()) .operTime(collectOrder.getUpdateTime()) .operUser(collectOrder.getCreateUser()) .fifoSplit(3) .workPlaceCode(collectOrder.getWorkPlaceCode()) .relId(ioCollectOrderCodeMan.getRelId()) .remark(collectOrder.getRemark()) .purType(udiRelevanceResponse.getPurType()) .inBatchNo(System.currentTimeMillis()).build(); if (IntUtil.value(ioCollectOrderCodeMan.getIsSplitCode())) { collectCodeBackup.setFifoSplit(4); } ioCollectCodes.add(collectCodeBackup); } collectCodeBackService.saveBatch(ioCollectCodes); } public void saveSplitCode(List codeAutoList, IoCollectOrder collectOrder) { if (CollUtil.isEmpty(codeAutoList)) return; List ioCollectCodes = new ArrayList<>(); for (IoCollectOrderCodeAuto collectOrderCodeAuto : codeAutoList) { UdiRelevanceResponse udiRelevanceResponse = udiRelevanceService.selectByRelId(collectOrderCodeAuto.getRelId() + ""); ioCollectCodes.add(IoCollectCodeBackup.builder().code(collectOrderCodeAuto.getUdiCode()) .fromType(collectOrder.getFromType()) .busType(collectOrder.getBusType()) .billNo(collectOrder.getBillNo()) .fromCorp(collectOrder.getFromCorp()) .operTime(collectOrder.getUpdateTime()) .operUser(collectOrder.getCreateUser()) .fifoSplit(1) .relId(collectOrderCodeAuto.getRelId()) .workPlaceCode(collectOrder.getWorkPlaceCode()) .remark(collectOrder.getRemark()) .purType(udiRelevanceResponse.getPurType()) .inBatchNo(System.currentTimeMillis()).build()); } collectCodeBackService.saveBatch(ioCollectCodes); } public void saveUnSplitCode(List codeAutoList, IoCollectOrder collectOrder) { if (CollUtil.isEmpty(codeAutoList)) return; List ioCollectCodes = new ArrayList<>(); for (IoCollectOrderCodeAuto collectOrderCodeAuto : codeAutoList) { UdiRelevanceResponse udiRelevanceResponse = udiRelevanceService.selectByRelId(collectOrderCodeAuto.getRelId() + ""); ioCollectCodes.add(IoCollectCodeBackup.builder().code(collectOrderCodeAuto.getUdiCode()) .fromType(collectOrder.getFromType()) .busType(collectOrder.getBusType()) .billNo(collectOrder.getBillNo()) .fromCorp(collectOrder.getFromCorp()) .operTime(collectOrder.getUpdateTime()) .operUser(collectOrder.getCreateUser()) .fifoSplit(2) .relId(collectOrderCodeAuto.getRelId()) .workPlaceCode(collectOrder.getWorkPlaceCode()) .remark(collectOrder.getRemark()) .purType(udiRelevanceResponse.getPurType()) .inBatchNo(System.currentTimeMillis()).build()); } collectCodeBackService.saveBatch(ioCollectCodes); } }