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.
udi-wms-java/src/main/java/com/glxp/api/service/collect/IoCollectOrderService.java

606 lines
30 KiB
Java

package com.glxp.api.service.collect;
11 months ago
import cn.hutool.core.collection.CollUtil;
10 months ago
import cn.hutool.core.lang.Assert;
import cn.hutool.core.thread.ThreadUtil;
11 months ago
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
11 months ago
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.pagehelper.PageHelper;
import com.glxp.api.constant.Constant;
import com.glxp.api.constant.ConstantStatus;
import com.glxp.api.constant.ConstantType;
import com.glxp.api.dao.collect.IoCollectOrderMapper;
import com.glxp.api.dao.inout.IoCodeTempDao;
11 months ago
import com.glxp.api.entity.auth.SysWorkplace;
import com.glxp.api.entity.basic.*;
import com.glxp.api.entity.collect.IoCollectOrder;
11 months ago
import com.glxp.api.entity.collect.IoCollectOrderBiz;
11 months ago
import com.glxp.api.entity.collect.IoCollectOrderCodeAuto;
11 months ago
import com.glxp.api.entity.collect.IoCollectOrderCodeMan;
import com.glxp.api.entity.inout.IoCodeTempEntity;
11 months ago
import com.glxp.api.entity.inout.IoOrderDetailBizEntity;
11 months ago
import com.glxp.api.entity.inout.IoOrderEntity;
10 months ago
import com.glxp.api.entity.inout.IoSplitFifoInv;
import com.glxp.api.entity.inv.InvCountOrderDetailEntity;
import com.glxp.api.entity.inv.InvCountOrderEntity;
import com.glxp.api.entity.inv.InvCountSettingEntity;
11 months ago
import com.glxp.api.exception.JsonException;
import com.glxp.api.req.basic.FilterUdiRelRequest;
11 months ago
import com.glxp.api.req.collect.CollectOrderBizRequest;
import com.glxp.api.req.collect.CollectOrderRequest;
11 months ago
import com.glxp.api.req.inout.DeleteTageCodeRequest;
11 months ago
import com.glxp.api.req.inout.FilterOrderRequest;
11 months ago
import com.glxp.api.res.basic.SysWorkplaceResponse;
11 months ago
import com.glxp.api.res.basic.UdiRelevanceResponse;
11 months ago
import com.glxp.api.res.collect.CollectOrderBizResponse;
import com.glxp.api.res.collect.IoCollectOrderResponse;
11 months ago
import com.glxp.api.res.inout.IoOrderResponse;
11 months ago
import com.glxp.api.service.auth.SysWorkplaceService;
11 months ago
import com.glxp.api.service.basic.*;
import com.glxp.api.service.inout.*;
11 months ago
import com.glxp.api.service.inout.impl.IoCodeService;
import com.glxp.api.util.*;
import com.glxp.api.util.udi.FilterUdiUtils;
10 months ago
import com.glxp.api.util.udi.UdiCalCountUtil;
11 months ago
import org.springframework.beans.BeanUtils;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
11 months ago
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
11 months ago
import java.util.*;
10 months ago
import java.util.stream.Collectors;
@Service
public class IoCollectOrderService extends ServiceImpl<IoCollectOrderMapper, IoCollectOrder> {
@Resource
IoCollectOrderMapper collectOrderMapper;
11 months ago
@Resource
IoCollectOrderCodeManService ioCollectOrderCodeManService;
11 months ago
@Resource
IoOrderService orderService;
@Resource
IoOrderDetailBizService orderDetailBizService;
@Resource
IoCollectOrderBizService collectOrderBizService;
@Resource
UdiRelevanceService udiRelevanceService;
@Resource
BasicSkPrescribeService basicSkPrescribeService;
@Resource
BasicSkPrescirbeDetailService basicSkPrescirbeDetailService;
@Resource
IoOrderDetailBizService orderDetailCodeService;
@Resource
IoCodeTempService codeTempService;
@Resource
IoCodeService codeService;
@Resource
SysWorkplaceService sysWorkplaceService;
@Resource
SysWorkplaceDocumentService sysWorkplaceDocumentService;
10 months ago
@Resource
IoSplitFifoCodeService splitFifoCodeService;
@Resource
IoCollectOrderCodeAutoService collectOrderCodeAutoService;
@Resource
IoCollectOrderCodeManService collectOrderCodeManService;
@Resource
IoCollectCodeService collectCodeService;
10 months ago
@Resource
UdiCalCountUtil udiCalCountUtil;
public IoCollectOrder getByBillNo(String billNo) {
return collectOrderMapper.selectOne(new LambdaQueryWrapper<IoCollectOrder>().eq(IoCollectOrder::getBillNo, billNo).last("limit 1"));
}
11 months ago
public int updateByBillNo(IoCollectOrder collectOrder) {
return collectOrderMapper.update(collectOrder, new UpdateWrapper<IoCollectOrder>().eq("billNo", collectOrder.getBillNo()));
}
public List<IoCollectOrderResponse> filterList(CollectOrderRequest collectOrderRequest) {
if (collectOrderRequest == null) {
return Collections.emptyList();
}
if (collectOrderRequest.getPage() != null) {
int offset = (collectOrderRequest.getPage() - 1) * collectOrderRequest.getLimit();
PageHelper.offsetPage(offset, collectOrderRequest.getLimit());
}
List<IoCollectOrderResponse> data = collectOrderMapper.filterList(collectOrderRequest);
return data;
}
11 months ago
public List<CollectOrderBizResponse> combieOrderDetail(CollectOrderBizRequest collectOrderBizRequest) {
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());
List<CollectOrderBizResponse> collectOrderBizResponses = new ArrayList<>();
for (CollectOrderBizResponse collectOrderBiz : list) {
CollectOrderBizResponse collectOrderBizResponse = new CollectOrderBizResponse();
BeanUtils.copyProperties(collectOrderBiz, collectOrderBizResponse);
//拆零
for (IoCollectOrderCodeAuto collectOrderCodeAuto : splitCodes) {
10 months ago
if (IntUtil.value(collectOrderCodeAuto.getBizIdFk()) == IntUtil.value(collectOrderBiz.getId())) {
11 months ago
collectOrderBizResponse.setSplitUdiCode(StrUtil.trimToEmpty(collectOrderBizResponse.getSplitUdiCode()) + "," + collectOrderCodeAuto.getUdiCode());
}
}
if (StrUtil.isNotEmpty(collectOrderBizResponse.getSplitUdiCode())) {
collectOrderBizResponse.setSplitUdiCode(collectOrderBizResponse.getSplitUdiCode().substring(1));
}
//整取
for (IoCollectOrderCodeAuto collectOrderCodeAuto : unSplitCodes) {
10 months ago
if (IntUtil.value(collectOrderCodeAuto.getBizIdFk()) == IntUtil.value(collectOrderBiz.getId())) {
11 months ago
collectOrderBizResponse.setUnSplitUdiCode(StrUtil.trimToEmpty(collectOrderBizResponse.getUnSplitUdiCode()) + "," + collectOrderCodeAuto.getUdiCode());
}
}
if (StrUtil.isNotEmpty(collectOrderBizResponse.getUnSplitUdiCode())) {
collectOrderBizResponse.setUnSplitUdiCode(collectOrderBizResponse.getUnSplitUdiCode().substring(1));
}
//手动
for (IoCollectOrderCodeMan collectOrderCodeMan : manList) {
if (IntUtil.value(collectOrderCodeMan.getBizIdFk()) == IntUtil.value(collectOrderBiz.getId())) {
collectOrderBizResponse.setScanUdiCode(StrUtil.trimToEmpty(collectOrderBizResponse.getScanUdiCode()) + "," + collectOrderCodeMan.getUdiCode());
}
}
if (StrUtil.isNotEmpty(collectOrderBizResponse.getScanUdiCode())) {
collectOrderBizResponse.setScanUdiCode(collectOrderBizResponse.getScanUdiCode().substring(1));
}
if (StrUtil.isNotEmpty(collectOrderBizResponse.getScanUdiCode())) {
collectOrderBizResponse.setFinishUdiCode(collectOrderBizResponse.getScanUdiCode());
} else if (StrUtil.isNotEmpty(collectOrderBizResponse.getSplitUdiCode())) {
collectOrderBizResponse.setFinishUdiCode(collectOrderBizResponse.getSplitUdiCode());
} else if (StrUtil.isNotEmpty(collectOrderBizResponse.getUnSplitUdiCode())) {
collectOrderBizResponse.setFinishUdiCode(collectOrderBizResponse.getUnSplitUdiCode());
}
collectOrderBizResponses.add(collectOrderBizResponse);
}
return collectOrderBizResponses;
}
11 months ago
/**
*
*/
public void importOrder() {
11 months ago
importUdi();
importPrescribe();
}
public void clearOrder() {
collectOrderMapper.clearOrder();
11 months ago
List<IoOrderEntity> orderEntities = new ArrayList<>();
List<IoOrderEntity> orderEntities1 = orderService.findAllByAction("SC72197936495755");
List<IoOrderEntity> orderEntities2 = orderService.findAllByAction("SC72249388338364");
orderEntities.addAll(orderEntities1);
orderEntities.addAll(orderEntities2);
orderEntities.parallelStream().forEach(item ->
{
List<String> delBillNos = new ArrayList<>();
delBillNos.add(item.getBillNo());
orderService.deleteInvByBillNo(delBillNos);
for (String billNo : delBillNos) {
orderService.deleteByBillNo(billNo);
orderDetailBizService.deleteByOrderId(billNo);
orderDetailCodeService.deleteByOrderId(billNo);
codeTempService.deleteByBillNo(billNo);
codeService.deleteCodeByOrderId(billNo);
}
}
);
11 months ago
}
11 months ago
11 months ago
public void importUdi() {
//下载UDI内部单据
11 months ago
FilterOrderRequest filterOrderRequest = new FilterOrderRequest();
11 months ago
filterOrderRequest.setStatus(7);
filterOrderRequest.setProductType(null);
11 months ago
List<IoOrderResponse> list = orderService.filterList(filterOrderRequest);
11 months ago
List<IoCollectOrder> collectOrderList = new ArrayList<>();
10 months ago
List<SysWorkplaceResponse> allWorksList = new ArrayList<>();
11 months ago
for (IoOrderResponse ioOrderEntity : list) {
11 months ago
11 months ago
if (collectOrderMapper.exists(new LambdaQueryWrapper<IoCollectOrder>().eq(IoCollectOrder::getBillNo, ioOrderEntity.getBillNo()))) {
continue;
}
11 months ago
// BasicCollectBustypeEntity collectBustypeEntity = collectBustypeService.findByAddr(ioOrderEntity.getAction());
// if (collectBustypeEntity == null)
// continue;
11 months ago
SysWorkplaceDocumentEntity sysWorkplaceDocumentEntity = sysWorkplaceDocumentService.findByBusType(ioOrderEntity.getAction());
if (sysWorkplaceDocumentEntity == null)
continue;
11 months ago
List<SysWorkplaceResponse> sysWorkplaces = sysWorkplaceService.getAllByBusType(ioOrderEntity.getAction());
11 months ago
11 months ago
//自动分配工位
final Long[] defaultWorkplace = {null};
if (CollUtil.isNotEmpty(sysWorkplaces)) {
if (sysWorkplaces.size() == 1) {
defaultWorkplace[0] = sysWorkplaces.get(0).getWorkplaceId();
} else {
11 months ago
List<SysWorkplaceResponse> addWorkplace = new ArrayList<>();
for (SysWorkplaceResponse sysWorkplace : sysWorkplaces) {
11 months ago
//获取是否有正在处理的工位
List<IoCollectOrder> collectOrderList1 = collectOrderMapper.selectList(new LambdaQueryWrapper<IoCollectOrder>()
.eq(IoCollectOrder::getWorkPlaceCode, sysWorkplace.getWorkplaceId()).in(IoCollectOrder::getTagStatus, -1, 1, 2));
sysWorkplace.setOrderCount(collectOrderList1.size());
if (IntUtil.value(sysWorkplace.getOrderCount()) > 0) {
addWorkplace.add(sysWorkplace);
}
}
if (addWorkplace.size() > 0) {
11 months ago
Optional<SysWorkplaceResponse> minCountObject = addWorkplace.stream()
11 months ago
.min((o1, o2) -> Integer.compare(o1.getOrderCount(), o2.getOrderCount()));
minCountObject.ifPresent(sysWorkplace -> defaultWorkplace[0] = sysWorkplace.getWorkplaceId());
} else {
defaultWorkplace[0] = sysWorkplaces.get(0).getWorkplaceId();
}
}
}
11 months ago
IoCollectOrder collectOrder = IoCollectOrder.builder()
.billNo(ioOrderEntity.getBillNo())
11 months ago
.fromType("UDI系统")
.busType(ioOrderEntity.getAction())
11 months ago
.fromCorp(ioOrderEntity.getFromName())
11 months ago
.workPlaceCode(defaultWorkplace[0])
11 months ago
.billTime(ioOrderEntity.getCreateTime())
.createTime(ioOrderEntity.getCreateTime())
.createUser(ioOrderEntity.getCreateUser())
.updateTime(new Date())
10 months ago
.orderCirType(sysWorkplaceDocumentEntity.getOrderCirType())
11 months ago
.splitStatus(0)
.tagStatus(0)
.build();
11 months ago
if (collectOrder.getWorkPlaceCode() != null) {
collectOrder.setTagStatus(1);
}
11 months ago
11 months ago
collectOrderList.add(collectOrder);
List<IoOrderDetailBizEntity> orderDetailBizEntities = orderDetailBizService.findByOrderId(ioOrderEntity.getBillNo());
List<IoCollectOrderBiz> collectOrderBizs = new ArrayList<>();
for (IoOrderDetailBizEntity bizEntity : orderDetailBizEntities) {
11 months ago
UdiRelevanceResponse udiRelevanceResponse = udiRelevanceService.selectByRelId(bizEntity.getBindRlFk() + "");
11 months ago
IoCollectOrderBiz collectOrderBiz = IoCollectOrderBiz.builder().orderIdFk(collectOrder.getBillNo())
.relId(bizEntity.getBindRlFk())
11 months ago
.thrCode(udiRelevanceResponse.getMainId())
.ybbm(udiRelevanceResponse.getYbbm())
.payFeeCode(udiRelevanceResponse.getPayFeeCode())
11 months ago
.cpmctymc(bizEntity.getCoName())
.nameCode(bizEntity.getNameCode())
.ggxh(bizEntity.getSpec())
.batchNo(bizEntity.getBatchNo())
.productDate(bizEntity.getProductDate())
.expireDate(bizEntity.getExpireDate())
.count(bizEntity.getCount())
.measureUnit(bizEntity.getMeasname())
.tagStatus(1)
.unTagCount(bizEntity.getCount()).build();
11 months ago
if (IntUtil.value(udiRelevanceResponse.getProductsType()) == 2) {
collectOrderBiz.setGgxh(udiRelevanceResponse.getBzgg());
collectOrderBiz.setMeasureUnit(udiRelevanceResponse.getPrepnUnit());
}
11 months ago
collectOrderBizs.add(collectOrderBiz);
}
10 months ago
if (CollUtil.isNotEmpty(collectOrderBizs)) {
11 months ago
collectOrderBizService.saveBatch(collectOrderBizs);
10 months ago
}
allWorksList.addAll(sysWorkplaces);
11 months ago
}
11 months ago
if (CollUtil.isNotEmpty(collectOrderList)) {
11 months ago
saveBatch(collectOrderList);
11 months ago
}
// Map<Long, SysWorkplaceResponse> sysWorkplaceMap = new HashMap<>();
// for (SysWorkplaceResponse sysWorkplace : allWorksList) {
// sysWorkplaceMap.put(sysWorkplace.getId(), sysWorkplace);
// }
// for (SysWorkplaceResponse value : sysWorkplaceMap.values()) {
// splitFifoCodeService.preAllotInv(value.getWorkplaceId());
// }
11 months ago
}
11 months ago
10 months ago
11 months ago
public void importPrescribe() {
//下载处方
List<BasicSkPrescribeEntity> basicSkPrescribeEntities = basicSkPrescribeService.list();
10 months ago
List<SysWorkplaceResponse> allWorksList = new ArrayList<>();
11 months ago
List<IoCollectOrder> collectOrderList = new ArrayList<>();
for (BasicSkPrescribeEntity basicSkPrescribeEntity : basicSkPrescribeEntities) {
11 months ago
// BasicCollectBustypeEntity collectBustypeEntity = collectBustypeService.findByFromCode(String.valueOf(basicSkPrescribeEntity.getAddr()));
// if (collectBustypeEntity == null)
// continue;
11 months ago
if (collectOrderMapper.exists(new LambdaQueryWrapper<IoCollectOrder>().eq(IoCollectOrder::getBillNo, basicSkPrescribeEntity.getCode()))) {
continue;
}
11 months ago
SysWorkplaceDocumentEntity sysWorkplaceDocumentEntity = sysWorkplaceDocumentService.findByBusType(basicSkPrescribeEntity.getAddr());
if (sysWorkplaceDocumentEntity == null)
continue;
11 months ago
//自动分配工位
final Long[] defaultWorkplace = {null};
11 months ago
List<SysWorkplaceResponse> sysWorkplaces = sysWorkplaceService.getAllByBusType(basicSkPrescribeEntity.getAddr());
11 months ago
if (CollUtil.isNotEmpty(sysWorkplaces)) {
if (sysWorkplaces.size() == 1) {
defaultWorkplace[0] = sysWorkplaces.get(0).getWorkplaceId();
} else {
11 months ago
List<SysWorkplaceResponse> addWorkplace = new ArrayList<>();
for (SysWorkplaceResponse sysWorkplace : sysWorkplaces) {
11 months ago
//获取是否有正在处理的工位
List<IoCollectOrder> collectOrderList1 = collectOrderMapper.selectList(new LambdaQueryWrapper<IoCollectOrder>()
.eq(IoCollectOrder::getWorkPlaceCode, sysWorkplace.getWorkplaceId()).in(IoCollectOrder::getTagStatus, -1, 1, 2));
sysWorkplace.setOrderCount(collectOrderList1.size());
if (IntUtil.value(sysWorkplace.getOrderCount()) > 0) {
addWorkplace.add(sysWorkplace);
}
}
if (addWorkplace.size() > 0) {
11 months ago
Optional<SysWorkplaceResponse> minCountObject = addWorkplace.stream()
11 months ago
.min((o1, o2) -> Integer.compare(o1.getOrderCount(), o2.getOrderCount()));
minCountObject.ifPresent(sysWorkplace -> defaultWorkplace[0] = sysWorkplace.getWorkplaceId());
} else {
defaultWorkplace[0] = sysWorkplaces.get(0).getWorkplaceId();
}
}
}
11 months ago
IoCollectOrder collectOrder = IoCollectOrder.builder()
.billNo(basicSkPrescribeEntity.getCode())
11 months ago
.busType(sysWorkplaceDocumentEntity.getDocumentTypeCode())
.fromType("HIS系统")
11 months ago
.fromCorp(basicSkPrescribeEntity.getSickerCode())
11 months ago
.workPlaceCode(defaultWorkplace[0])
11 months ago
.billTime(MsDateUtil.localToDate(basicSkPrescribeEntity.getCreateTime()))
.createTime(new Date())
.createUser(basicSkPrescribeEntity.getCreateUser())
.updateTime(new Date())
10 months ago
.orderCirType(sysWorkplaceDocumentEntity.getOrderCirType())
11 months ago
.splitStatus(0)
.tagStatus(0)
.build();
11 months ago
if (collectOrder.getWorkPlaceCode() != null) {
collectOrder.setTagStatus(1);
}
11 months ago
collectOrderList.add(collectOrder);
List<BasicSkPrescribeItemEntity> basicSkPrescribeItemEntities = basicSkPrescirbeDetailService.findByPrescribeNum(basicSkPrescribeEntity.getCode());
List<IoCollectOrderBiz> collectOrderBizs = new ArrayList<>();
for (BasicSkPrescribeItemEntity bizEntity : basicSkPrescribeItemEntities) {
UdiRelevanceResponse udiRelevanceResponse = udiRelevanceService.selectByRelId(bizEntity.getRelId() + "");
IoCollectOrderBiz collectOrderBiz = IoCollectOrderBiz.builder().orderIdFk(collectOrder.getBillNo())
.relId(bizEntity.getRelId())
.thrCode(bizEntity.getItemCode())
.ybbm(udiRelevanceResponse.getYbbm())
.payFeeCode(udiRelevanceResponse.getPayFeeCode())
.cpmctymc(bizEntity.getItemName())
.nameCode(udiRelevanceResponse.getNameCode())
.ggxh(bizEntity.getGgxh())
.batchNo(bizEntity.getBatchNo())
.count(IntUtil.value(bizEntity.getMeasureCount()))
.measureUnit(bizEntity.getMeasureUnit())
.tagStatus(1)
.unTagCount(bizEntity.getCount()).build();
11 months ago
if (IntUtil.value(udiRelevanceResponse.getProductsType()) == 2) {
collectOrderBiz.setGgxh(udiRelevanceResponse.getBzgg());
collectOrderBiz.setMeasureUnit(udiRelevanceResponse.getPrepnUnit());
}
11 months ago
collectOrderBizs.add(collectOrderBiz);
}
if (CollUtil.isNotEmpty(collectOrderBizs))
collectOrderBizService.saveBatch(collectOrderBizs);
10 months ago
allWorksList.addAll(sysWorkplaces);
11 months ago
}
if (CollUtil.isNotEmpty(collectOrderList)) {
saveBatch(collectOrderList);
}
// Map<Long, SysWorkplaceResponse> sysWorkplaceMap = new HashMap<>();
// for (SysWorkplaceResponse sysWorkplace : allWorksList) {
// sysWorkplaceMap.put(sysWorkplace.getId(), sysWorkplace);
// }
// for (SysWorkplaceResponse value : sysWorkplaceMap.values()) {
// splitFifoCodeService.preAllotInv(value.getWorkplaceId());
// }
10 months ago
11 months ago
}
11 months ago
@Transactional(rollbackFor = Exception.class)
public void removeCode(DeleteTageCodeRequest deleteTageCodeRequest) {
Integer delType = deleteTageCodeRequest.getDelType();
Long codeManId = deleteTageCodeRequest.getCodeManId();
IoCollectOrderCodeMan ioCollectOrderCodeMan = ioCollectOrderCodeManService.getById(codeManId);
11 months ago
if (ioCollectOrderCodeMan == null) throw new JsonException("码明细id有误");
Long bizIdFk = ioCollectOrderCodeMan.getBizIdFk();
11 months ago
Integer scanCount = ioCollectOrderCodeMan.getScanCount();
Integer delCount = 0;
11 months ago
if (delType == 1) {//1.减一IoCollectOrderCodeMan-1 IoCollectOrderBiz-1
11 months ago
Integer newCount = scanCount - 1;
delCount = 1;
11 months ago
if (newCount == 0) {
11 months ago
ioCollectOrderCodeManService.removeById(codeManId);
11 months ago
} else {
11 months ago
ioCollectOrderCodeMan.setScanCount(newCount);
ioCollectOrderCodeManService.updateById(ioCollectOrderCodeMan);
}
11 months ago
} else if (delType == 2) {//2.删除 IoCollectOrderCodeMan-删除 IoCollectOrderBiz-数量
11 months ago
delCount = scanCount;
ioCollectOrderCodeManService.removeById(codeManId);
}
11 months ago
if (delCount > 0) {
11 months ago
IoCollectOrderBiz bizServiceOne = collectOrderBizService.getOne(new LambdaQueryWrapper<IoCollectOrderBiz>()
.eq(IoCollectOrderBiz::getId, bizIdFk));
11 months ago
if (bizServiceOne == null) throw new JsonException("扫码详情未查找到");
10 months ago
//反查单据类型 查看是否来源业务单
String orderIdFk = bizServiceOne.getOrderIdFk();
IoCollectOrder ioCollectOrder = collectOrderMapper.selectOne(new LambdaQueryWrapper<IoCollectOrder>().eq(IoCollectOrder::getBillNo, orderIdFk));
10 months ago
if (ioCollectOrder == null) throw new JsonException("反查单据失败");
String busType = ioCollectOrder.getBusType();
Long workPlaceCode = ioCollectOrder.getWorkPlaceCode();
SysWorkplaceDocumentEntity byWorkplaceCode = sysWorkplaceDocumentService.findByWorkplaceCode(workPlaceCode, busType);
10 months ago
if (byWorkplaceCode == null) throw new JsonException("反查工位单据类型失败");
Integer scanType = byWorkplaceCode.getScanType();
11 months ago
Integer oneScanCount = bizServiceOne.getScanCount();
Integer newCount = oneScanCount - delCount;
11 months ago
if (scanType == 1 && newCount <= 0) {
collectOrderBizService.removeById(bizServiceOne);
11 months ago
} else {
bizServiceOne.setScanCount(newCount);
10 months ago
List<UdiRelevanceResponse> udiRelevanceResponses = udiRelevanceService.selectGroupByNameCode(bizServiceOne.getNameCode(), null);
if (IntUtil.value(byWorkplaceCode.getOrderCirType()) == 1) {
10 months ago
bizServiceOne.setScanActCount(IntUtil.value(bizServiceOne.getScanActCount()) - delCount * udiCalCountUtil.getCirActCount(udiRelevanceResponses.get(0)));
10 months ago
} else {
10 months ago
bizServiceOne.setScanActCount(IntUtil.value(bizServiceOne.getScanActCount()) - delCount * udiCalCountUtil.getUseActCount(udiRelevanceResponses.get(0)));
10 months ago
}
collectOrderBizService.updateById(bizServiceOne);
}
11 months ago
}
}
10 months ago
/**
*
10 months ago
*
10 months ago
* @param collectOrderRequest
*/
@Transactional(rollbackFor = Exception.class)
public void orderTop(CollectOrderRequest collectOrderRequest) {
10 months ago
Assert.notNull(collectOrderRequest.getId(), "id不能为空");
10 months ago
IoCollectOrder old = this.getById(collectOrderRequest.getId());
Assert.notNull(old,"不存在该库存预警设置");
10 months ago
//TODO 新建单据未赋值排序时间
10 months ago
//1.获取tagStatus = 1的单据最早orderTime时间往前移1分钟
//2.在赋值给当前
10 months ago
this.lambdaUpdate()
.set(IoCollectOrder::getUpdateTime, new Date())
10 months ago
.set(collectOrderRequest.getUpdateUser() != null, IoCollectOrder::getUpdateUser, collectOrderRequest.getUpdateUser())
10 months ago
.set(IoCollectOrder::getOrderTime, new Date())
10 months ago
.eq(IoCollectOrder::getId, collectOrderRequest.getId()).update();
10 months ago
}
@Transactional(rollbackFor = Exception.class)
public void finishOrder(CollectOrderRequest collectOrderRequest) {
IoCollectOrder collectOrder = new IoCollectOrder();
BeanUtils.copyProperties(collectOrderRequest, collectOrder);
collectOrder.setTagStatus(3);
collectOrder.setUpdateTime(new Date());
updateByBillNo(collectOrder);
ThreadUtil.execAsync(() -> {
//插入到码表
collectCodeService.insertCodesByBill(collectOrderRequest.getBillNo());
//更新数据至第三方系统
});
}
@Resource
IBasicBussinessTypeService bussinessTypeService;
@Resource
private GennerOrderUtils gennerOrderUtils;
@Resource
private IoCodeTempDao codesTempDao;
@Resource
IoAddInoutService addInoutService;
@Resource
@Lazy
IoCheckInoutService ioCheckInoutService;
/**
* @param billNo
*/
private void generateOrder(String billNo) {
IoCollectOrder collectOrder = getByBillNo(billNo);
SysWorkplaceDocumentEntity sysWorkplaceDocumentEntity = sysWorkplaceDocumentService.findByWorkplaceCode(collectOrder.getWorkPlaceCode(), collectOrder.getBusType());
//1.内部系统,且单据为扫码生成业务单则创建系统单据
if (IntUtil.value(sysWorkplaceDocumentEntity.getIsMatching()) == 1 && sysWorkplaceDocumentEntity.getScanType() == 1) {
List<IoCollectOrderCodeMan> collectOrderCodes = collectOrderCodeManService.listByBillNo(collectOrder.getBillNo());
BasicBussinessTypeEntity bussinessTypeEntity;
sysWorkplaceDocumentEntity.getInoutType();
//构造单据数据
IoOrderEntity orderEntity = new IoOrderEntity();
bussinessTypeEntity = bussinessTypeService.findByAction(sysWorkplaceDocumentEntity.getDocumentTypeCode());
orderEntity.setMainAction(bussinessTypeEntity.getMainAction());
orderEntity.setAction(bussinessTypeEntity.getAction());
orderEntity.setCreateTime(new Date());
orderEntity.setInvCode(sysWorkplaceDocumentEntity.getInvCode() + "");
orderEntity.setDeptCode("");
orderEntity.setFromCorp(collectOrder.getFromCorp());
orderEntity.setCorpOrderId(CustomUtil.getId() + "x");
orderEntity.setExportStatus(0);
orderEntity.setStatus(ConstantStatus.ORDER_STATUS_CHECK_PROCESS);
orderEntity.setDealStatus(ConstantStatus.ORDER_DEAL_DRAFT);
orderEntity.setCreateUser(collectOrder.getCreateUser());
orderEntity.setCreateTime(new Date());
orderEntity.setUpdateUser(collectOrder.getCreateUser());
orderEntity.setUpdateTime(new Date());
orderEntity.setCustomerId("110");
orderEntity.setOrderType(2);
orderEntity.setFromType(2);
String orderNo = gennerOrderUtils.createScOrderNo(new OrderNoTypeBean(Constant.SCAN_ORDER + StrUtil.trimToEmpty(bussinessTypeEntity.getPrefix()), "yyyyMMdd"));
orderEntity.setBillNo(orderNo);
List<IoCodeTempEntity> lossCodesList = new ArrayList<>();
for (IoCollectOrderCodeMan collectOrderCodeMan : collectOrderCodes) {
lossCodesList.add(buildCodeEntity(collectOrderCodeMan, orderEntity));
}
orderService.insertOrder(orderEntity);
codesTempDao.insertBatch(lossCodesList);
addInoutService.dealProcess(orderEntity);
if (!ioCheckInoutService.checkManual(orderEntity.getBillNo())) {
ioCheckInoutService.check(orderEntity.getBillNo());
}
} else if (IntUtil.value(sysWorkplaceDocumentEntity.getIsMatching()) == 1 && sysWorkplaceDocumentEntity.getScanType() != 1) {
//更新单据为已完成
IoOrderEntity orderEntity = orderService.findByBillNo(collectOrder.getBillNo());
orderEntity.setStatus(7);
orderService.update(orderEntity);
} else if (IntUtil.value(sysWorkplaceDocumentEntity.getIsMatching()) == 2) {
//todo 根据单据类型上传医保或者第三方系统
}
}
private IoCodeTempEntity buildCodeEntity(IoCollectOrderCodeMan collectOrderCodeMan, IoOrderEntity orderEntity) {
IoCodeTempEntity tempEntity = new IoCodeTempEntity();
tempEntity.setOrderId(orderEntity.getBillNo());
tempEntity.setCode(collectOrderCodeMan.getUdiCode());
tempEntity.setRelId(collectOrderCodeMan.getRelId());
tempEntity.setMainAction(orderEntity.getMainAction());
tempEntity.setInvCode(orderEntity.getInvCode());
tempEntity.setBatchNo(collectOrderCodeMan.getBatchNo());
tempEntity.setProduceDate(collectOrderCodeMan.getProductDate());
tempEntity.setExpireDate(collectOrderCodeMan.getExpireDate());
tempEntity.setSerialNo(collectOrderCodeMan.getSerialNo());
tempEntity.setNameCode(collectOrderCodeMan.getNameCode());
tempEntity.setCount(collectOrderCodeMan.getScanCount());
tempEntity.setReCount(collectOrderCodeMan.getScanCount());
tempEntity.setCreateTime(new Date());
tempEntity.setUpdateTime(new Date());
tempEntity.setDeptCode(orderEntity.getDeptCode());
return tempEntity;
}
}