You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
187 lines
8.5 KiB
Java
187 lines
8.5 KiB
Java
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<IoCollectCodeMapper, IoCollectCode> {
|
|
|
|
|
|
@Resource
|
|
IoCollectOrderCodeAutoService collectOrderCodeAutoService;
|
|
@Resource
|
|
IoCollectOrderCodeManService collectOrderCodeManService;
|
|
@Resource
|
|
IoCollectOrderBizService collectOrderBizService;
|
|
@Resource
|
|
IoCollectOrderService collectOrderService;
|
|
|
|
|
|
/**
|
|
* 追溯码查询
|
|
*
|
|
* @param ioCollectCodeRequest
|
|
* @return
|
|
*/
|
|
public List<IoCollectCodeResponse> 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<CollectOrderBizResponse> list = collectOrderBizService.filterList(collectOrderBizRequest);
|
|
List<IoCollectOrderCodeAuto> splitCodes = collectOrderCodeAutoService.listByBillNo(collectOrderBizRequest.getOrderIdFk(), 1);
|
|
List<IoCollectOrderCodeAuto> unSplitCodes = collectOrderCodeAutoService.listByBillNo(collectOrderBizRequest.getOrderIdFk(), 2);
|
|
List<IoCollectOrderCodeMan> manList = collectOrderCodeManService.listByBillNo(collectOrderBizRequest.getOrderIdFk());
|
|
// 码表插入采购类型
|
|
//如果是器械使用清单 标记io_collect_code_backup 码为已使用 已经有这个码根据订单号可能查到的不是同一个
|
|
for (CollectOrderBizResponse collectOrderBiz : list) {
|
|
List<IoCollectOrderCodeMan> temp1 = manList.stream()
|
|
.filter(obj -> obj.getBizIdFk().equals(collectOrderBiz.getId()))
|
|
.collect(Collectors.toList());
|
|
List<IoCollectOrderCodeAuto> temp2 = splitCodes.stream()
|
|
.filter(obj -> obj.getBizIdFk().equals(collectOrderBiz.getId()))
|
|
.collect(Collectors.toList());
|
|
List<IoCollectOrderCodeAuto> 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<IoCollectOrderCodeMan> manList, IoCollectOrder collectOrder) {
|
|
if (CollUtil.isEmpty(manList))
|
|
return;
|
|
List<IoCollectCodeBackup> 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<IoCollectOrderCodeAuto> codeAutoList, IoCollectOrder collectOrder) {
|
|
if (CollUtil.isEmpty(codeAutoList))
|
|
return;
|
|
List<IoCollectCodeBackup> 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<IoCollectOrderCodeAuto> codeAutoList, IoCollectOrder collectOrder) {
|
|
if (CollUtil.isEmpty(codeAutoList))
|
|
return;
|
|
List<IoCollectCodeBackup> 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);
|
|
}
|
|
|
|
}
|