From 38257800c06ff4dbd32cc7b93f10cd20d87c0069 Mon Sep 17 00:00:00 2001 From: anthonywj Date: Wed, 6 Mar 2024 16:06:55 +0800 Subject: [PATCH] =?UTF-8?q?=E9=AB=98=E5=80=BC=E5=87=BA=E5=BA=93=E6=98=8E?= =?UTF-8?q?=E7=BB=86=E7=94=9F=E6=88=90=E5=8D=95=E6=8D=AE=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../thrsys/impl/ThrInvOrderServiceImpl.java | 133 +++++++++++------- 1 file changed, 86 insertions(+), 47 deletions(-) diff --git a/src/main/java/com/glxp/api/service/thrsys/impl/ThrInvOrderServiceImpl.java b/src/main/java/com/glxp/api/service/thrsys/impl/ThrInvOrderServiceImpl.java index c34c425c9..1540d8fcf 100644 --- a/src/main/java/com/glxp/api/service/thrsys/impl/ThrInvOrderServiceImpl.java +++ b/src/main/java/com/glxp/api/service/thrsys/impl/ThrInvOrderServiceImpl.java @@ -45,8 +45,10 @@ import com.glxp.api.service.inout.IoOrderService; import com.glxp.api.service.system.SystemParamConfigService; import com.glxp.api.service.thrsys.ThrInvOrderService; import com.glxp.api.util.GennerOrderUtils; +import com.glxp.api.util.IntUtil; import com.glxp.api.util.OrderNoTypeBean; import com.glxp.api.util.udi.FilterUdiUtils; +import com.glxp.api.util.udi.UdiCalCountUtil; import lombok.extern.slf4j.Slf4j; import org.apache.poi.ss.formula.functions.T; import org.springframework.beans.BeanUtils; @@ -91,7 +93,12 @@ public class ThrInvOrderServiceImpl implements ThrInvOrderService { UdiRelevanceService udiRelevanceService; @Resource IoCodeTempDao ioCodeTempDao; - + @Resource + IBasicBussinessTypeService bussinessTypeService; + @Resource + IoAddInoutService addInoutService; + @Resource + UdiCalCountUtil udiCalCountUtil; // 设置要输出的日期格式 SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); @@ -201,6 +208,12 @@ public class ThrInvOrderServiceImpl implements ThrInvOrderService { thrInvOrderDetail.setOrderIdFk(billNo); thrInvOrderDetail.setNameCode(nameCode); thrInvOrderDetail.setRelId(relId); + //校验产品是否被供应商关联 + UdiRlSupEntity udiRlSupEntity = udiRlSupService.selOneByRlId(relId); + if (udiRlSupEntity != null) + thrInvOrderDetail.setSupId(udiRlSupEntity.getCustomerId()); + else + exmsg.append(thrCode + "供应商未关联"); thrInvOrderDetail.setUdiCode(udiCode); thrInvOrderDetail.setThrCode(thrCode); thrInvOrderDetail.setReCount(String.valueOf(count)); @@ -208,7 +221,6 @@ public class ThrInvOrderServiceImpl implements ThrInvOrderService { thrInvOrderDetail.setProductionDate(udiEntity.getProduceDate()); thrInvOrderDetail.setExpireDate(udiEntity.getExpireDate()); thrInvOrderDetail.setSerialNo(udiEntity.getSerialNo()); - thrInvOrderDetails.add(thrInvOrderDetail); } else { String mainAction = item.getMainAction(); @@ -311,11 +323,13 @@ public class ThrInvOrderServiceImpl implements ThrInvOrderService { return thrInvOrderMapper.delete(uw); } - @Resource - IBasicBussinessTypeService bussinessTypeService; - @Resource - IoAddInoutService addInoutService; + /** + * 普耗收费出入库明细单据生成 + * + * @param generateOrderRequest + * @return + */ @Override public boolean generateOrder(GenerateOrderRequest generateOrderRequest) { String billNo = generateOrderRequest.getBillNo(); @@ -340,7 +354,6 @@ public class ThrInvOrderServiceImpl implements ThrInvOrderService { Map> grouped = new HashMap<>(); //往来类型为患者,则需要根据患者进行拆单 if (bussinessTypeEntity.getCorpType() == ConstantStatus.CORP_TYPE_INPUT) { - grouped = thrInvOrderDetails.stream() .collect(Collectors.groupingBy(ThrInvOrderDetail::getSickerCode)); } else { @@ -387,7 +400,12 @@ public class ThrInvOrderServiceImpl implements ThrInvOrderService { return true; } - + /** + * 高值耗材出入库明细单据生成 + * + * @param generateOrderRequest + * @return + */ @Override public boolean generateGhOrder(GenerateOrderRequest generateOrderRequest) { String billNo = generateOrderRequest.getBillNo(); @@ -406,47 +424,58 @@ public class ThrInvOrderServiceImpl implements ThrInvOrderService { //校验单据的relId有null不生成单据 if (!inspectionDocuments(thrInvOrderDetails)) return false; - //新单号 - String newBillNo = gennerOrderUtils.createScOrderNo(new OrderNoTypeBean(Constant.SCAN_ORDER, "yyyyMMdd")); - IoOrderEntity ioOrderEntity = new IoOrderEntity(); - ioOrderEntity.setBillNo(newBillNo); - ioOrderEntity.setMainAction(thrInvOrder.getMainAction()); - ioOrderEntity.setFromCorp(generateOrderRequest.getFromCorp()); - ioOrderEntity.setInvCode(thrInvOrder.getInvCode()); - ioOrderEntity.setDeptCode(thrInvOrder.getDeptCode()); - ioOrderEntity.setAction(generateOrderRequest.getAction()); - - ioOrderEntity.setFromType(ConstantStatus.FROM_WEBNEW);//网页新增 - ioOrderEntity.setStatus(ConstantStatus.ORDER_STATUS_TEMP_SAVE);//草稿 - ioOrderEntity.setDealStatus(ConstantStatus.ORDER_DEAL_DRAFT);//草稿 - ioOrderEntity.setCorpOrderId(billNo);//单据号 - ioOrderEntity.setUpdateTime(new Date()); - ioOrderEntity.setCreateTime(new Date()); - Long userId = customerService.getUserId(); - ioOrderEntity.setCreateUser(userId + ""); - ioOrderEntity.setUpdateUser(userId + ""); - ioOrderEntity.setOrderType(ConstantStatus.ORDER_TYPE_NORMAL);//正常单据处理 - - List newIoCodeTemps = new ArrayList<>(thrInvOrderDetails.size()); - - //码校验 - if (!checkIoCodeTemps(thrInvOrderDetails)) { - return false; + BasicBussinessTypeEntity bussinessTypeEntity = bussinessTypeService.findByAction(generateOrderRequest.getAction()); + Map> grouped = new HashMap<>(); + //往来类型为患者,则需要根据患者进行拆单 + if (bussinessTypeEntity.getCorpType() == ConstantStatus.CORP_TYPE_INPUT) { + grouped = thrInvOrderDetails.stream() + .collect(Collectors.groupingBy(ThrInvOrderDetail::getSickerCode)); + } else { + grouped.put(generateOrderRequest.getFromCorp(), thrInvOrderDetails); } + for (Map.Entry> entry : grouped.entrySet()) { + //新单号 + String newBillNo = gennerOrderUtils.createScOrderNo(new OrderNoTypeBean(Constant.SCAN_ORDER, "yyyyMMdd")); + IoOrderEntity ioOrderEntity = new IoOrderEntity(); + ioOrderEntity.setBillNo(newBillNo); + ioOrderEntity.setMainAction(thrInvOrder.getMainAction()); + ioOrderEntity.setFromCorp(generateOrderRequest.getFromCorp()); + ioOrderEntity.setInvCode(thrInvOrder.getInvCode()); + ioOrderEntity.setDeptCode(thrInvOrder.getDeptCode()); + ioOrderEntity.setAction(generateOrderRequest.getAction()); - if (!copyIoCodeTemps(thrInvOrderDetails, newIoCodeTemps, newBillNo, generateOrderRequest)) { - return false; - } + ioOrderEntity.setFromType(ConstantStatus.FROM_WEBNEW);//网页新增 + ioOrderEntity.setStatus(ConstantStatus.ORDER_STATUS_TEMP_SAVE);//草稿 + ioOrderEntity.setDealStatus(ConstantStatus.ORDER_DEAL_DRAFT);//草稿 + ioOrderEntity.setCorpOrderId(billNo);//单据号 + ioOrderEntity.setUpdateTime(new Date()); + ioOrderEntity.setCreateTime(new Date()); + Long userId = customerService.getUserId(); + ioOrderEntity.setCreateUser(userId + ""); + ioOrderEntity.setUpdateUser(userId + ""); + ioOrderEntity.setOrderType(ConstantStatus.ORDER_TYPE_SCAN);//正常单据处理 - ioOrderService.insertOrder(ioOrderEntity); - thrInvOrder.setStatus(ConstantStatus.SFIO_CFMD);//已确认 - thrInvOrder.setUpdateTime(new Date()); - thrInvOrder.setUpdateUser(userId + ""); - thrInvOrderMapper.updateByPrimaryKey(thrInvOrder); - ioCodeTempDao.insertBatch(newIoCodeTemps); + List newIoCodeTemps = new ArrayList<>(thrInvOrderDetails.size()); + //码校验 + if (!checkIoCodeTemps(thrInvOrderDetails)) { + return false; + } + + if (!copyIoCodeTemps(thrInvOrderDetails, newIoCodeTemps, newBillNo, generateOrderRequest)) { + return false; + } - ioAddInoutService.dealProcess(ioOrderEntity); + ioOrderService.insertOrder(ioOrderEntity); + thrInvOrder.setStatus(ConstantStatus.SFIO_CFMD);//已确认 + thrInvOrder.setUpdateTime(new Date()); + thrInvOrder.setUpdateUser(userId + ""); + thrInvOrderMapper.updateByPrimaryKey(thrInvOrder); + ioCodeTempDao.insertBatch(newIoCodeTemps); + } + + +// ioAddInoutService.dealProcess(ioOrderEntity); return true; } @@ -683,8 +712,7 @@ public class ThrInvOrderServiceImpl implements ThrInvOrderService { * @param newBillNo * @return */ - private boolean copyIoCodeTemps - (List thrInvOrderDetails, List newIoCodeTemps, String + private boolean copyIoCodeTemps(List thrInvOrderDetails, List newIoCodeTemps, String newBillNo, GenerateOrderRequest generateOrderRequest) { thrInvOrderDetails.forEach(item -> { @@ -696,7 +724,11 @@ public class ThrInvOrderServiceImpl implements ThrInvOrderService { BeanUtils.copyProperties(item, ioCodeTempEntity); ioCodeTempEntity.setUpdateTime(new Date()); ioCodeTempEntity.setCreateTime(new Date()); - + ioCodeTempEntity.setSupId(item.getSupId()); + ioCodeTempEntity.setProduceDate(item.getProductionDate()); + ioCodeTempEntity.setCount(IntUtil.value(item.getReCount())); + ioCodeTempEntity.setReCount(udiCalCountUtil.getActCount(ioCodeTempEntity)); + ioCodeTempEntity.setCorpOrderId(item.getOrderIdFk()); newIoCodeTemps.add(ioCodeTempEntity); }); @@ -809,6 +841,13 @@ public class ThrInvOrderServiceImpl implements ThrInvOrderService { if (ObjectUtil.isNull(relId)) { exmsg.append(thrCode + ","); } + //校验产品是否被供应商关联 + UdiRlSupEntity udiRlSupEntity = udiRlSupService.selOneByRlId(relId); + if (udiRlSupEntity != null) + thrInvOrderDetail.setSupId(udiRlSupEntity.getCustomerId()); + else + exmsg.append(thrCode + "供应商未关联"); + }); if (exmsg.length() > 0) { exmsg.deleteCharAt(exmsg.length() - 1);