diff --git a/src/main/java/com/glxp/api/constant/BasicExportStatusTimeEnum.java b/src/main/java/com/glxp/api/constant/BasicExportStatusTimeEnum.java index 351079102..434b8ffe5 100644 --- a/src/main/java/com/glxp/api/constant/BasicExportStatusTimeEnum.java +++ b/src/main/java/com/glxp/api/constant/BasicExportStatusTimeEnum.java @@ -131,6 +131,11 @@ public enum BasicExportStatusTimeEnum { DEV_REPAIR("device_repair","设备维修单数据"), PRODUCE_BUSINESS_DATA("thr_manufacturer", "生产企业数据"), + /** + * 药品关联信息任务同步 + */ + DRUG_DATA_TASK("drug_data_task", "药品关联信息任"), + ; @EnumValue private String key; diff --git a/src/main/java/com/glxp/api/constant/BasicExportTypeEnum.java b/src/main/java/com/glxp/api/constant/BasicExportTypeEnum.java index 581bc2799..1b301f29e 100644 --- a/src/main/java/com/glxp/api/constant/BasicExportTypeEnum.java +++ b/src/main/java/com/glxp/api/constant/BasicExportTypeEnum.java @@ -64,6 +64,11 @@ public enum BasicExportTypeEnum { DEVICE_UPKEEP_DATA("device__upkeep", "设备保养数据"), PRODUCE_BUSINESS_DATA("thr_manufacturer", "生产企业数据"), + + /** + * 药品关联信息任务同步 + */ + DRUG_DATA_TASK("drug_data_task", "药品关联信息任"), // // NEW_ALL_ORDER("all_order", "出入库扫码单据"), // ALL_BUS_ORDER("all_bus_order", "业务单据"), diff --git a/src/main/java/com/glxp/api/controller/auth/SysWorkplaceController.java b/src/main/java/com/glxp/api/controller/auth/SysWorkplaceController.java index eb21e67d5..a83c371ac 100644 --- a/src/main/java/com/glxp/api/controller/auth/SysWorkplaceController.java +++ b/src/main/java/com/glxp/api/controller/auth/SysWorkplaceController.java @@ -299,4 +299,26 @@ public class SysWorkplaceController extends BaseController { } return ResultVOUtils.success("更新成功"); } + + + @PostMapping("/udiwms/sysWorkplace/getListByBusType") + public BaseResponse getListByBusType(@RequestBody SysWorkplaceRequest request) { +// Page page = sysWorkplaceService.page(new Page<>(request.getPage(), request.getLimit()), Wrappers.lambdaQuery(SystemWorkplace.class) +// .eq(StrUtil.isNotBlank(request.getInvCode()),SystemWorkplace::getInvCode,request.getInvCode()) +// .like(StrUtil.isNotBlank(request.getKey()),SystemWorkplace::getWorkplaceId,request.getKey()) +// .or() +// .like(StrUtil.isNotBlank(request.getKey()),SystemWorkplace::getWorkplaceName,request.getKey()) +// ); + request.setUserId(getUserId() + ""); + DeptEntity deptEntity = deptService.selectByCode(request.getDeptCode()); + if (deptEntity.getPid() == 0){ + request.setDeptCode(null); + } + List page = sysWorkplaceService.getListByBusType(request); + PageInfo pageInfo = new PageInfo<>(page); + PageSimpleResponse pageSimpleResponse = new PageSimpleResponse<>(); + pageSimpleResponse.setTotal(pageInfo.getTotal()); + pageSimpleResponse.setList(page); + return ResultVOUtils.success(pageSimpleResponse); + } } diff --git a/src/main/java/com/glxp/api/controller/basic/UdiRelevanceController.java b/src/main/java/com/glxp/api/controller/basic/UdiRelevanceController.java index c409414c1..3f5757d00 100644 --- a/src/main/java/com/glxp/api/controller/basic/UdiRelevanceController.java +++ b/src/main/java/com/glxp/api/controller/basic/UdiRelevanceController.java @@ -859,7 +859,7 @@ public class UdiRelevanceController extends BaseController { return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage()); } List list = ybDrugService.getList(ybHcflDetailFilterRequest); - if (list.size() > 0) { + if (list != null && list.size() > 0) { return ResultVOUtils.success(list.get(0)); } return ResultVOUtils.success(null); diff --git a/src/main/java/com/glxp/api/controller/collect/IoCollectOrderBackupController.java b/src/main/java/com/glxp/api/controller/collect/IoCollectOrderBackupController.java index cf46cd435..d6625982f 100644 --- a/src/main/java/com/glxp/api/controller/collect/IoCollectOrderBackupController.java +++ b/src/main/java/com/glxp/api/controller/collect/IoCollectOrderBackupController.java @@ -96,7 +96,10 @@ public class IoCollectOrderBackupController extends BaseController { public BaseResponse orderUpload(@RequestBody CollectOrderRequest collectOrderRequest) { if (StrUtil.isEmpty(collectOrderRequest.getBillNo())) return ResultVOUtils.error(500, "单据号不能为空"); - ioCollectOrderBackupService.orderUpload(collectOrderRequest.getBillNo()); + Boolean aBoolean = ioCollectOrderBackupService.orderUpload(collectOrderRequest.getBillNo()); + if (!aBoolean){ + return ResultVOUtils.error("上传失败"); + } return ResultVOUtils.success(); } diff --git a/src/main/java/com/glxp/api/controller/collect/IoCollectOrderController.java b/src/main/java/com/glxp/api/controller/collect/IoCollectOrderController.java index 1091cd2a8..4b597d430 100644 --- a/src/main/java/com/glxp/api/controller/collect/IoCollectOrderController.java +++ b/src/main/java/com/glxp/api/controller/collect/IoCollectOrderController.java @@ -82,7 +82,7 @@ public class IoCollectOrderController extends BaseController { request.setLimit(100); request.setUserId(userId.toString()); page = basicCollectUserService.filterList(request); - if (page != null) { + if (page != null && page.size() > 0) { workPlaceCodes = page.stream() .map(UserWorkResponse::getWorkplaceId) .collect(Collectors.toList()); diff --git a/src/main/java/com/glxp/api/controller/collect/RelCodeBatchController.java b/src/main/java/com/glxp/api/controller/collect/RelCodeBatchController.java index ea5e99920..b854a721b 100644 --- a/src/main/java/com/glxp/api/controller/collect/RelCodeBatchController.java +++ b/src/main/java/com/glxp/api/controller/collect/RelCodeBatchController.java @@ -9,6 +9,7 @@ import com.glxp.api.constant.RedissonCacheKey; import com.glxp.api.controller.BaseController; import com.glxp.api.entity.collect.RelCodeBatch; import com.glxp.api.req.collect.RelCodeBatchRequest; +import com.glxp.api.req.collect.RelCodeDetailRequest; import com.glxp.api.res.PageSimpleResponse; import com.glxp.api.res.collect.RelCodeBatchResponse; import com.glxp.api.service.collect.RelCodeBatchService; @@ -54,6 +55,18 @@ public class RelCodeBatchController extends BaseController { return ResultVOUtils.successMsg("添加成功!"); } + /** + * 添加拼箱 + * @param relCodeBatchRequest + * @return + */ + @RepeatSubmit() + @PostMapping("/udiwms/relCode/batch/addRelCodeSpellBox") + public BaseResponse addRelCodeSpellBox(@RequestBody @Valid List relCodeBatchRequest,BindingResult bindingResult) { + relCodeBatchService.addRelCodeSpellBox(relCodeBatchRequest); + return ResultVOUtils.successMsg("添加成功!"); + } + @GetMapping("/udiwms/relCode/batch/filter") public BaseResponse list(RelCodeBatchRequest relCodeBatchRequest, BindingResult bindingResult) { List relCodeBatchResponses = relCodeBatchService.filterList(relCodeBatchRequest); @@ -83,4 +96,19 @@ public class RelCodeBatchController extends BaseController { return ResultVOUtils.success("修改成功!"); } + + + @GetMapping("/udiwms/relCode/batch/deleteDetail") + public BaseResponse deleteDetail(@RequestParam("curCode") String curCode) { + relCodeBatchService.deleteDetail(curCode); + return ResultVOUtils.success("删除成功"); + } + + + @PostMapping("/udiwms/relCode/batch/deleteAllDetail") + public BaseResponse deleteAllDetail(@RequestBody List detailList) { + relCodeBatchService.deleteAllDetail(detailList); + return ResultVOUtils.success("清空成功"); + } + } 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 6515b47a4..0c4b199e9 100644 --- a/src/main/java/com/glxp/api/controller/inout/IoCodeTempController.java +++ b/src/main/java/com/glxp/api/controller/inout/IoCodeTempController.java @@ -10,14 +10,13 @@ import com.glxp.api.entity.collect.IoCollectOrder; import com.glxp.api.entity.collect.IoCollectOrderOrigin; import com.glxp.api.entity.inv.InvProductDetailEntity; import com.glxp.api.exception.JsonException; +import com.glxp.api.req.collect.CollectOrderBizRequest; import com.glxp.api.req.collect.CollectOrderRequest; +import com.glxp.api.res.collect.CollectOrderBizResponse; import com.glxp.api.res.collect.IoCollectOrderResponse; import com.glxp.api.res.inout.IoOrderDetailCodeResponse; import com.glxp.api.res.inout.VailCodeResultResponse; -import com.glxp.api.service.collect.IoCollectCodeService; -import com.glxp.api.service.collect.IoCollectOrderBizBackupService; -import com.glxp.api.service.collect.IoCollectOrderService; -import com.glxp.api.service.collect.IoCollectOriginService; +import com.glxp.api.service.collect.*; import com.glxp.api.service.inout.impl.IoCodeService; import com.glxp.api.service.inv.impl.InvProductDetailService; import org.aspectj.weaver.ast.Var; @@ -117,6 +116,9 @@ public class IoCodeTempController extends BaseController { @Resource IoSplitFifoInvService ioSplitFifoInvService; + @Resource + IoCollectOrderBackupService ioCollectOrderBackupService; + /** * PDA-----单据上传 */ @@ -319,7 +321,7 @@ public class IoCodeTempController extends BaseController { UdiRelevanceResponse checkUdi = udiRelevanceService.selectByNameCode(udiEntity.getUdi()); if (checkUdi == null) { - return ResultVOUtils.error(500, "产品字典不存在此产品!"); + return ResultVOUtils.error(500, "耗材字典不存在此产品!"); } boolean checkSuccess = true; String lostMsg = ""; @@ -593,6 +595,8 @@ public class IoCodeTempController extends BaseController { @Resource IoSplitFifoCodeService fifoCodeService; + @Resource + IoSplitCodeService splitCodeService; @Transactional(rollbackFor = Exception.class) public BaseResponse addMaterOrder(AddOrderRequest addOrderRequest, UdiEntity udiEntity, String code) { @@ -804,6 +808,24 @@ public class IoCodeTempController extends BaseController { } + //校验码表是否已经存在追溯码 io_code_temp + IoCodeTempEntity codeTempEntity1 = codeTempService.selectByCode(code, udiEntity.getBatchNo(), bussinessTypeEntity.getAction()); + if (codeTempEntity1 != null) { + return ResultVOUtils.error(533, "扫码重复或当前追溯码已存在草稿单据中!"); + } + //校验工位存量是否存在 + if (bussinessTypeEntity.getAction().equals(ConstantType.SPLIT_OUT)) { + IoSplitFifoCodeEntity fifoCodeEntity = fifoCodeService.findByCode(code, addOrderRequest.getWorkPlaceCode()); + if (fifoCodeEntity != null && StrUtil.isNotEmpty(fifoCodeEntity.getSerialNo())) { + return ResultVOUtils.error(533, "当前追溯码已存在!"); + } + } else { + + IoSplitFifoCodeEntity fifoCodeEntity = fifoCodeService.findByCode(code, addOrderRequest.getWorkPlaceCode()); + if (fifoCodeEntity == null) { + return ResultVOUtils.error(500, "当前追溯码未上货!"); + } + } //校验预验收是否已存在 if (bussinessTypeEntity.getActionType() == ConstantStatus.ACTION_TYPE_PREIN && bussinessTypeEntity.getMainAction().equals(ConstantType.TYPE_PUT)) { if (StrUtil.isNotEmpty(udiEntity.getSerialNo())) { @@ -851,14 +873,6 @@ public class IoCodeTempController extends BaseController { addOrderRequest.setFromCorp(fromCorp); } - //校验工位存量是否存在 - if (bussinessTypeEntity.getAction().equals(ConstantType.SPLIT_OUT)) { - IoSplitFifoCodeEntity fifoCodeEntity = fifoCodeService.findByCode(code, null); - if (fifoCodeEntity != null && StrUtil.isNotEmpty(fifoCodeEntity.getSerialNo())) { - return ResultVOUtils.error(500, "当前追溯码已存在!"); - } - } - //先生成扫码单据 IoOrderEntity orderEntity = orderService.findByBillNo(orderId); @@ -1291,33 +1305,36 @@ public class IoCodeTempController extends BaseController { } - - //校验工位存量是否存在 + //校验码表是否已经存在追溯码 io_code_temp + IoCodeTempEntity codeTempEntity = codeTempService.selectByCode(code, udiEntity.getBatchNo(), bussinessTypeEntity.getAction()); + if (codeTempEntity != null) { + return ResultVOUtils.error(533, "扫码重复或当前追溯码已存在草稿单据中!"); + } + //------工位上货相关-----校验工位存量是否存在---- if (bussinessTypeEntity.getAction().equals(ConstantType.SPLIT_OUT)) { - //校验码表是否已经存在追溯码 io_code_temp - IoCodeTempEntity codeTempEntity = codeTempService.selectByCode(code,udiEntity.getBatchNo()); - if (codeTempEntity != null){ - return ResultVOUtils.error(533,"当前追溯码已存在草稿单据中!"); - } IoSplitFifoCodeEntity fifoCodeEntity = fifoCodeService.findByCode(code, addOrderRequest.getWorkPlaceCode()); if (fifoCodeEntity != null && StrUtil.isNotEmpty(fifoCodeEntity.getSerialNo())) { return ResultVOUtils.error(533, "当前追溯码已存在!"); } - } else { + IoSplitCodeEntity splitCodeEntity = splitCodeService.findByCode(code); + if (splitCodeEntity != null && StrUtil.isNotEmpty(splitCodeEntity.getSerialNo())) { + return ResultVOUtils.error(533, "当前追溯码已存在!"); + } + + } else if (bussinessTypeEntity.getAction().equals(ConstantType.SPLIT_RETURN)) { IoSplitFifoCodeEntity fifoCodeEntity = fifoCodeService.findByCode(code, addOrderRequest.getWorkPlaceCode()); if (fifoCodeEntity == null) { return ResultVOUtils.error(500, "当前追溯码未上货!"); } - IoCodeTempEntity codeTempEntity = codeTempService.selectByCode(code,udiEntity.getBatchNo()); - if (codeTempEntity != null){ - return ResultVOUtils.error(533,"当前追溯码已存在草稿单据中!"); + + IoSplitCodeEntity splitCodeEntity = splitCodeService.findByCode(code); + if (splitCodeEntity != null && StrUtil.isNotEmpty(splitCodeEntity.getSerialNo())) { + return ResultVOUtils.error(533, "当前追溯码已经拆零,无法退货!"); } } - - if (addOrderRequest.getFromCorp() == null || StrUtil.isNotEmpty(addOrderRequest.getSickerAdNum())) { String fromCorp = ioAddInoutService.updateCorp(bussinessTypeEntity, addOrderRequest.getFromCorp(), addOrderRequest.getSickerAdNum()); addOrderRequest.setFromCorp(fromCorp); @@ -2612,11 +2629,14 @@ public class IoCodeTempController extends BaseController { } String orderFinishBillNo = addOrderCodeRequest.getOrderFinishBillNo(); - List list = ioCollectCodeService.list(new LambdaUpdateWrapper().eq(IoCollectCode::getBillNo, orderFinishBillNo)); - if (CollUtil.isEmpty(list)) return ResultVOUtils.error(500, "未找到已完成单的码明细"); +// List list = ioCollectCodeService.list(new LambdaUpdateWrapper().eq(IoCollectCode::getBillNo, orderFinishBillNo)); + CollectOrderBizRequest collectOrderBizRequest = new CollectOrderBizRequest(); + collectOrderBizRequest.setOrderIdFk(orderFinishBillNo); + List collectOrderBizResponses = ioCollectOrderBackupService.combieOrderDetail(collectOrderBizRequest); + if (CollUtil.isEmpty(collectOrderBizResponses)) return ResultVOUtils.error(500, "未找到已完成单的码明细"); List codeList = new ArrayList<>(); - list.forEach(item -> { - String code = item.getCode(); + collectOrderBizResponses.forEach(item -> { + String code = item.getFinishUdiCode(); Integer reCountObj = item.getScanCount(); int reCount = reCountObj != null ? reCountObj : 0; // 如果reCountObj为null,则默认为0次迭代 for (int i = 0; i < reCount; i++) { diff --git a/src/main/java/com/glxp/api/controller/inout/IoOrderController.java b/src/main/java/com/glxp/api/controller/inout/IoOrderController.java index 5f198dcb4..ee22b8439 100644 --- a/src/main/java/com/glxp/api/controller/inout/IoOrderController.java +++ b/src/main/java/com/glxp/api/controller/inout/IoOrderController.java @@ -327,7 +327,7 @@ public class IoOrderController extends BaseController { @AuthRuleAnnotation("") @PostMapping("warehouse/inout/saveOrderWeb") @Log(title = "单据管理", businessType = BusinessType.UPDATE) - public BaseResponse saveOrderWeb(@RequestBody AddOrderRequest addOrderRequest){ + public BaseResponse saveOrderWeb(@RequestBody AddOrderRequest addOrderRequest) { IoOrderEntity orderEntity = new IoOrderEntity(); if (addOrderRequest.getWorkPlaceCode() != null) { @@ -352,7 +352,7 @@ public class IoOrderController extends BaseController { } - if (addOrderRequest.getAction().equals(ConstantType.SPLIT_RETURN) || addOrderRequest.getAction().equals(ConstantType.SPLIT_OUT)){ + if (addOrderRequest.getAction().equals(ConstantType.SPLIT_RETURN) || addOrderRequest.getAction().equals(ConstantType.SPLIT_OUT)) { orderEntity.setStatus(1); } orderEntity.setFromCorp(ioAddInoutService.updateCorp(bussinessTypeEntity, addOrderRequest.getFromCorp(), addOrderRequest.getSickerAdNum())); @@ -420,7 +420,7 @@ public class IoOrderController extends BaseController { //上货校验追溯码是否重复 if (bussinessTypeEntity.getAction().equals(ConstantType.SPLIT_OUT)) { for (IoCodeTempEntity codeTempEntity : codeTempEntities) { - IoSplitFifoCodeEntity fifoCodeEntity = fifoCodeService.findByCode(codeTempEntity.getCode(),addOrderRequest.getWorkPlaceCode() ); + IoSplitFifoCodeEntity fifoCodeEntity = fifoCodeService.findByCode(codeTempEntity.getCode(), addOrderRequest.getWorkPlaceCode()); if (fifoCodeEntity != null && StrUtil.isNotEmpty(fifoCodeEntity.getSerialNo())) { return ResultVOUtils.error(500, "当前追溯码:" + fifoCodeEntity.getCode() + "已存在!"); } @@ -445,7 +445,6 @@ public class IoOrderController extends BaseController { } if (checkInoutService.checkManual(addOrderRequest.getBillNo())) { if (CollUtil.isNotEmpty(orderDetailBizEntities)) { - if (bussinessTypeEntity.getCheckWebNew() == 1) { String errMsg = checkInoutService.bizOrderCheck(orderDetailBizEntities, orderDetailCodeEntities); if (StrUtil.isNotEmpty(errMsg)) { @@ -481,8 +480,6 @@ public class IoOrderController extends BaseController { ioAddInoutService.dealProcess(orderEntity); checkInoutService.check(addOrderRequest.getBillNo()); } - - } else { return ResultVOUtils.error(500, "单据校验提交失败,请先录入业务单据!"); } @@ -1359,8 +1356,8 @@ public class IoOrderController extends BaseController { @PostMapping("/udiwms/inout/order/upProcessing") public BaseResponse isProcessing(@RequestBody AddOrderRequest addOrderRequest) { IoOrderEntity order = orderService.findByBillNo(addOrderRequest.getBillNo()); - if (order.getStatus() == 3){ - return ResultVOUtils.error(501,"此订单正在处理中"); + if (order.getStatus() == 3) { + return ResultVOUtils.error(501, "此订单正在处理中"); } order.setStatus(3);//订单从草稿改变成为3 表示正在处理中 order.setUpdateUser(getUserId() + ""); @@ -1371,12 +1368,11 @@ public class IoOrderController extends BaseController { @GetMapping("/udiwms/inout/order/getProcessingOrder") public BaseResponse getProcessingOrder(AddOrderRequest addOrderRequest) { - IoOrderResponse order = orderService.findByWorkPlaceCode(addOrderRequest.getWorkPlaceCode() + "",getUserId()); + IoOrderResponse order = orderService.findByWorkPlaceCode(addOrderRequest.getWorkPlaceCode() + "", getUserId()); return ResultVOUtils.success(order); } - public String checkId(IoOrderDetailBizEntity bizEntity, IoCodeTempEntity codeEntity) { if (bizEntity.getBindRlFk().longValue() == codeEntity.getRelId().longValue()) { diff --git a/src/main/java/com/glxp/api/dao/auth/SysWorkplaceDao.java b/src/main/java/com/glxp/api/dao/auth/SysWorkplaceDao.java index cfff96b79..3fd715508 100644 --- a/src/main/java/com/glxp/api/dao/auth/SysWorkplaceDao.java +++ b/src/main/java/com/glxp/api/dao/auth/SysWorkplaceDao.java @@ -23,4 +23,5 @@ public interface SysWorkplaceDao extends BaseMapper { List getAllByBusType(String busTypeCode); + List getListByBusType(@Param("request") SysWorkplaceRequest request); } diff --git a/src/main/java/com/glxp/api/dao/collect/IoCollectOrderCodeManMapper.java b/src/main/java/com/glxp/api/dao/collect/IoCollectOrderCodeManMapper.java index 0133e5ba2..6bdfeedd1 100644 --- a/src/main/java/com/glxp/api/dao/collect/IoCollectOrderCodeManMapper.java +++ b/src/main/java/com/glxp/api/dao/collect/IoCollectOrderCodeManMapper.java @@ -14,4 +14,7 @@ public interface IoCollectOrderCodeManMapper extends BaseMapper filterList(CollectOrderCodeManRequest collectOrderCodeManRequest); + IoCollectOrderCodeMan exitCode(CollectOrderCodeManRequest collectOrderCodeManRequest); + + } diff --git a/src/main/java/com/glxp/api/entity/collect/RelCodeBatch.java b/src/main/java/com/glxp/api/entity/collect/RelCodeBatch.java index 6b21f11bb..035b75f82 100644 --- a/src/main/java/com/glxp/api/entity/collect/RelCodeBatch.java +++ b/src/main/java/com/glxp/api/entity/collect/RelCodeBatch.java @@ -65,14 +65,14 @@ public class RelCodeBatch implements Serializable { */ @TableField(value = "madeDate") @ApiModelProperty(value="生产日期") - private Date madeDate; + private String madeDate; /** * 有效期至 */ @TableField(value = "validateDate") @ApiModelProperty(value="有效期至") - private Date validateDate; + private String validateDate; /** * 生产车间 diff --git a/src/main/java/com/glxp/api/entity/system/SyncDataSetEntity.java b/src/main/java/com/glxp/api/entity/system/SyncDataSetEntity.java index b0b38dab4..e6bc67e84 100644 --- a/src/main/java/com/glxp/api/entity/system/SyncDataSetEntity.java +++ b/src/main/java/com/glxp/api/entity/system/SyncDataSetEntity.java @@ -83,4 +83,9 @@ public class SyncDataSetEntity { private int deviceUpkeep;//保养单 private int produceBusiness;//生产企业 PRODUCE_BUSINESS_DATA + /** + * 设备任务 + */ + private int drugDataTask; + } diff --git a/src/main/java/com/glxp/api/req/auth/SysWorkplaceRequest.java b/src/main/java/com/glxp/api/req/auth/SysWorkplaceRequest.java index d9d327a52..421a5b7cf 100644 --- a/src/main/java/com/glxp/api/req/auth/SysWorkplaceRequest.java +++ b/src/main/java/com/glxp/api/req/auth/SysWorkplaceRequest.java @@ -30,6 +30,8 @@ public class SysWorkplaceRequest extends ListPageRequest { private List workPlaceIds; private String chargeUser; + private String userId; + private String busType; private Boolean userIdFlag; diff --git a/src/main/java/com/glxp/api/req/collect/CollectOrderCodeManRequest.java b/src/main/java/com/glxp/api/req/collect/CollectOrderCodeManRequest.java index ad6093180..149bcd301 100644 --- a/src/main/java/com/glxp/api/req/collect/CollectOrderCodeManRequest.java +++ b/src/main/java/com/glxp/api/req/collect/CollectOrderCodeManRequest.java @@ -29,5 +29,6 @@ public class CollectOrderCodeManRequest extends ListPageRequest { private Long updateUser; private Long bizIdFk; + private String busType; } diff --git a/src/main/java/com/glxp/api/req/collect/RelCodeBatchRequest.java b/src/main/java/com/glxp/api/req/collect/RelCodeBatchRequest.java index 840665143..8155bbf08 100644 --- a/src/main/java/com/glxp/api/req/collect/RelCodeBatchRequest.java +++ b/src/main/java/com/glxp/api/req/collect/RelCodeBatchRequest.java @@ -46,12 +46,12 @@ public class RelCodeBatchRequest extends ListPageRequest { /** * 生产日期 */ - private Date madeDate; + private String madeDate; /** * 有效期至 */ - private Date validateDate; + private String validateDate; /** * 生产车间 diff --git a/src/main/java/com/glxp/api/res/collect/RelCodeBatchResponse.java b/src/main/java/com/glxp/api/res/collect/RelCodeBatchResponse.java index 83196f9cb..4cc2daf73 100644 --- a/src/main/java/com/glxp/api/res/collect/RelCodeBatchResponse.java +++ b/src/main/java/com/glxp/api/res/collect/RelCodeBatchResponse.java @@ -63,4 +63,22 @@ public class RelCodeBatchResponse { * 负责人 */ private String lineManager; + + /** + * 产品名称,通用名称 + */ + private String cpmctymc; + /** + * 包含下级数量 + */ + private Integer bhxjsl; + + /** + * 包装单位 + */ + private String packUnit; + /** + * 包装级别 + */ + private Integer packLayer; } diff --git a/src/main/java/com/glxp/api/res/inout/IoOrderDetailBizResponse.java b/src/main/java/com/glxp/api/res/inout/IoOrderDetailBizResponse.java index addf667e7..49a0a97e9 100644 --- a/src/main/java/com/glxp/api/res/inout/IoOrderDetailBizResponse.java +++ b/src/main/java/com/glxp/api/res/inout/IoOrderDetailBizResponse.java @@ -191,5 +191,7 @@ public class IoOrderDetailBizResponse { private String prepnUnit; + private String action; + } diff --git a/src/main/java/com/glxp/api/res/sync/SpsSyncDrugDataTaskResponse.java b/src/main/java/com/glxp/api/res/sync/SpsSyncDrugDataTaskResponse.java new file mode 100644 index 000000000..d44b33d2e --- /dev/null +++ b/src/main/java/com/glxp/api/res/sync/SpsSyncDrugDataTaskResponse.java @@ -0,0 +1,16 @@ +package com.glxp.api.res.sync; + +import com.glxp.api.entity.collect.RelCodeBatch; +import com.glxp.api.entity.collect.RelCodeDetail; +import lombok.Data; + +import java.util.List; + +@Data +public class SpsSyncDrugDataTaskResponse extends BaseSyncResponse { + + public List relCodeBatches; + + public List relCodeDetails; + +} diff --git a/src/main/java/com/glxp/api/service/auth/SysWorkplaceService.java b/src/main/java/com/glxp/api/service/auth/SysWorkplaceService.java index a46e18705..96eb7a248 100644 --- a/src/main/java/com/glxp/api/service/auth/SysWorkplaceService.java +++ b/src/main/java/com/glxp/api/service/auth/SysWorkplaceService.java @@ -81,4 +81,15 @@ public class SysWorkplaceService extends ServiceImpl getListByBusType(SysWorkplaceRequest request) { + if (null == request) { + return Collections.emptyList(); + } + if (null != request.getPage() && null != request.getLimit()) { + PageHelper.offsetPage((request.getPage() - 1) * request.getLimit(), request.getLimit()); + } + List page = super.baseMapper.getListByBusType(request); + return page; + } } diff --git a/src/main/java/com/glxp/api/service/basic/UdiContrastService.java b/src/main/java/com/glxp/api/service/basic/UdiContrastService.java index f6db79e29..e761f0feb 100644 --- a/src/main/java/com/glxp/api/service/basic/UdiContrastService.java +++ b/src/main/java/com/glxp/api/service/basic/UdiContrastService.java @@ -285,7 +285,7 @@ public class UdiContrastService { UdiProductEntity udiProductEntity = new UdiProductEntity(); BeanUtils.copyProperties(thrProductsEntity, udiProductEntity); udiProductEntity.setId(IdUtil.getSnowflakeNextId()); - if (list.size() > 0) { + if (list != null && list.size() > 0) { YbDrug ybDrug = list.get(0); // udiProductEntity.setNameCode(thrProductsEntity.getCode()); udiProductEntity.setPrepnSpec(ybDrug.getRealityOutlook()); diff --git a/src/main/java/com/glxp/api/service/collect/IoCollectOrderBackupService.java b/src/main/java/com/glxp/api/service/collect/IoCollectOrderBackupService.java index 73cee8413..caeee8dea 100644 --- a/src/main/java/com/glxp/api/service/collect/IoCollectOrderBackupService.java +++ b/src/main/java/com/glxp/api/service/collect/IoCollectOrderBackupService.java @@ -273,7 +273,7 @@ public class IoCollectOrderBackupService extends ServiceImpl filterList(CollectOrderCodeManRequest collectOrderCodeManRequest) { if (collectOrderCodeManRequest == null) { return Collections.emptyList(); @@ -99,6 +102,7 @@ public class IoCollectOrderCodeManService extends ServiceImpl().eq(IoCollectOrderCodeMan::getOrderIdFk, billNo) .eq(IoCollectOrderCodeMan::getUdiCode, code).last("limit 1")); @@ -223,6 +227,19 @@ public class IoCollectOrderCodeManService extends ServiceImpl().eq(IoCollectOrderCodeMan::getOrderIdFk, billNo)); } + + IoCollectOrderCodeMan exitCode(CollectOrderCodeManRequest collectOrderCodeManRequest) { + return collectOrderCodeManMapper.exitCode(collectOrderCodeManRequest); + } + } diff --git a/src/main/java/com/glxp/api/service/collect/IoSplitDesOrderService.java b/src/main/java/com/glxp/api/service/collect/IoSplitDesOrderService.java index de614771f..178c8490a 100644 --- a/src/main/java/com/glxp/api/service/collect/IoSplitDesOrderService.java +++ b/src/main/java/com/glxp/api/service/collect/IoSplitDesOrderService.java @@ -283,7 +283,7 @@ public class IoSplitDesOrderService extends ServiceImpl().eq(RelCodeDetail::getBatchIdFk,id)); this.removeById(id); } + + @Transactional(rollbackFor = Exception.class) + public void addRelCodeSpellBox(List relCodeBatchRequests) { + if (CollUtil.isEmpty(relCodeBatchRequests)){ + throw new JsonException("单据信息异常!"); + } + relCodeBatchRequests.forEach( item -> { + this.add(item); + }); + } + + @Transactional(rollbackFor = Exception.class) + public void deleteDetail(String curCode) { + List list = relCodeDetailService.list(new LambdaQueryWrapper().eq(RelCodeDetail::getParentCode, curCode)); + if (CollUtil.isNotEmpty(list)){ + List batchIds = list.stream().map(RelCodeDetail::getBatchIdFk).collect(Collectors.toList()); + this.removeBatchByIds(batchIds); + relCodeDetailService.remove(new LambdaQueryWrapper().in(RelCodeDetail::getBatchIdFk,batchIds)); + } + } + + @Transactional(rollbackFor = Exception.class) + public void deleteAllDetail(List detailList) { + if (CollUtil.isNotEmpty(detailList)){ + detailList.forEach( item -> { + String curCode = item.getCurCode(); + this.deleteDetail(curCode); + }); + } + } } diff --git a/src/main/java/com/glxp/api/service/collect/RelCodeDetailService.java b/src/main/java/com/glxp/api/service/collect/RelCodeDetailService.java index a5cf1cc97..87e55f1db 100644 --- a/src/main/java/com/glxp/api/service/collect/RelCodeDetailService.java +++ b/src/main/java/com/glxp/api/service/collect/RelCodeDetailService.java @@ -1,7 +1,9 @@ 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.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.github.pagehelper.PageHelper; import com.glxp.api.dao.basic.BasicProductsDao; import com.glxp.api.entity.basic.BasicProductsEntity; @@ -50,6 +52,11 @@ public class RelCodeDetailService extends ServiceImpl list = this.baseMapper.selectList(new LambdaQueryWrapper().eq(RelCodeDetail::getCurCode, curCode)); + if (CollUtil.isNotEmpty(list)){ + throw new JsonException("当前条码关联关系已被维护!"); + } if(StrUtil.isNotBlank(parentCode)){ if (parentCode.endsWith("\u001D")) { parentCode = parentCode.replace("\u001D", ""); @@ -80,7 +87,7 @@ public class RelCodeDetailService extends ServiceImpl backCodeList = new ArrayList<>(); @@ -1165,18 +1164,13 @@ public class IoCheckInoutService { backCodeList.add(codeEntity); } } - //更新预验收单为已被选入 OrderEditRequest orderEditRequest = new OrderEditRequest(); orderEditRequest.setOrderIds(orderList); orderEditRequest.setPreInSelected(1); orderService.updateBatchOrder(orderEditRequest); genBackOrder(orderEntity, backCodeList); - - } - - } else { //按仓库货位退货 List backCodeList = new ArrayList<>(); @@ -1249,6 +1243,7 @@ public class IoCheckInoutService { //拆零预出库退回 List codeList = codeService.findByOrderId(orderEntity.getBillNo()); fifoInvService.removeInv(codeList, orderEntity.getWorkPlaceCode()); + splitFifoCodeService.updateAllInvAlert(orderEntity.getWorkPlaceCode()); } } } diff --git a/src/main/java/com/glxp/api/service/inout/IoCodeTempService.java b/src/main/java/com/glxp/api/service/inout/IoCodeTempService.java index fff4ae69f..c528a6576 100644 --- a/src/main/java/com/glxp/api/service/inout/IoCodeTempService.java +++ b/src/main/java/com/glxp/api/service/inout/IoCodeTempService.java @@ -50,5 +50,5 @@ public interface IoCodeTempService { Boolean checkTempCode(IoCodeTempEntity ioCodeTempEntity); - IoCodeTempEntity selectByCode(String code,String batchNo); + IoCodeTempEntity selectByCode(String code,String batchNo,String action); } diff --git a/src/main/java/com/glxp/api/service/inout/IoGenInvService.java b/src/main/java/com/glxp/api/service/inout/IoGenInvService.java index 1675880da..8e6eb77c7 100644 --- a/src/main/java/com/glxp/api/service/inout/IoGenInvService.java +++ b/src/main/java/com/glxp/api/service/inout/IoGenInvService.java @@ -135,8 +135,8 @@ public class IoGenInvService { if (bussinessTypeEntity.getActionType() == (ConstantStatus.ACTION_TYPE_NORMAL) //带票(正常) && bussinessTypeEntity.getMainAction().equals(ConstantType.TYPE_PUT) //入库 && bussinessTypeEntity.getDevInType().equals(1) - ) { - deviceChangeOrderService.generateDeviceInfo(orderEntity,codeEnttities); + ) { + deviceChangeOrderService.generateDeviceInfo(orderEntity, codeEnttities); } } diff --git a/src/main/java/com/glxp/api/service/inout/IoSplitCodeService.java b/src/main/java/com/glxp/api/service/inout/IoSplitCodeService.java index 90b10b2e4..229f77fe6 100644 --- a/src/main/java/com/glxp/api/service/inout/IoSplitCodeService.java +++ b/src/main/java/com/glxp/api/service/inout/IoSplitCodeService.java @@ -33,6 +33,9 @@ import javax.annotation.Resource; import java.util.*; import java.util.stream.Collectors; +/** + * 拆零码明细 + */ @Service public class IoSplitCodeService extends ServiceImpl { @@ -82,6 +85,11 @@ public class IoSplitCodeService extends ServiceImpl() + .eq(IoSplitCodeEntity::getCode, code).last("limit 1")); + } + public void splitRemove(IoCollectOrderBiz collectOrderBiz, IoCollectOrder collectOrder, Long putWorkPlaceCode) { //1.按照先进先出原则,查询拆零表,获取拆零表ID List ioSplitCodeEntities = findSplitCodes(collectOrderBiz.getRelId(), collectOrderBiz.getBatchNo(), putWorkPlaceCode); diff --git a/src/main/java/com/glxp/api/service/inout/impl/IoCodeTempServiceImpl.java b/src/main/java/com/glxp/api/service/inout/impl/IoCodeTempServiceImpl.java index 2e3e04927..70171a0e4 100644 --- a/src/main/java/com/glxp/api/service/inout/impl/IoCodeTempServiceImpl.java +++ b/src/main/java/com/glxp/api/service/inout/impl/IoCodeTempServiceImpl.java @@ -154,10 +154,11 @@ public class IoCodeTempServiceImpl implements IoCodeTempService { } @Override - public IoCodeTempEntity selectByCode(String code,String batchNo) { + public IoCodeTempEntity selectByCode(String code,String batchNo,String action) { QueryWrapper ew = new QueryWrapper<>(); ew.eq("code",code); ew.eq(StrUtil.isNotEmpty(batchNo), "batchNo", batchNo); + ew.eq(StrUtil.isNotEmpty(action), "action", action); return ioCodeTempDao.selectOne(ew); } diff --git a/src/main/java/com/glxp/api/service/sync/HeartService.java b/src/main/java/com/glxp/api/service/sync/HeartService.java index 5b29286ab..b15ee12ac 100644 --- a/src/main/java/com/glxp/api/service/sync/HeartService.java +++ b/src/main/java/com/glxp/api/service/sync/HeartService.java @@ -3,8 +3,12 @@ package com.glxp.api.service.sync; import cn.hutool.core.bean.BeanUtil; import com.glxp.api.dao.dev.*; import com.glxp.api.dao.thrsys.ThrManufacturerMapper; +import com.glxp.api.entity.collect.RelCodeBatch; +import com.glxp.api.entity.collect.RelCodeDetail; import com.glxp.api.entity.dev.*; import com.glxp.api.res.inv.InnerOrderPrintResponse; +import com.glxp.api.service.collect.RelCodeBatchService; +import com.glxp.api.service.collect.RelCodeDetailService; import com.glxp.api.service.dev.*; import org.junit.Test; import org.springframework.beans.BeanUtils; @@ -69,6 +73,7 @@ import java.io.IOException; import java.time.LocalDateTime; import java.util.*; import java.util.function.Function; +import java.util.stream.Collectors; import static com.glxp.api.constant.BasicProcessStatus.NEW_ALL_ORDER; import static com.glxp.api.constant.BasicProcessStatus.NEW_ALL_UDIS; @@ -305,6 +310,12 @@ public class HeartService { // if (needExec(info.getDeviceTask())) { //默认开启 uploadData(exportType, taskId, x -> x.getDeviceTaskData(info, taskId, now, syncTime)); +// } + break; + case DRUG_DATA_TASK: +// if (needExec(info.getDeviceTask())) { + //默认开启 + uploadData(exportType, taskId, x -> x.getDrugDataTaskData(info, taskId, now, syncTime)); // } break; } @@ -1108,6 +1119,10 @@ public class HeartService { @Resource DeviceInspectTaskService deviceInspectTaskService; @Resource + RelCodeDetailService relCodeDetailService; + @Resource + RelCodeBatchService relCodeBatchService; + @Resource DeviceInspectTaskDetailService deviceInspectTaskDetailService; @Value("${file_path}") private String filePath; @@ -1164,6 +1179,50 @@ public class HeartService { } return dataResponse; } + /** + * @param info + * @param taskId + * @param now + * @param syncTime + * @return + */ + private SpsSyncDrugDataTaskResponse getDrugDataTaskData(SyncDataSetEntity info, String taskId, Date now, Date syncTime) { + SpsSyncDrugDataTaskResponse dataResponse = null; + Map syncTimeMap = new WeakHashMap<>(3); + syncTimeMap.put("isNew", true); + boolean ge = false; + if (syncTime != null) { + ge = true; + } + StringBuffer remark = new StringBuffer(); + if (needExec(info.getDrugDataTask())) { + Map map = basicExportStatusTimeInfo(now, BasicExportStatusTimeEnum.DRUG_DATA_TASK); + List relCodeBatches = relCodeBatchService.list(Wrappers.lambdaQuery(RelCodeBatch.class) + .le(!ge && (boolean) map.get("isNew"), RelCodeBatch::getUpdateTime, now) + .between(ge, RelCodeBatch::getUpdateTime, syncTime, now) + .between(!ge && !(boolean) map.get("isNew"), RelCodeBatch::getUpdateTime + , map.get("oldDate"), now) + ); + if (CollectionUtil.isNotEmpty(relCodeBatches)) { + dataResponse = new SpsSyncDrugDataTaskResponse(); + dataResponse.setRelCodeBatches(relCodeBatches); + + //增加明细数据 + List batchIds = relCodeBatches.stream().map(RelCodeBatch::getId).collect(Collectors.toList()); + List list = relCodeDetailService.list(Wrappers.lambdaQuery(RelCodeDetail.class) + .in(RelCodeDetail::getBatchIdFk,batchIds)); + dataResponse.setRelCodeDetails(list); + + remark.append("药品关联信息任务:").append(relCodeBatches.size()).append("条\n"); + } + } + if (dataResponse != null) { + dataResponse.setTaskId(taskId); + dataResponse.setType(BasicExportTypeEnum.DRUG_DATA_TASK.getRemark()); + dataResponse.setSyncRemark(remark.toString()); + } + return dataResponse; + } /** diff --git a/src/main/java/com/glxp/api/service/thrsys/YbDrugService.java b/src/main/java/com/glxp/api/service/thrsys/YbDrugService.java index 19544d742..70042a569 100644 --- a/src/main/java/com/glxp/api/service/thrsys/YbDrugService.java +++ b/src/main/java/com/glxp/api/service/thrsys/YbDrugService.java @@ -7,12 +7,15 @@ import com.glxp.api.entity.thrsys.YbDrug; import com.glxp.api.http.ErpBasicClient; import com.glxp.api.req.basic.YbDrugDetailFilterRequest; import com.glxp.api.res.PageSimpleResponse; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.util.ArrayList; import java.util.List; @Service +@Slf4j public class YbDrugService { @Resource @@ -25,10 +28,15 @@ public class YbDrugService { ybHcflDetailFilterRequest.setLimit(1); List list = ybDrugMapper.list(ybHcflDetailFilterRequest); if (CollUtil.isEmpty(list)){ - BaseResponse> ybDrugDetail = erpBasicClient.getYbDrugDetail(ybHcflDetailFilterRequest); - PageSimpleResponse data = ybDrugDetail.getData(); - List list1 = data.getList(); - ybDrugMapper.batchSaveOrUpdateByGoodsCode(list1); + List list1 = new ArrayList<>(); + try { + BaseResponse> ybDrugDetail = erpBasicClient.getYbDrugDetail(ybHcflDetailFilterRequest); + PageSimpleResponse data = ybDrugDetail.getData(); + list1 = data.getList(); + }catch (Exception e){ + log.debug("获取国家同步库药品的信息错误",e); + } + if (CollUtil.isNotEmpty(list1)) ybDrugMapper.batchSaveOrUpdateByGoodsCode(list1); return list1; } return list; diff --git a/src/main/java/com/glxp/api/task/SyncHeartTask.java b/src/main/java/com/glxp/api/task/SyncHeartTask.java index f9854bbab..736423d74 100644 --- a/src/main/java/com/glxp/api/task/SyncHeartTask.java +++ b/src/main/java/com/glxp/api/task/SyncHeartTask.java @@ -42,8 +42,8 @@ public class SyncHeartTask implements SchedulingConfigurer { triggerContext -> { ScheduledRequest scheduledRequest = new ScheduledRequest(); scheduledRequest.setCronName("heartTask"); -// ScheduledEntity scheduledEntity = scheduledDao.findScheduled(scheduledRequest); - String cron = "0 0 0 1 * ?"; + ScheduledEntity scheduledEntity = scheduledDao.findScheduled(scheduledRequest); + String cron = scheduledEntity.getCron(); if (cron.isEmpty()) { log.error("cron is null"); } diff --git a/src/main/resources/mybatis/mapper/auth/SysWorkplaceDao.xml b/src/main/resources/mybatis/mapper/auth/SysWorkplaceDao.xml index f2726119e..48b7e1957 100644 --- a/src/main/resources/mybatis/mapper/auth/SysWorkplaceDao.xml +++ b/src/main/resources/mybatis/mapper/auth/SysWorkplaceDao.xml @@ -60,4 +60,56 @@ GROUP BY sys_workplace.workplaceId + diff --git a/src/main/resources/mybatis/mapper/collect/IoCollectOrderCodeManMapper.xml b/src/main/resources/mybatis/mapper/collect/IoCollectOrderCodeManMapper.xml index dddee6f88..203a88349 100644 --- a/src/main/resources/mybatis/mapper/collect/IoCollectOrderCodeManMapper.xml +++ b/src/main/resources/mybatis/mapper/collect/IoCollectOrderCodeManMapper.xml @@ -28,4 +28,20 @@ group by icocm.id + + diff --git a/src/main/resources/mybatis/mapper/collect/RelCodeBatchMapper.xml b/src/main/resources/mybatis/mapper/collect/RelCodeBatchMapper.xml index 3ac701fce..c399c288c 100644 --- a/src/main/resources/mybatis/mapper/collect/RelCodeBatchMapper.xml +++ b/src/main/resources/mybatis/mapper/collect/RelCodeBatchMapper.xml @@ -36,8 +36,13 @@ a.validateDate, a.workShop, a.lineName, - a.lineManager + a.lineManager, + bp.cpmctymc, + bp.bhxjsl, + bp.packLevel AS packLayer, + bp.packUnit from rel_code_batch a + LEFT JOIN basic_products bp ON bp.nameCode = a.productCode AND a.productCode LIKE concat('%', #{productCode}, '%') diff --git a/src/main/resources/mybatis/mapper/inout/IoOrderDetailBizDao.xml b/src/main/resources/mybatis/mapper/inout/IoOrderDetailBizDao.xml index 94a7311b0..7013bb6e7 100644 --- a/src/main/resources/mybatis/mapper/inout/IoOrderDetailBizDao.xml +++ b/src/main/resources/mybatis/mapper/inout/IoOrderDetailBizDao.xml @@ -6,10 +6,12 @@ bp.ggxh, bp.bzgg, bp.prepnUnit, - bp.prepnSpec + bp.prepnSpec, + io.action from io_order_detail_biz left join basic_udirel bu on bu.id = io_order_detail_biz.bindRlFk left join basic_products bp on bu.uuid = bp.uuid + left join io_order io on io.billNo = io_order_detail_biz.orderIdFk AND orderIdFk = #{orderIdFk}