diff --git a/src/main/java/com/glxp/api/controller/basic/BasicSickPrescribeDiController.java b/src/main/java/com/glxp/api/controller/basic/BasicSickPrescribeDiController.java index 1fbc86fcf..3c2cf1578 100644 --- a/src/main/java/com/glxp/api/controller/basic/BasicSickPrescribeDiController.java +++ b/src/main/java/com/glxp/api/controller/basic/BasicSickPrescribeDiController.java @@ -17,6 +17,7 @@ import com.glxp.api.service.BasicSkPrescribeDiService; import com.glxp.api.service.basic.BasicSkPrescribeService; import com.glxp.api.service.basic.BasicSkSickerService; import com.glxp.api.service.inout.IoAddInoutService; +import com.glxp.api.service.inout.IoCheckInoutService; import com.glxp.api.service.inout.IoOrderDetailCodeService; import com.glxp.api.service.inout.IoOrderService; import org.springframework.web.bind.annotation.GetMapping; @@ -34,6 +35,11 @@ public class BasicSickPrescribeDiController { BasicSkPrescribeService basicSkPrescribeService; @Resource BasicSkSickerService basicSkSickerService; + @Resource + IoAddInoutService addInoutService; + @Resource + IoCheckInoutService checkInoutService; + /** * 获取处方使用耗材详情 @@ -67,14 +73,13 @@ public class BasicSickPrescribeDiController { } List orderDetailCodeEntities = orderDetailCodeService.findByOrderId(basicSkPrescribeDiRequest.getBillNo()); IoOrderEntity orderEntity = orderService.findByBillNo(basicSkPrescribeDiRequest.getBillNo()); - basicSkPrescribeDiEntities = addInoutService.checkPrescirbe(orderDetailCodeEntities, orderEntity); + basicSkPrescribeDiEntities = checkInoutService.checkPrescirbe(orderDetailCodeEntities, orderEntity); return ResultVOUtils.success(basicSkPrescribeDiEntities); } @Resource IoOrderDetailCodeService orderDetailCodeService; - @Resource - IoAddInoutService addInoutService; + @Resource IoOrderService orderService; diff --git a/src/main/java/com/glxp/api/controller/basic/BasicSickerController.java b/src/main/java/com/glxp/api/controller/basic/BasicSickerController.java index 15ec9f1fb..93d2cf171 100644 --- a/src/main/java/com/glxp/api/controller/basic/BasicSickerController.java +++ b/src/main/java/com/glxp/api/controller/basic/BasicSickerController.java @@ -1,5 +1,6 @@ package com.glxp.api.controller.basic; +import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.thread.ThreadUtil; import com.github.pagehelper.PageInfo; @@ -9,6 +10,7 @@ import com.glxp.api.common.res.BaseResponse; import com.glxp.api.common.util.ResultVOUtils; import com.glxp.api.constant.RedissonCacheKey; import com.glxp.api.controller.BaseController; +import com.glxp.api.entity.basic.BasicSkSickerEntity; import com.glxp.api.http.ErpBasicClient; import com.glxp.api.req.basic.BasicSkSickerRequest; import com.glxp.api.req.basic.GetSickRequest; @@ -24,6 +26,7 @@ import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; +import java.util.ArrayList; import java.util.List; @Slf4j @@ -67,7 +70,14 @@ public class BasicSickerController extends BaseController { BeanUtils.copyProperties(basicSkSickerRequest, getSickRequest); BaseResponse> baseResponse = erpBasicClient.getSicker(getSickRequest); if (CollUtil.isNotEmpty(baseResponse.getData().getList())) { - basicSkSickerService.replaceBatchs(getSickRequest.getSelectSickers()); + List list = baseResponse.getData().getList(); +// List basicSkSickerEntities = new ArrayList<>(); +// list.forEach(item -> { +// BasicSkSickerEntity basicSkSickerEntity = new BasicSkSickerEntity(); +// BeanUtil.copyProperties(item, basicSkSickerEntity); +// basicSkSickerEntities.add(basicSkSickerEntity); +// }); + basicSkSickerService.replaceBatchs(list); } return baseResponse; } else { diff --git a/src/main/java/com/glxp/api/controller/inout/IoCodeTempController.java b/src/main/java/com/glxp/api/controller/inout/IoCodeTempController.java index 924f9754d..83ca997c3 100644 --- a/src/main/java/com/glxp/api/controller/inout/IoCodeTempController.java +++ b/src/main/java/com/glxp/api/controller/inout/IoCodeTempController.java @@ -1179,7 +1179,6 @@ public class IoCodeTempController extends BaseController { @AuthRuleAnnotation("") @PostMapping("/udiwms/addCode/updateBindSup") @Log(title = "单据管理", businessType = BusinessType.UPDATE) - public BaseResponse updateBindSup(@RequestBody IoCodeTempEntity codeSaveRequest, BindingResult bindingResult) { if (bindingResult.hasErrors()) { diff --git a/src/main/java/com/glxp/api/entity/inout/IoOrderSkPrescribeEntity.java b/src/main/java/com/glxp/api/entity/inout/IoOrderSkPrescribeEntity.java index 966a49e69..51b25a5d9 100644 --- a/src/main/java/com/glxp/api/entity/inout/IoOrderSkPrescribeEntity.java +++ b/src/main/java/com/glxp/api/entity/inout/IoOrderSkPrescribeEntity.java @@ -6,150 +6,160 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; + import java.io.Serializable; import java.math.BigDecimal; + import lombok.Data; /** - * 出库单据处方用药耗材对照 - */ -@ApiModel(value="com-glxp-api-entity-inout-IoOrderSkPrescribe") + * 出库单据处方用药耗材对照 + */ +@ApiModel(value = "com-glxp-api-entity-inout-IoOrderSkPrescribe") @Data @TableName(value = "io_order_sk_prescribe") public class IoOrderSkPrescribeEntity implements Serializable { @TableId(value = "id", type = IdType.INPUT) - @ApiModelProperty(value="") + @ApiModelProperty(value = "") private Long id; /** * 项目组套外键 */ @TableField(value = "pId") - @ApiModelProperty(value="项目组套外键") + @ApiModelProperty(value = "项目组套外键") private Long pId; /** * 患者编码 */ @TableField(value = "sickerCode") - @ApiModelProperty(value="患者编码") + @ApiModelProperty(value = "患者编码") private String sickerCode; /** * 处方编码 */ @TableField(value = "prescribeCode") - @ApiModelProperty(value="处方编码") + @ApiModelProperty(value = "处方编码") private String prescribeCode; /** * 耗材产品id */ @TableField(value = "relId") - @ApiModelProperty(value="耗材产品id") + @ApiModelProperty(value = "耗材产品id") private Long relId; /** * 耗材名称 */ @TableField(value = "thrName") - @ApiModelProperty(value="耗材名称") + @ApiModelProperty(value = "耗材名称") private String thrName; /** * 耗材编码 */ @TableField(value = "thrCode") - @ApiModelProperty(value="耗材编码") + @ApiModelProperty(value = "耗材编码") private String thrCode; /** * 计量数量 */ @TableField(value = "measureCount") - @ApiModelProperty(value="计量数量") + @ApiModelProperty(value = "计量数量") private String measureCount; /** * 计量单位 */ @TableField(value = "measureUnit") - @ApiModelProperty(value="计量单位") + @ApiModelProperty(value = "计量单位") private String measureUnit; /** * 类别 */ @TableField(value = "category") - @ApiModelProperty(value="类别") + @ApiModelProperty(value = "类别") private String category; /** * 频率 */ @TableField(value = "frequency") - @ApiModelProperty(value="频率") + @ApiModelProperty(value = "频率") private String frequency; /** * 数量 */ @TableField(value = "`count`") - @ApiModelProperty(value="数量") + @ApiModelProperty(value = "数量") private Integer count; /** * 价格 */ @TableField(value = "price") - @ApiModelProperty(value="价格") + @ApiModelProperty(value = "价格") private BigDecimal price; /** * 规格型号 */ @TableField(value = "ggxh") - @ApiModelProperty(value="规格型号") + @ApiModelProperty(value = "规格型号") private String ggxh; /** * 备注 */ @TableField(value = "remark") - @ApiModelProperty(value="备注") + @ApiModelProperty(value = "备注") private String remark; @TableField(value = "nameCode") - @ApiModelProperty(value="") + @ApiModelProperty(value = "") private String nameCode; /** * 总金额 */ @TableField(value = "amount") - @ApiModelProperty(value="总金额") + @ApiModelProperty(value = "总金额") private BigDecimal amount; /** * 住院号 */ @TableField(value = "adNum") - @ApiModelProperty(value="住院号") + @ApiModelProperty(value = "住院号") private String adNum; /** * 实际数量 */ @TableField(value = "realCount") - @ApiModelProperty(value="实际数量") + @ApiModelProperty(value = "实际数量") private String realCount; /** * 实际价格 */ @TableField(value = "realPrice") - @ApiModelProperty(value="实际价格") + @ApiModelProperty(value = "实际价格") private BigDecimal realPrice; + /** + * 单据号 + */ + @TableField(value = "orderIdFk") + @ApiModelProperty(value = "单据号") + private String orderIdFk; + + private static final long serialVersionUID = 1L; } diff --git a/src/main/java/com/glxp/api/service/BasicSkPrescribeDiService.java b/src/main/java/com/glxp/api/service/BasicSkPrescribeDiService.java index 9c3db49bf..a67053aea 100644 --- a/src/main/java/com/glxp/api/service/BasicSkPrescribeDiService.java +++ b/src/main/java/com/glxp/api/service/BasicSkPrescribeDiService.java @@ -21,7 +21,9 @@ public interface BasicSkPrescribeDiService extends IService filterList(BasicSkPrescribeDiRequest basicSkPrescribeDiRequest); - List findBySkAdNum(String adNum); + BasicSkPrescribeDiEntity findByRelId(String adNum, Long relId); + + BasicSkPrescribeDiEntity findByThrCode(String adNum, String thrCode); } diff --git a/src/main/java/com/glxp/api/service/basic/BasicSkPrescribeService.java b/src/main/java/com/glxp/api/service/basic/BasicSkPrescribeService.java index 548c0d6a3..26f6b86ec 100644 --- a/src/main/java/com/glxp/api/service/basic/BasicSkPrescribeService.java +++ b/src/main/java/com/glxp/api/service/basic/BasicSkPrescribeService.java @@ -131,23 +131,31 @@ public class BasicSkPrescribeService extends ServiceImpl thrProductsEntities = thrProductsService.list(new QueryWrapper().eq("prcitmcode", skPrescribeItemEntity.getItemCode())); if (CollUtil.isNotEmpty(thrProductsEntities)) { for (ThrProductsEntity thrProductsEntity : thrProductsEntities) { - BasicSkPrescribeDiEntity basicSkPrescribeDiEntity = new BasicSkPrescribeDiEntity(); - basicSkPrescribeDiEntity.setPrescribeCode(skPrescribeItemEntity.getPrescribeCode()); - basicSkPrescribeDiEntity.setSickerCode(skPrescribeItemEntity.getSickerCode()); - basicSkPrescribeDiEntity.setCount(IntUtil.value(skPrescribeItemEntity.getMeasureCount())); - basicSkPrescribeDiEntity.setMeasureCount(basicSkPrescribeDiEntity.getCount() + ""); - basicSkPrescribeDiEntity.setMeasureUnit(skPrescribeItemEntity.getMeasureUnit()); - basicSkPrescribeDiEntity.setPId(thrProductsEntity.getPrcitmcode()); - UdiRelevanceEntity udiRelevanceEntity = udiRelevanceService.selectByThirdId(thrProductsEntity.getCode(), "thirdId"); - basicSkPrescribeDiEntity.setAmount(skPrescribeItemEntity.getAmount()); - basicSkPrescribeDiEntity.setRelId(udiRelevanceEntity.getId()); - basicSkPrescribeDiEntity.setThrCode(thrProductsEntity.getCode()); - basicSkPrescribeDiEntity.setThrName(thrProductsEntity.getName()); - basicSkPrescribeDiEntity.setCategory(thrProductsEntity.getCplb()); - basicSkPrescribeDiEntity.setGgxh(thrProductsEntity.getStandard()); - basicSkPrescribeDiEntity.setAdNum(skPrescribeItemEntity.getAdNum()); - basicSkPrescribeDiEntity.setUpdateTime(new Date()); - basicSkPrescribeDiService.save(basicSkPrescribeDiEntity); + BasicSkPrescribeDiEntity basicSkPrescribeDiEntity = basicSkPrescribeDiService.findByThrCode(skPrescribeItemEntity.getAdNum(), thrProductsEntity.getCode()); + if (basicSkPrescribeDiEntity == null) { + basicSkPrescribeDiEntity.setPrescribeCode(skPrescribeItemEntity.getPrescribeCode()); + basicSkPrescribeDiEntity.setSickerCode(skPrescribeItemEntity.getSickerCode()); + basicSkPrescribeDiEntity.setCount(IntUtil.value(skPrescribeItemEntity.getMeasureCount())); + basicSkPrescribeDiEntity.setMeasureCount(basicSkPrescribeDiEntity.getCount() + ""); + basicSkPrescribeDiEntity.setMeasureUnit(skPrescribeItemEntity.getMeasureUnit()); + basicSkPrescribeDiEntity.setPId(thrProductsEntity.getPrcitmcode()); + UdiRelevanceEntity udiRelevanceEntity = udiRelevanceService.selectByThirdId(thrProductsEntity.getCode(), "thirdId"); + basicSkPrescribeDiEntity.setAmount(skPrescribeItemEntity.getAmount()); + basicSkPrescribeDiEntity.setRelId(udiRelevanceEntity.getId()); + basicSkPrescribeDiEntity.setThrCode(thrProductsEntity.getCode()); + basicSkPrescribeDiEntity.setThrName(thrProductsEntity.getName()); + basicSkPrescribeDiEntity.setCategory(thrProductsEntity.getCplb()); + basicSkPrescribeDiEntity.setGgxh(thrProductsEntity.getStandard()); + basicSkPrescribeDiEntity.setAdNum(skPrescribeItemEntity.getAdNum()); + basicSkPrescribeDiEntity.setUpdateTime(new Date()); + basicSkPrescribeDiService.save(basicSkPrescribeDiEntity); + } else { + basicSkPrescribeDiEntity.setCount(IntUtil.value(basicSkPrescribeDiEntity.getCount()) + IntUtil.value(skPrescribeItemEntity.getMeasureCount())); + basicSkPrescribeDiEntity.setAmount(basicSkPrescribeDiEntity.getAmount().multiply(skPrescribeItemEntity.getAmount())); + basicSkPrescribeDiService.updateById(basicSkPrescribeDiEntity); + } + + } } } diff --git a/src/main/java/com/glxp/api/service/basic/impl/BasicSkPrescribeDiServiceImpl.java b/src/main/java/com/glxp/api/service/basic/impl/BasicSkPrescribeDiServiceImpl.java index 419436196..22a3967b0 100644 --- a/src/main/java/com/glxp/api/service/basic/impl/BasicSkPrescribeDiServiceImpl.java +++ b/src/main/java/com/glxp/api/service/basic/impl/BasicSkPrescribeDiServiceImpl.java @@ -46,6 +46,20 @@ public class BasicSkPrescribeDiServiceImpl extends ServiceImpl() + .eq("adNum", adNum).eq("relId", relId).last("limit 1")); + return data; + } + + @Override + public BasicSkPrescribeDiEntity findByThrCode(String adNum, String thrCode) { + BasicSkPrescribeDiEntity data = super.baseMapper.selectOne( + new QueryWrapper() + .eq("adNum", adNum).eq("thrCode", thrCode).last("limit 1")); + return data; + } } diff --git a/src/main/java/com/glxp/api/service/inout/IoAddInoutService.java b/src/main/java/com/glxp/api/service/inout/IoAddInoutService.java index 5f3ca9c11..6f3a06d2b 100644 --- a/src/main/java/com/glxp/api/service/inout/IoAddInoutService.java +++ b/src/main/java/com/glxp/api/service/inout/IoAddInoutService.java @@ -973,133 +973,6 @@ public class IoAddInoutService { /** * 手持终端上传校验价格 */ -// public List checkPrice(BasicBussinessTypeEntity bussinessTypeEntity, List codeTempEntities) { -// -// Map> stringListMap = codeTempEntities.stream() -// .collect(Collectors.groupingBy(person -> person.getRelId() + ":" + person.getBatchNo())); -// List resultList = new ArrayList<>(); -// for (String key : stringListMap.keySet()) { -// List temps = stringListMap.get(key); -// IoCodeTempEntity codeEntity = temps.get(0); -// InvProductDetailEntity invProductDetailEntity = invProductDetailService.selectLastInBatch(bussinessTypeEntity, codeEntity.getRelId() + "", codeEntity.getBatchNo(), codeEntity.getInvCode(), codeEntity.getMainAction()); -// Map lastCountMap = new HashMap<>(); -// invProductDetailEntity = invProductDetailService.selectFirstInBatch(bussinessTypeEntity, codeEntity.getRelId() + "", codeEntity.getBatchNo(), codeEntity.getInvCode(), ConstantType.TYPE_PUT); -// for (IoCodeTempEntity codeTempEntity : temps) { -// if (invProductDetailEntity == null) { -// //首次出库,获取入库最早批次 -// if (invProductDetailEntity != null) { -// int count = IntUtil.value(invProductDetailEntity.getCount()); -// int reCount = IntUtil.value(invProductDetailEntity.getReCount()); -// //当数量>0时 -// if (reCount >= codeTempEntity.getReCount()) { -// codeTempEntity.setPrice(invProductDetailEntity.getPrice()); -// codeTempEntity.setInBatchNo(invProductDetailEntity.getInBatchNo()); -// Integer tt = lastCountMap.get(invProductDetailEntity.getInBatchNo()); -// lastCountMap.put(invProductDetailEntity.getInBatchNo(), IntUtil.value(tt) + codeTempEntity.getReCount()); -// } else { -// while (codeTempEntity.getReCount() - reCount > 0) { -// -// IoCodeTempEntity newCodeEntity = new IoCodeTempEntity(); -// BeanUtils.copyProperties(codeTempEntity, newCodeEntity); -// newCodeEntity.setId(null); -// newCodeEntity.setCount(count); -// newCodeEntity.setReCount(reCount); -// newCodeEntity.setPrice(invProductDetailEntity.getPrice()); -// newCodeEntity.setInBatchNo(invProductDetailEntity.getInBatchNo()); -// lastCountMap.put(invProductDetailEntity.getInBatchNo(), IntUtil.value(lastCountMap.get(invProductDetailEntity.getInBatchNo())) + reCount); -// codeTempService.insert(newCodeEntity); -// resultList.add(newCodeEntity); -// -// codeTempEntity.setCount(codeTempEntity.getCount() - count); -// codeTempEntity.setReCount(codeTempEntity.getReCount() - reCount); -// codeTempService.updateById(codeTempEntity); -// -// invProductDetailEntity = invProductDetailService.selectNextInBatch(bussinessTypeEntity, codeTempEntity.getRelId() + "", codeTempEntity.getBatchNo(), codeTempEntity.getInvCode(), ConstantType.TYPE_PUT, invProductDetailEntity.getInBatchNo()); -// -// if (invProductDetailEntity != null) { -// count = IntUtil.value(invProductDetailEntity.getCount()); -// reCount = IntUtil.value(invProductDetailEntity.getReCount()); -// } else { -// break; -// } -// -// } -// -// codeTempEntity.setPrice(invProductDetailEntity.getPrice()); -// codeTempEntity.setInBatchNo(invProductDetailEntity.getInBatchNo()); -// lastCountMap.put(invProductDetailEntity.getInBatchNo(), IntUtil.value(lastCountMap.get(invProductDetailEntity.getInBatchNo())) + reCount); -// } -// -// -// } -// } else { -// //非首次出库 -// int lastCount = IntUtil.value(lastCountMap.get(invProductDetailEntity.getInBatchNo())); -// //1.获取当前批次已出库数量 -// Integer outCount = IntUtil.value(invProductDetailService.selectCountByInBatch(bussinessTypeEntity, invProductDetailEntity.getInBatchNo(), ConstantType.TYPE_OUT)); -// //2.获取当前批次入库数量 -// Integer inCount = IntUtil.value(invProductDetailService.selectCountByInBatch(bussinessTypeEntity, invProductDetailEntity.getInBatchNo(), ConstantType.TYPE_PUT)); -// //3.若数量还有剩,则此次出库为当前批次 -// if (IntUtil.value(inCount) >= (IntUtil.value(outCount) + IntUtil.value(lastCount) + codeTempEntity.getReCount())) { -// codeTempEntity.setPrice(invProductDetailEntity.getPrice()); -// codeTempEntity.setInBatchNo(invProductDetailEntity.getInBatchNo()); -// lastCountMap.put(invProductDetailEntity.getInBatchNo(), IntUtil.value(lastCountMap.get(invProductDetailEntity.getInBatchNo())) + codeTempEntity.getReCount()); -// -// } else { -// // 4.若数量不足,则出下一批次 -//// InvProductDetailEntity nextInvProduct = invProductDetailService.selectNextInBatch(codeTempEntity.getRelId() + "", codeTempEntity.getBatchNo(), codeTempEntity.getInvCode(), codeTempEntity.getMainAction(), invProductDetailEntity.getInBatchNo()); -//// inCount = nextInvProduct.getReCount(); -// int curCount = outCount + lastCount; -// while (curCount >= inCount) { -// invProductDetailEntity = invProductDetailService.selectNextInBatch(bussinessTypeEntity, codeTempEntity.getRelId() + "", codeTempEntity.getBatchNo(), codeTempEntity.getInvCode(), codeTempEntity.getMainAction(), invProductDetailEntity.getInBatchNo()); -// if (invProductDetailEntity != null) { -// if (invProductDetailEntity.getReCount() > codeTempEntity.getReCount()) { -// codeTempEntity.setPrice(invProductDetailEntity.getPrice()); -// codeTempEntity.setInBatchNo(invProductDetailEntity.getInBatchNo()); -// lastCountMap.put(invProductDetailEntity.getInBatchNo(), inCount); -// } else { -// IoCodeTempEntity newCodeEntity = new IoCodeTempEntity(); -// BeanUtils.copyProperties(codeTempEntity, newCodeEntity); -// newCodeEntity.setId(null); -// newCodeEntity.setReCount(inCount); -// newCodeEntity.setPrice(invProductDetailEntity.getPrice()); -// newCodeEntity.setInBatchNo(invProductDetailEntity.getInBatchNo()); -// lastCountMap.put(invProductDetailEntity.getInBatchNo(), inCount); -// codeTempService.insert(newCodeEntity); -// resultList.add(newCodeEntity); -// -// codeTempEntity.setReCount(curCount - inCount); -// codeTempService.updateById(codeTempEntity); -// } -// -// inCount = IntUtil.value(invProductDetailEntity.getReCount()); -// lastCount = IntUtil.value(lastCountMap.get(invProductDetailEntity.getInBatchNo())); -// //1.获取当前批次已出库数量 -// outCount = IntUtil.value(invProductDetailService.selectCountByInBatch(bussinessTypeEntity, invProductDetailEntity.getInBatchNo(), ConstantType.TYPE_OUT)); -// curCount = outCount + lastCount; -// } else { -// break; -// } -// -// } -// if (invProductDetailEntity != null) { -// codeTempEntity.setPrice(invProductDetailEntity.getPrice()); -// codeTempEntity.setInBatchNo(invProductDetailEntity.getInBatchNo()); -// lastCountMap.put(invProductDetailEntity.getInBatchNo(), inCount); -// } -// } -// -// -// if (invProductDetailEntity != null) { -// codeTempEntity.setPrice(invProductDetailEntity.getPrice()); -// codeTempEntity.setInBatchNo(invProductDetailEntity.getInBatchNo()); -// } -// } -// resultList.add(codeTempEntity); -// } -// } -// return resultList; -// } public List checkPrice(IoCodeTempEntity codeTempEntity, BasicBussinessTypeEntity bussinessTypeEntity, List codeTempEntities) { List filteredAndSorted = codeTempEntities.stream() @@ -1179,39 +1052,6 @@ public class IoAddInoutService { } - @Resource - BasicSkPrescribeDiService basicSkPrescribeDiService; - - /** - * 单据类型是否校验处方(边扫边校验) - */ - public void checkPrescirbe(BasicBussinessTypeEntity bussinessTypeEntity, IoCodeTempEntity codeTempEntity, IoOrderEntity orderEntity) { - if (StrUtil.isEmpty(orderEntity.getSickerAdNum())) { - return; - } -// basicSkPrescribeDiService. - - } - - - /** - * 单据类型是否校验处方(单据提交时校验) - */ - public List checkPrescirbe(List orderDetailCodeEntities, IoOrderEntity orderEntity) { - - List skPrescribeDiEntities = basicSkPrescribeDiService.findBySkAdNum(orderEntity.getSickerAdNum()); - if (skPrescribeDiEntities.size() > 0) { - for (BasicSkPrescribeDiResponse skPrescribeDiEntity : skPrescribeDiEntities) { - for (IoOrderDetailCodeEntity orderDetailCodeEntity : orderDetailCodeEntities) { - if (IntUtil.value(skPrescribeDiEntity.getRelId()) == IntUtil.value(orderDetailCodeEntity.getBindRlFk())) { - skPrescribeDiEntity.setRealCount(IntUtil.value(skPrescribeDiEntity.getRealCount()) + IntUtil.value(orderDetailCodeEntity.getReCount())); - skPrescribeDiEntity.setRealPrice(orderDetailCodeEntity.getPrice()); - } - } - } - } - return skPrescribeDiEntities; - } } diff --git a/src/main/java/com/glxp/api/service/inout/IoCheckInoutService.java b/src/main/java/com/glxp/api/service/inout/IoCheckInoutService.java index 9f4f261c9..487cd8f8e 100644 --- a/src/main/java/com/glxp/api/service/inout/IoCheckInoutService.java +++ b/src/main/java/com/glxp/api/service/inout/IoCheckInoutService.java @@ -1,6 +1,10 @@ package com.glxp.api.service.inout; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.glxp.api.dao.inout.IoOrderDetailCodeDao; +import com.glxp.api.entity.basic.BasicSkPrescribeDiEntity; +import com.glxp.api.res.basic.BasicSkPrescribeDiResponse; +import com.glxp.api.service.BasicSkPrescribeDiService; import com.glxp.api.service.inout.impl.IoCodeService; import org.springframework.beans.BeanUtils; import cn.hutool.core.collection.CollUtil; @@ -338,6 +342,12 @@ public class IoCheckInoutService { @Resource SystemParamConfigService systemParamConfigService; + /** + * 有业务单校验 + * + * @param codeEntity + * @return + */ public String checkCode(IoCodeTempEntity codeEntity) { SystemParamConfigEntity systemParamConfigEntity = systemParamConfigService.selectByParamKey("only_vail_batch"); @@ -375,7 +385,75 @@ public class IoCheckInoutService { return null; } - //无三期拣货校验 + @Resource + BasicSkPrescribeDiService basicSkPrescribeDiService; + + /** + * 单据类型是否校验处方(边扫边校验) + */ + public String checkPrescribeDi(IoCodeTempEntity codeEntity, String adNum) { + BasicSkPrescribeDiEntity basicSkPrescribeDiEntity = basicSkPrescribeDiService.findByRelId(adNum, codeEntity.getRelId()); + IoOrderDetailCodeEntity orderDetailCodeEntity = orderDetailCodeService.findByUnique(codeEntity.getOrderId(), codeEntity.getRelId(), codeEntity.getBatchNo(), codeEntity.getPrice()); + int curCount = 0; + if (orderDetailCodeEntity != null) { + curCount = orderDetailCodeEntity.getReCount() + codeEntity.getMyReCount(); + } else { + curCount = codeEntity.getMyReCount(); + } + if (curCount > IntUtil.value(basicSkPrescribeDiEntity.getCount())) { + return "当前产品数量超出!"; + } + return null; + } + + @Resource + IoOrderSkPrescribeService orderSkPrescribeService; + + /** + * 单据提交后,保存处方校验结果 + */ + public void checkUploadPrescribe(IoOrderEntity orderEntity) { + List orderDetailCodeEntities = orderDetailCodeService.findByOrderId(orderEntity.getBillNo()); + List basicSkPrescribeDiResponses = checkPrescirbe(orderDetailCodeEntities, orderEntity); + + orderSkPrescribeService.remove(new QueryWrapper().eq("orderIdFk", orderEntity.getBillNo())); + if (CollUtil.isNotEmpty(basicSkPrescribeDiResponses)) { + for (BasicSkPrescribeDiResponse basicSkPrescribeDiResponse : basicSkPrescribeDiResponses) { + IoOrderSkPrescribeEntity orderSkPrescribeEntity = new IoOrderSkPrescribeEntity(); + BeanUtils.copyProperties(basicSkPrescribeDiResponse, orderSkPrescribeEntity); + orderSkPrescribeEntity.setOrderIdFk(orderEntity.getBillNo()); + orderSkPrescribeService.save(orderSkPrescribeEntity); + } + } + } + + + /** + * 单据类型是否校验处方(单据提交时校验) + */ + public List checkPrescirbe(List orderDetailCodeEntities, IoOrderEntity orderEntity) { + + List skPrescribeDiEntities = basicSkPrescribeDiService.findBySkAdNum(orderEntity.getSickerAdNum()); + if (skPrescribeDiEntities.size() > 0) { + for (BasicSkPrescribeDiResponse skPrescribeDiEntity : skPrescribeDiEntities) { + for (IoOrderDetailCodeEntity orderDetailCodeEntity : orderDetailCodeEntities) { + if (IntUtil.value(skPrescribeDiEntity.getRelId()) == IntUtil.value(orderDetailCodeEntity.getBindRlFk())) { + skPrescribeDiEntity.setRealCount(IntUtil.value(skPrescribeDiEntity.getRealCount()) + IntUtil.value(orderDetailCodeEntity.getReCount())); + skPrescribeDiEntity.setRealPrice(orderDetailCodeEntity.getPrice()); + } + } + } + } + return skPrescribeDiEntities; + } + + + /** + * 无三期拣货校验 + * + * @param codeTempEntity + * @return + */ public String checkNoPiCode(IoCodeTempEntity codeTempEntity) { boolean isBillExit = orderDetailBizService.isExit(codeTempEntity.getOrderId()); if (!isBillExit) { @@ -400,7 +478,11 @@ public class IoCheckInoutService { return null; } - //一次校验(无需校验)完成 + /** + * 一次校验(无需校验)完成 + * + * @param orderEntity + */ public void unCheckFirstFinish(IoOrderEntity orderEntity) { List orderDetailCodeEntities = orderDetailCodeService.findByOrderId(orderEntity.getBillNo()); diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index 2c48b855c..b2df4abe2 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -4,7 +4,7 @@ server: spring: datasource: driver-class-name: com.p6spy.engine.spy.P6SpyDriver - jdbc-url: jdbc:p6spy:mysql://127.0.0.1:3306/udiwms_qq?allowMultiQueries=true&serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true + jdbc-url: jdbc:p6spy:mysql://127.0.0.1:3306/udi_wms_pt?allowMultiQueries=true&serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true username: root password: 123456 hikari: diff --git a/src/main/resources/schemas/schema_v2.4.sql b/src/main/resources/schemas/schema_v2.4.sql index d5523df77..00fd71a7f 100644 --- a/src/main/resources/schemas/schema_v2.4.sql +++ b/src/main/resources/schemas/schema_v2.4.sql @@ -212,3 +212,36 @@ CALL Pro_Temp_ColumnWork('io_stat_order', 'statType', 'tinyint', 1); CALL Pro_Temp_ColumnWork('basic_sk_prescribe', 'deptName', 'varchar(255)', 1); CALL Pro_Temp_ColumnWork('basic_sk_prescribe', 'deptCode', 'varchar(255)', 1); + +CREATE TABLE IF NOT EXISTS `io_order_sk_prescribe` +( + `id` bigint NOT NULL AUTO_INCREMENT, + `pId` bigint NOT NULL COMMENT '项目组套外键', + `sickerCode` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '患者编码', + `prescribeCode` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '处方编码', + `relId` bigint NULL DEFAULT NULL COMMENT '耗材产品id', + `thrName` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '耗材名称', + `thrCode` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '耗材编码', + `measureCount` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '计量数量', + `measureUnit` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '计量单位', + `category` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '类别', + `frequency` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '频率', + `count` int NULL DEFAULT NULL COMMENT '数量', + `price` decimal(16, 4) NULL DEFAULT NULL COMMENT '价格', + `ggxh` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '规格型号', + `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '备注', + `nameCode` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, + `amount` decimal(10, 3) NULL DEFAULT NULL COMMENT '总金额', + `adNum` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '住院号', + `realCount` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '实际数量', + `realPrice` decimal(10, 3) NULL DEFAULT NULL COMMENT '实际价格', + `orderIdFk` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '订单号外键', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB + CHARACTER SET = utf8mb4 + COLLATE = utf8mb4_0900_ai_ci COMMENT = '出库单据处方用药耗材对照' + ROW_FORMAT = DYNAMIC; + + + +