From 2744ae6894337b7348a1e2ca009a0e9ca26a7fae Mon Sep 17 00:00:00 2001 From: anthonywj Date: Fri, 10 Feb 2023 15:38:12 +0800 Subject: [PATCH 01/12] =?UTF-8?q?=E6=9D=A1=E7=A0=81=E7=BC=96=E8=BE=91?= =?UTF-8?q?=EF=BC=8C=E4=BF=AE=E6=94=B9=EF=BC=8C=E7=94=9F=E6=88=90=E5=BA=93?= =?UTF-8?q?=E5=AD=98=E4=BF=AE=E6=94=B9=EF=BC=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../basic/UdiRelevanceController.java | 39 ++++++------ .../controller/basic/UdiRlSupController.java | 13 +++- .../inout/IoCodeTempController.java | 59 ++++++++++++++++++- .../api/entity/inout/IoCodeTempEntity.java | 3 + .../glxp/api/entity/inv/InvProductEntity.java | 4 +- .../api/res/basic/UdiRelevanceResponse.java | 3 + .../basic/impl/UdiRelevanceServiceImpl.java | 1 - .../api/service/inout/IoAddInoutService.java | 1 + .../service/inout/IoCheckInoutService.java | 1 + .../api/service/inout/IoGenInvService.java | 2 +- .../glxp/api/util/udi/UdiCalCountUtil.java | 10 ++++ 11 files changed, 108 insertions(+), 28 deletions(-) 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 0d5d7b067..b685dd674 100644 --- a/src/main/java/com/glxp/api/controller/basic/UdiRelevanceController.java +++ b/src/main/java/com/glxp/api/controller/basic/UdiRelevanceController.java @@ -8,10 +8,7 @@ import com.glxp.api.common.enums.ResultEnum; import com.glxp.api.common.res.BaseResponse; import com.glxp.api.common.util.ResultVOUtils; import com.glxp.api.constant.ConstantStatus; -import com.glxp.api.entity.basic.FilterSysEntity; -import com.glxp.api.entity.basic.UdiEntity; -import com.glxp.api.entity.basic.UdiProductEntity; -import com.glxp.api.entity.basic.UdiRelevanceEntity; +import com.glxp.api.entity.basic.*; import com.glxp.api.entity.system.SystemParamConfigEntity; import com.glxp.api.entity.thrsys.ThrProductsEntity; import com.glxp.api.entity.thrsys.ThrSystemEntity; @@ -25,10 +22,7 @@ import com.glxp.api.res.PageSimpleResponse; import com.glxp.api.res.basic.BasicProductThirdSysResponse; import com.glxp.api.res.basic.UdiRelevanceResponse; import com.glxp.api.service.auth.CustomerService; -import com.glxp.api.service.basic.BasicBackUpdateProductService; -import com.glxp.api.service.basic.BasicUpdateProductService; -import com.glxp.api.service.basic.UdiProductService; -import com.glxp.api.service.basic.UdiRelevanceService; +import com.glxp.api.service.basic.*; import com.glxp.api.service.system.SystemParamConfigService; import com.glxp.api.service.thrsys.ThrDataService; import com.glxp.api.service.thrsys.ThrSystemService; @@ -64,6 +58,9 @@ public class UdiRelevanceController { private ThrSystemService thrSystemService; @Resource ThrDataService thrDataService; + @Resource + UdiRlSupService udiRlSupService; + @AuthRuleAnnotation("") @GetMapping("/udi/udirel/download") @@ -93,7 +90,7 @@ public class UdiRelevanceController { return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage()); } List udiRelevanceResponses = null; - udiRelevanceResponses = udiRelevanceService.selectAllByNameCode(filterUdiRelRequest.getNameCode(), filterUdiRelRequest.getUnitFk()); + udiRelevanceResponses = udiRelevanceService.filterUdiJoinSup(filterUdiRelRequest); PageInfo pageInfo; pageInfo = new PageInfo<>(udiRelevanceResponses); PageSimpleResponse pageSimpleResponse = new PageSimpleResponse<>(); @@ -156,19 +153,17 @@ public class UdiRelevanceController { } udiRelevanceResponses = udiRelevanceService.filterUdiGp(filterUdiRelRequest); - - //todo 供应商器械信息还未完成 -// if (udiRelevanceResponses != null && udiRelevanceResponses.size() > 0) { -// for (UdiRelevanceResponse udiRelevanceResponse : udiRelevanceResponses) { -// CompanyProductRelevanceEntity companyProductRelevanceEntity = -// companyProductRelevanceService.findCompanyProductRelevanceByUdiRlIdFk(udiRelevanceResponse.getId() + "", filterUdiInfoRequest.getCustomerId()); -// if (companyProductRelevanceEntity != null) { -// udiRelevanceResponse.setIsSelect(true); -// } else { -// udiRelevanceResponse.setIsSelect(false); -// } -// } -// } + if (udiRelevanceResponses != null && udiRelevanceResponses.size() > 0) { + for (UdiRelevanceResponse udiRelevanceResponse : udiRelevanceResponses) { + UdiRlSupEntity companyProductRelevanceEntity = + udiRlSupService.findCompanyProductRelevanceByUdiRlIdFk(udiRelevanceResponse.getId() + "", filterUdiRelRequest.getCustomerId()); + if (companyProductRelevanceEntity != null) { + udiRelevanceResponse.setIsSelect(true); + } else { + udiRelevanceResponse.setIsSelect(false); + } + } + } PageInfo pageInfo; pageInfo = new PageInfo<>(udiRelevanceResponses); diff --git a/src/main/java/com/glxp/api/controller/basic/UdiRlSupController.java b/src/main/java/com/glxp/api/controller/basic/UdiRlSupController.java index e1df80e2c..d3d220be1 100644 --- a/src/main/java/com/glxp/api/controller/basic/UdiRlSupController.java +++ b/src/main/java/com/glxp/api/controller/basic/UdiRlSupController.java @@ -1,5 +1,6 @@ package com.glxp.api.controller.basic; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; import com.github.pagehelper.PageInfo; import com.glxp.api.annotation.AuthRuleAnnotation; @@ -102,7 +103,17 @@ public class UdiRlSupController { if (!companyProductRelevanceEntities.isEmpty()) { List erpIds = new ArrayList<>(); for (UdiRlSupEntity udiRlSupEntity : companyProductRelevanceEntities) { - erpIds.add(udiRlSupEntity.getUnitFk()); + //过滤,如果默认已经有供应商了,则查出对应供应商即可 + if (StrUtil.isNotEmpty(filterCompanyProductRelevanceRequest.getUnitFk())) { + if (udiRlSupEntity.getUnitFk().equals(filterCompanyProductRelevanceRequest.getUnitFk())) { + erpIds.add(udiRlSupEntity.getUnitFk()); + } + } else { + erpIds.add(udiRlSupEntity.getUnitFk()); + } + } + if (CollUtil.isEmpty(erpIds)) { + return ResultVOUtils.error(500, "该产品未关联供应商"); } List basicUnitMaintainEntities = basicUnitMaintainService.batchSelectByErpIdsAndName(erpIds, filterCompanyProductRelevanceRequest.getKey()); return ResultVOUtils.success(basicUnitMaintainEntities); 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 aef33a536..9024d69d5 100644 --- a/src/main/java/com/glxp/api/controller/inout/IoCodeTempController.java +++ b/src/main/java/com/glxp/api/controller/inout/IoCodeTempController.java @@ -602,7 +602,7 @@ public class IoCodeTempController extends BaseController { BaseResponse baseResponse = checkRelId(codeEnttity, unitFk); - if (bussinessTypeEntity.isCheckEnable() && bussinessTypeEntity.isCheckWebNew()){ + if (bussinessTypeEntity.isCheckEnable() && bussinessTypeEntity.isCheckWebNew()) { String errMsg = ioCheckInoutService.checkCode(codeEnttity); if (errMsg != null) { return ResultVOUtils.error(500, errMsg); @@ -776,6 +776,29 @@ public class IoCodeTempController extends BaseController { return ResultVOUtils.success(pageSimpleResponse); } + @AuthRuleAnnotation("") + @PostMapping("/udiwms/addCode/updateBindSup") + public BaseResponse updateBindSup(@RequestBody IoCodeTempEntity warehouseEntity, BindingResult bindingResult) { + + if (bindingResult.hasErrors()) { + return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage()); + } + if (StrUtil.isNotEmpty(warehouseEntity.getMySupId())) { + warehouseEntity.setSupId(warehouseEntity.getMySupId()); + codeTempService.updateById(warehouseEntity); + } else if (warehouseEntity.getRelId() != null) { + warehouseEntity = codeTempService.selectById(warehouseEntity.getId()); + int reCount = udiCalCountUtil.getActCount(warehouseEntity); + warehouseEntity.setReCount(reCount); + codeTempService.updateById(warehouseEntity); + BasicBussinessTypeEntity bussinessTypeEntity = basicBussinessTypeService.findByAction(warehouseEntity.getAction()); + BaseResponse baseResponse = checkSupId(bussinessTypeEntity, warehouseEntity, warehouseEntity.getSupId()); + if (baseResponse != null) + return baseResponse; + } + return ResultVOUtils.success("绑定成功"); + } + @Resource IoOrderDetailCodeService ioOrderDetailCodeService; @@ -815,4 +838,38 @@ public class IoCodeTempController extends BaseController { } + @AuthRuleAnnotation("") + @PostMapping("warehouse/inout/saveTempCode") + public BaseResponse saveCode(@RequestBody IoCodeTempEntity codeTempEntity) { + + if (StrUtil.isNotEmpty(codeTempEntity.getSerialNo()) && codeTempEntity.getSerialNo().length() > 20) { + return ResultVOUtils.error(500, "无效条码!序列号超出最大范围"); + } + + if (StrUtil.isNotEmpty(codeTempEntity.getBatchNo()) && codeTempEntity.getBatchNo().length() > 20) { + return ResultVOUtils.error(500, "无效条码!批次号超出最大范围"); + } + + if (StrUtil.isBlank(codeTempEntity.getSerialNo()) && StrUtil.isBlank(codeTempEntity.getBatchNo())) { + return ResultVOUtils.error(500, "批次号不能为空!"); + } + + if (StrUtil.isNotEmpty(codeTempEntity.getSerialNo())) { + List codeTempEntityList = codeTempService.findByOrderId(codeTempEntity.getOrderId()); + for (IoCodeTempEntity object : codeTempEntityList) { + if (object.getId() != codeTempEntity.getId() && object.getCode().equals(codeTempEntity.getCode()) && StrUtil.nullToEmpty(object.getCode()).equals(codeTempEntity.getSerialNo())) { + return ResultVOUtils.error(500, "条码重复!"); + } + } + } + if (codeTempEntity.getCount() != null && codeTempEntity.getCount() <= 0) { + return ResultVOUtils.error(500, "数量不能小于0"); + } + int b = codeTempService.updateById(codeTempEntity); + if (b > 0) + return ResultVOUtils.success("修改成功"); + else return ResultVOUtils.error(500, "修改失败!"); + } + + } diff --git a/src/main/java/com/glxp/api/entity/inout/IoCodeTempEntity.java b/src/main/java/com/glxp/api/entity/inout/IoCodeTempEntity.java index be9dab173..1f663c4fc 100644 --- a/src/main/java/com/glxp/api/entity/inout/IoCodeTempEntity.java +++ b/src/main/java/com/glxp/api/entity/inout/IoCodeTempEntity.java @@ -137,5 +137,8 @@ public class IoCodeTempEntity { @TableField(exist = false) private Integer status; //条码校验状态 + @TableField(exist = false) + private String mySupId; //更新供应商 + } \ No newline at end of file diff --git a/src/main/java/com/glxp/api/entity/inv/InvProductEntity.java b/src/main/java/com/glxp/api/entity/inv/InvProductEntity.java index 3ff6b5d77..77b57e995 100644 --- a/src/main/java/com/glxp/api/entity/inv/InvProductEntity.java +++ b/src/main/java/com/glxp/api/entity/inv/InvProductEntity.java @@ -60,13 +60,13 @@ public class InvProductEntity { * 实际数量 */ @TableField(value = "reCount") - private String reCount; + private Integer reCount; /** * 客户ID */ @TableField(value = "customerId") - private Integer customerId; + private String customerId; /** * 供应商ID diff --git a/src/main/java/com/glxp/api/res/basic/UdiRelevanceResponse.java b/src/main/java/com/glxp/api/res/basic/UdiRelevanceResponse.java index 6af2b165c..8ac84d907 100644 --- a/src/main/java/com/glxp/api/res/basic/UdiRelevanceResponse.java +++ b/src/main/java/com/glxp/api/res/basic/UdiRelevanceResponse.java @@ -84,6 +84,9 @@ public class UdiRelevanceResponse { private String basicPrductRemak8; private BigDecimal price; + private Boolean isSelect; + + //关联查询字典 private String unitFk; //供应商ID private String companyName; //供应商名称 diff --git a/src/main/java/com/glxp/api/service/basic/impl/UdiRelevanceServiceImpl.java b/src/main/java/com/glxp/api/service/basic/impl/UdiRelevanceServiceImpl.java index d5839fabb..028103825 100644 --- a/src/main/java/com/glxp/api/service/basic/impl/UdiRelevanceServiceImpl.java +++ b/src/main/java/com/glxp/api/service/basic/impl/UdiRelevanceServiceImpl.java @@ -49,7 +49,6 @@ public class UdiRelevanceServiceImpl implements UdiRelevanceService { int offset = (filterUdiRelRequest.getPage() - 1) * filterUdiRelRequest.getLimit(); PageHelper.offsetPage(offset, filterUdiRelRequest.getLimit()); } - List data = udiRelevanceDao.filterUdiJoinSup(filterUdiRelRequest); 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 4bd4260b4..118fcf6ef 100644 --- a/src/main/java/com/glxp/api/service/inout/IoAddInoutService.java +++ b/src/main/java/com/glxp/api/service/inout/IoAddInoutService.java @@ -77,6 +77,7 @@ public class IoAddInoutService { orderEntity.setRemark("正在处理!"); orderEntity.setStatus(ConstantStatus.ORDER_STATUS_PROCESSING); + orderEntity.setDealStatus(ConstantStatus.ORDER_DEAL_POST); orderEntity.setUpdateTime(new Date()); orderService.update(orderEntity); 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 1675c63bb..50dbe5b6c 100644 --- a/src/main/java/com/glxp/api/service/inout/IoCheckInoutService.java +++ b/src/main/java/com/glxp/api/service/inout/IoCheckInoutService.java @@ -375,6 +375,7 @@ public class IoCheckInoutService { } if (orderEntity.getStatus() == ConstantStatus.ORDER_STATUS_AUDITED) { + orderEntity.setDealStatus(ConstantStatus.ORDER_DEAL_CHECK); orderEntity.setUpdateTime(new Date()); orderService.update(orderEntity); genInv(orderEntity, bussinessTypeEntity); 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 b8d11acae..27a618102 100644 --- a/src/main/java/com/glxp/api/service/inout/IoGenInvService.java +++ b/src/main/java/com/glxp/api/service/inout/IoGenInvService.java @@ -101,8 +101,8 @@ public class IoGenInvService { } else if (orderEntity.getMainAction().equals(ConstantType.TYPE_PUT)) { invProductEntity.setInCount(invProductEntity.getInCount() + orderDetailResultEntity.getReCount()); } + invProductEntity.setReCount(invProductEntity.getInCount() - invProductEntity.getOutCount()); invProductEntity.setUpdateTime(new Date()); -// invProductEntities.add(invProductEntity); invProductService.update(invProductEntity); } diff --git a/src/main/java/com/glxp/api/util/udi/UdiCalCountUtil.java b/src/main/java/com/glxp/api/util/udi/UdiCalCountUtil.java index ab7cbfc5c..fea017c4d 100644 --- a/src/main/java/com/glxp/api/util/udi/UdiCalCountUtil.java +++ b/src/main/java/com/glxp/api/util/udi/UdiCalCountUtil.java @@ -1,5 +1,6 @@ package com.glxp.api.util.udi; +import com.glxp.api.entity.inout.IoCodeTempEntity; import com.glxp.api.res.basic.UdiRelevanceResponse; import com.glxp.api.service.basic.UdiRelevanceService; import org.springframework.stereotype.Service; @@ -39,5 +40,14 @@ public class UdiCalCountUtil { return actCount; } + public int getActCount(IoCodeTempEntity codeTempEntity) { + if (codeTempEntity.getRelId() != null) { + UdiRelevanceResponse udiRelevanceResponse = udiRelevanceService.selectGroupById(codeTempEntity.getRelId()); + int count = getActCount(udiRelevanceResponse); + return codeTempEntity.getCount() * count; + } + return 1; + } + } From 5d26e2372ecb962cf047f9efe864e195843046f9 Mon Sep 17 00:00:00 2001 From: wangwei <1610949092@qq.com> Date: Fri, 10 Feb 2023 16:46:24 +0800 Subject: [PATCH 02/12] =?UTF-8?q?=E4=BF=AE=E6=94=B9bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../glxp/api/controller/auth/AuthUserController.java | 10 ++++++++-- src/main/java/com/glxp/api/dao/auth/AuthAdminDao.java | 2 +- .../glxp/api/req/auth/FilterNoSelectUserRequest.java | 2 +- .../api/service/auth/impl/AuthAdminServiceImpl.java | 2 +- .../resources/mybatis/mapper/auth/AuthAdminDao.xml | 8 ++++---- 5 files changed, 15 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/glxp/api/controller/auth/AuthUserController.java b/src/main/java/com/glxp/api/controller/auth/AuthUserController.java index 4f63c2783..b160cbd3a 100644 --- a/src/main/java/com/glxp/api/controller/auth/AuthUserController.java +++ b/src/main/java/com/glxp/api/controller/auth/AuthUserController.java @@ -8,6 +8,7 @@ import com.glxp.api.controller.BaseController; import com.glxp.api.entity.auth.*; import com.glxp.api.req.auth.AuthUserSaveRequest; import com.glxp.api.req.auth.FilterInvLinkDataRequest; +import com.glxp.api.req.auth.FilterInvWarehouseRequest; import com.glxp.api.req.auth.FilterNoSelectUserRequest; import com.glxp.api.res.PageSimpleResponse; import com.glxp.api.common.enums.ResultEnum; @@ -32,7 +33,8 @@ public class AuthUserController extends BaseController { private AuthAdminService authAdminService; @Resource private WarehouseUserService warehouseUserService; - + @Resource + DeptService deptService; @AuthRuleAnnotation("admin/auth/admin/updateInv") @PostMapping("/admin/auth/admin/updateInv") @@ -102,7 +104,11 @@ public class AuthUserController extends BaseController { FilterNoSelectUserRequest filterNoSelectUserRequest = new FilterNoSelectUserRequest(); BeanUtils.copyProperties(filterInvLinkDataRequest, filterNoSelectUserRequest); filterNoSelectUserRequest.setUserIds(userIds); - filterNoSelectUserRequest.setLocDeptCode(filterInvLinkDataRequest.getParentId()); + //查询部门id + FilterInvWarehouseRequest filterInvWarehouseRequest = new FilterInvWarehouseRequest(); + filterInvWarehouseRequest.setCode(filterInvLinkDataRequest.getParentId()); + List deptEntities = deptService.filterGroupInvWarehouse(filterInvWarehouseRequest); + filterNoSelectUserRequest.setDeptId(deptEntities.get(0).getId()); List hospitalUserList = authAdminService.selectNotSelectUser(filterNoSelectUserRequest); PageInfo authAdminPageInfo = new PageInfo<>(hospitalUserList); PageSimpleResponse authAdminPageSimpleResponse = new PageSimpleResponse<>(); diff --git a/src/main/java/com/glxp/api/dao/auth/AuthAdminDao.java b/src/main/java/com/glxp/api/dao/auth/AuthAdminDao.java index 9eb1b4094..020ead7d3 100644 --- a/src/main/java/com/glxp/api/dao/auth/AuthAdminDao.java +++ b/src/main/java/com/glxp/api/dao/auth/AuthAdminDao.java @@ -74,7 +74,7 @@ public interface AuthAdminDao { */ List selectHospitalUser(); - List selectNotSelectUser(@Param("userIds") List userIds,@Param("locDeptCode") String locDeptCode); + List selectNotSelectUser(@Param("userIds") List userIds,@Param("deptId") Integer deptId); List selectAllocatedList(FilterAuthUserRequest filterAuthUserRequest); diff --git a/src/main/java/com/glxp/api/req/auth/FilterNoSelectUserRequest.java b/src/main/java/com/glxp/api/req/auth/FilterNoSelectUserRequest.java index 647284d38..403d4040e 100644 --- a/src/main/java/com/glxp/api/req/auth/FilterNoSelectUserRequest.java +++ b/src/main/java/com/glxp/api/req/auth/FilterNoSelectUserRequest.java @@ -10,5 +10,5 @@ public class FilterNoSelectUserRequest extends ListPageRequest { List userIds; - private String locDeptCode; + private Integer deptId; } diff --git a/src/main/java/com/glxp/api/service/auth/impl/AuthAdminServiceImpl.java b/src/main/java/com/glxp/api/service/auth/impl/AuthAdminServiceImpl.java index 17b05e265..2f5a6354d 100644 --- a/src/main/java/com/glxp/api/service/auth/impl/AuthAdminServiceImpl.java +++ b/src/main/java/com/glxp/api/service/auth/impl/AuthAdminServiceImpl.java @@ -140,7 +140,7 @@ public class AuthAdminServiceImpl implements AuthAdminService { int offset = (filterNoSelectUserRequest.getPage() - 1) * filterNoSelectUserRequest.getLimit(); PageHelper.offsetPage(offset, filterNoSelectUserRequest.getLimit()); } - return authAdminDao.selectNotSelectUser(filterNoSelectUserRequest.getUserIds(),filterNoSelectUserRequest.getLocDeptCode()); + return authAdminDao.selectNotSelectUser(filterNoSelectUserRequest.getUserIds(),filterNoSelectUserRequest.getDeptId()); } diff --git a/src/main/resources/mybatis/mapper/auth/AuthAdminDao.xml b/src/main/resources/mybatis/mapper/auth/AuthAdminDao.xml index 70779a140..e81cec48b 100644 --- a/src/main/resources/mybatis/mapper/auth/AuthAdminDao.xml +++ b/src/main/resources/mybatis/mapper/auth/AuthAdminDao.xml @@ -178,15 +178,15 @@ + select ipp.id, + ipp.nameCode, + bp.cpmctymc, + ipp.relIdFk, + bp.ggxh, + ipp.batchNo, + ipp.productionDate, + ipp.expireDate, + bp.ylqxzcrbarmc, + bp.zczbhhzbapzbh, + ipp.inCount, + ipp.outCount, + ipp.reCount, + ipp.customerId, + basic_corp.name supName, + ipp.supId, + auth_dept.name deptName, + auth_warehouse.name invName, + ipp.deptCode, + ipp.invCode + from inv_pre_product ipp + inner join basic_udirel on ipp.relIdFk = basic_udirel.id + inner join basic_products bp on basic_udirel.uuid = bp.uuid + left join basic_corp on ipp.supId = basic_corp.erpId + left join auth_dept on auth_dept.code = ipp.deptCode + left join auth_warehouse on auth_warehouse.code = ipp.invCode + + bp.diType = 1 + + AND bp.cpmctymc like concat('%', #{cpmctymc}, '%') + + + AND ipp.nameCode like concat('%', #{nameCode}, '%') + + + AND ipp.relIdFk = #{relIdFk} + + + AND bp.ggxh like concat('%', #{ggxh}, '%') + + + AND ipp.batchNo like concat('%', #{batchNo}, '%') + + + AND ipp.productionDate = #{productionDate} + + + AND ipp.expireDate = #{expireDate} + + + AND bp.ylqxzcrbarmc like concat('%', #{ylqxzcrbarmc}, '%') + + + AND bp.zczbhhzbapzbh like concat('%', #{zczbhhzbapzbh}, '%') + + + AND ipp.customerId = #{customerId} + + + AND ipp.supId = #{supId} + + + AND ipp.deptCode = #{deptCode} + + + AND ipp.invCode = #{invCode} + + + AND ipp.invCode in + + #{item} + + + + + + + \ No newline at end of file diff --git a/src/main/resources/mybatis/mapper/inv/InvPreProductDetailDao.xml b/src/main/resources/mybatis/mapper/inv/InvPreProductDetailDao.xml new file mode 100644 index 000000000..e5b60a42c --- /dev/null +++ b/src/main/resources/mybatis/mapper/inv/InvPreProductDetailDao.xml @@ -0,0 +1,56 @@ + + + + + + \ No newline at end of file From 0644ca952d7650945a47a41dafbc1e4c97973a68 Mon Sep 17 00:00:00 2001 From: x_z Date: Fri, 10 Feb 2023 17:14:28 +0800 Subject: [PATCH 04/12] =?UTF-8?q?1.=E8=B0=83=E6=95=B4=E5=AF=84=E5=94=AE?= =?UTF-8?q?=E5=BA=93=E5=AD=98=E6=9F=A5=E8=AF=A2=E6=8E=A5=E5=8F=A3=E5=9C=B0?= =?UTF-8?q?=E5=9D=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/glxp/api/controller/inv/InvPreProductController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/glxp/api/controller/inv/InvPreProductController.java b/src/main/java/com/glxp/api/controller/inv/InvPreProductController.java index f86e8d572..0dc2ac0ea 100644 --- a/src/main/java/com/glxp/api/controller/inv/InvPreProductController.java +++ b/src/main/java/com/glxp/api/controller/inv/InvPreProductController.java @@ -48,7 +48,7 @@ public class InvPreProductController { * @param filterInvPreProductRequest * @return */ - @GetMapping("/spms/inv/pre/product/filterList") + @GetMapping("/spms/inv/pre/product/filter") public BaseResponse filterList(FilterInvPreProductRequest filterInvPreProductRequest) { boolean showSup = false; //前端控制表格显示字段 if (StrUtil.isNotBlank(filterInvPreProductRequest.getUdiCode())) { From db7c6405e3fafc9e6f1dd34966b45cd1ccee60e9 Mon Sep 17 00:00:00 2001 From: x_z Date: Fri, 10 Feb 2023 17:39:59 +0800 Subject: [PATCH 05/12] =?UTF-8?q?1.=E6=B7=BB=E5=8A=A0=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E5=AF=84=E5=94=AE=E5=BA=93=E5=AD=98=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../inv/InvPreProductController.java | 40 +++++++++++++++++++ .../controller/inv/InvProductController.java | 2 +- .../api/dao/inv/InvPreProductDetailDao.java | 9 +++++ .../inv/InvPreProductDetailService.java | 8 ++++ .../api/service/inv/InvPreProductService.java | 7 ++++ .../impl/InvPreProductDetailServiceImpl.java | 7 ++++ .../inv/impl/InvPreProductServiceImpl.java | 6 +++ .../mapper/inv/InvPreProductDetailDao.xml | 22 ++++++++++ 8 files changed, 100 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/glxp/api/controller/inv/InvPreProductController.java b/src/main/java/com/glxp/api/controller/inv/InvPreProductController.java index 0dc2ac0ea..e5530b69c 100644 --- a/src/main/java/com/glxp/api/controller/inv/InvPreProductController.java +++ b/src/main/java/com/glxp/api/controller/inv/InvPreProductController.java @@ -4,11 +4,15 @@ import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; import com.github.pagehelper.PageInfo; +import com.glxp.api.common.enums.ResultEnum; import com.glxp.api.common.res.BaseResponse; import com.glxp.api.common.util.ResultVOUtils; import com.glxp.api.entity.inv.InvPreProductDetailEntity; +import com.glxp.api.entity.inv.InvPreProductEntity; import com.glxp.api.req.inv.FilterInvPreProductDetailRequest; import com.glxp.api.req.inv.FilterInvPreProductRequest; +import com.glxp.api.req.inv.FilterInvProductDetailRequest; +import com.glxp.api.req.system.DeleteRequest; import com.glxp.api.res.PageSimpleResponse; import com.glxp.api.res.inv.InvPreProductDetailResponse; import com.glxp.api.res.inv.InvPreProductPageResponse; @@ -19,7 +23,10 @@ import com.glxp.api.service.inv.InvPreProductDetailService; import com.glxp.api.service.inv.InvPreProductService; import com.glxp.api.util.udi.FilterUdiUtils; import lombok.extern.slf4j.Slf4j; +import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; @@ -103,4 +110,37 @@ public class InvPreProductController { return ResultVOUtils.success(pageSimpleResponse); } + /** + * 删除寄售库存 + * + * @param deleteRequest + * @param bindingResult + * @return + */ + @PostMapping("/spms/inv/pre/product/delete") + public BaseResponse deleteInvPreProduct(@RequestBody DeleteRequest deleteRequest, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage()); + } + + String id = deleteRequest.getId(); + InvPreProductEntity invPreProductEntity = invPreProductService.findById(id); + if (null != invPreProductEntity) { + FilterInvProductDetailRequest detailRequest = new FilterInvProductDetailRequest(); + detailRequest.setSupId(invPreProductEntity.getSupId()); + detailRequest.setRelId(String.valueOf(invPreProductEntity.getRelIdFk())); + detailRequest.setInvCode(invPreProductEntity.getInvCode()); + if (StrUtil.isBlank(invPreProductEntity.getBatchNo())) { + detailRequest.setBatchNo("empty"); + } else { + detailRequest.setBatchNo(invPreProductEntity.getBatchNo()); + } + invPreProductService.deleteById(id); + invPreProductDetailService.deleteInvPreProductDetail(detailRequest); + return ResultVOUtils.success("删除成功"); + } else { + return ResultVOUtils.error(500, "删除失败"); + } + } + } diff --git a/src/main/java/com/glxp/api/controller/inv/InvProductController.java b/src/main/java/com/glxp/api/controller/inv/InvProductController.java index 146d9dadc..c0f707b5a 100644 --- a/src/main/java/com/glxp/api/controller/inv/InvProductController.java +++ b/src/main/java/com/glxp/api/controller/inv/InvProductController.java @@ -123,7 +123,7 @@ public class InvProductController { } String id = deleteRequest.getId(); - InvProductEntity invProductEntity = invProductService.findById(deleteRequest.getId()); + InvProductEntity invProductEntity = invProductService.findById(id); if (null != invProductEntity) { FilterInvProductDetailRequest detailRequest = new FilterInvProductDetailRequest(); detailRequest.setSupId(invProductEntity.getSupId()); diff --git a/src/main/java/com/glxp/api/dao/inv/InvPreProductDetailDao.java b/src/main/java/com/glxp/api/dao/inv/InvPreProductDetailDao.java index 23f294e6a..500a45af9 100644 --- a/src/main/java/com/glxp/api/dao/inv/InvPreProductDetailDao.java +++ b/src/main/java/com/glxp/api/dao/inv/InvPreProductDetailDao.java @@ -3,6 +3,7 @@ package com.glxp.api.dao.inv; import com.glxp.api.dao.BaseMapperPlus; import com.glxp.api.entity.inv.InvPreProductDetailEntity; import com.glxp.api.req.inv.FilterInvPreProductDetailRequest; +import com.glxp.api.req.inv.FilterInvProductDetailRequest; import java.util.List; @@ -18,4 +19,12 @@ public interface InvPreProductDetailDao extends BaseMapperPlus filterPreProductDetailList(FilterInvPreProductDetailRequest invPreProductDetailRequest); + + /** + * 删除寄售库存详情 + * + * @param detailRequest + * @return + */ + boolean deleteInvPreProductDetail(FilterInvProductDetailRequest detailRequest); } \ No newline at end of file diff --git a/src/main/java/com/glxp/api/service/inv/InvPreProductDetailService.java b/src/main/java/com/glxp/api/service/inv/InvPreProductDetailService.java index 87d631d7a..d3c95db23 100644 --- a/src/main/java/com/glxp/api/service/inv/InvPreProductDetailService.java +++ b/src/main/java/com/glxp/api/service/inv/InvPreProductDetailService.java @@ -2,6 +2,7 @@ package com.glxp.api.service.inv; import com.glxp.api.entity.inv.InvPreProductDetailEntity; import com.glxp.api.req.inv.FilterInvPreProductDetailRequest; +import com.glxp.api.req.inv.FilterInvProductDetailRequest; import com.glxp.api.res.inv.InvPreProductDetailResponse; import java.util.List; @@ -31,4 +32,11 @@ public interface InvPreProductDetailService { * @param response */ void setOrderInfo(InvPreProductDetailResponse response); + + /** + * 删除寄售库存详情 + * + * @param detailRequest + */ + boolean deleteInvPreProductDetail(FilterInvProductDetailRequest detailRequest); } diff --git a/src/main/java/com/glxp/api/service/inv/InvPreProductService.java b/src/main/java/com/glxp/api/service/inv/InvPreProductService.java index b042859a1..f46ef5c88 100644 --- a/src/main/java/com/glxp/api/service/inv/InvPreProductService.java +++ b/src/main/java/com/glxp/api/service/inv/InvPreProductService.java @@ -33,4 +33,11 @@ public interface InvPreProductService { */ List filterPreProductList(FilterInvPreProductRequest invPreProductRequest); + /** + * 根据ID查询寄售库存信息 + * + * @param id + * @return + */ + InvPreProductEntity findById(String id); } diff --git a/src/main/java/com/glxp/api/service/inv/impl/InvPreProductDetailServiceImpl.java b/src/main/java/com/glxp/api/service/inv/impl/InvPreProductDetailServiceImpl.java index dcd096a71..95db50e6f 100644 --- a/src/main/java/com/glxp/api/service/inv/impl/InvPreProductDetailServiceImpl.java +++ b/src/main/java/com/glxp/api/service/inv/impl/InvPreProductDetailServiceImpl.java @@ -10,6 +10,8 @@ import com.glxp.api.entity.basic.BasicBussinessTypeEntity; import com.glxp.api.entity.inout.IoOrderEntity; import com.glxp.api.entity.inv.InvPreProductDetailEntity; import com.glxp.api.req.inv.FilterInvPreProductDetailRequest; +import com.glxp.api.req.inv.FilterInvProductDetailRequest; +import com.glxp.api.req.system.DeleteRequest; import com.glxp.api.res.inv.InvPreProductDetailResponse; import com.glxp.api.service.inv.InvPreProductDetailService; import com.glxp.api.util.DateUtil; @@ -76,4 +78,9 @@ public class InvPreProductDetailServiceImpl implements InvPreProductDetailServic IoOrderEntity order = orderDao.selectOne(new QueryWrapper().select("createTime").eq("billNo", response.getOrderId())); response.setOrderTime(DateUtil.toDateStr(order.getCreateTime(), "yyyy-MM-dd HH:mm:ss")); } + + @Override + public boolean deleteInvPreProductDetail(FilterInvProductDetailRequest detailRequest) { + return invPreProductDetailDao.deleteInvPreProductDetail(detailRequest); + } } diff --git a/src/main/java/com/glxp/api/service/inv/impl/InvPreProductServiceImpl.java b/src/main/java/com/glxp/api/service/inv/impl/InvPreProductServiceImpl.java index 64e98b3dd..573d936b5 100644 --- a/src/main/java/com/glxp/api/service/inv/impl/InvPreProductServiceImpl.java +++ b/src/main/java/com/glxp/api/service/inv/impl/InvPreProductServiceImpl.java @@ -58,4 +58,10 @@ public class InvPreProductServiceImpl implements InvPreProductService { } return invPreProductDao.filterPreProductList(invPreProductRequest); } + + @Override + public InvPreProductEntity findById(String id) { + return invPreProductDao.selectById(id); + } + } diff --git a/src/main/resources/mybatis/mapper/inv/InvPreProductDetailDao.xml b/src/main/resources/mybatis/mapper/inv/InvPreProductDetailDao.xml index e5b60a42c..a44b17f39 100644 --- a/src/main/resources/mybatis/mapper/inv/InvPreProductDetailDao.xml +++ b/src/main/resources/mybatis/mapper/inv/InvPreProductDetailDao.xml @@ -53,4 +53,26 @@ + + + delete + from inv_pre_product_detail + + + AND relId = #{relId} + + + AND batchNo = #{batchNo} + + + AND batchNo is null + + + AND supId = #{supId} + + + AND invCode = #{invCode} + + + \ No newline at end of file From 03c5f5c16fcd239edabf9892b2d4732f3679cee8 Mon Sep 17 00:00:00 2001 From: wangwei <1610949092@qq.com> Date: Fri, 10 Feb 2023 17:43:04 +0800 Subject: [PATCH 06/12] =?UTF-8?q?=E4=BF=AE=E6=94=B9bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/resources/mybatis/mapper/thrsys/ThrProductsDao.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/mybatis/mapper/thrsys/ThrProductsDao.xml b/src/main/resources/mybatis/mapper/thrsys/ThrProductsDao.xml index ed92a6845..faf98827c 100644 --- a/src/main/resources/mybatis/mapper/thrsys/ThrProductsDao.xml +++ b/src/main/resources/mybatis/mapper/thrsys/ThrProductsDao.xml @@ -36,7 +36,7 @@ AND thirdSysFk = #{thirdSysFk} - AND thirdSysFk = #{thirdSys} + AND thirdSys = #{thirdSys} AND supName LIKE concat('%',#{supName},'%') From 37a54d3ef9552743c5bde2ae9a4affdb9f941c40 Mon Sep 17 00:00:00 2001 From: anthonywj Date: Fri, 10 Feb 2023 17:50:32 +0800 Subject: [PATCH 07/12] =?UTF-8?q?=E5=A4=9A=E4=B8=AA=E4=BE=9B=E5=BA=94?= =?UTF-8?q?=E5=95=86=E7=BB=91=E5=AE=9A=EF=BC=8C=E5=A4=9A=E4=B8=AA=E4=BA=A7?= =?UTF-8?q?=E5=93=81=E5=85=B3=E8=81=94=E7=BB=91=E5=AE=9A=EF=BC=8C=E9=A2=84?= =?UTF-8?q?=E9=AA=8C=E6=94=B6=E5=BA=93=E5=AD=98=E6=A0=A1=E9=AA=8C=EF=BC=8C?= =?UTF-8?q?=E6=99=AE=E9=80=9A=E5=BA=93=E5=AD=98=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../inout/IoCodeTempController.java | 142 ++++++++++-------- .../controller/inout/IoOrderController.java | 30 +++- .../inout/IoOrderReviewController.java | 12 ++ .../api/service/inout/IoAddInoutService.java | 15 +- .../service/inv/InvPreinDetailService.java | 4 +- .../service/inv/InvProductDetailService.java | 5 + .../inv/impl/InvPreinDetailServiceImpl.java | 10 ++ .../inv/impl/InvProductDetailServiceImpl.java | 24 +++ 8 files changed, 161 insertions(+), 81 deletions(-) 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 9024d69d5..44609e0f4 100644 --- a/src/main/java/com/glxp/api/controller/inout/IoCodeTempController.java +++ b/src/main/java/com/glxp/api/controller/inout/IoCodeTempController.java @@ -16,6 +16,8 @@ import com.glxp.api.entity.basic.BasicCorpEntity; import com.glxp.api.entity.basic.UdiEntity; import com.glxp.api.entity.basic.UdiProductEntity; import com.glxp.api.entity.inout.*; +import com.glxp.api.entity.inv.InvPreinDetailEntity; +import com.glxp.api.entity.inv.InvProductDetailEntity; import com.glxp.api.entity.system.SystemParamConfigEntity; import com.glxp.api.http.SpsDirectClient; import com.glxp.api.req.basic.CompanyProductRelevanceRequest; @@ -30,6 +32,8 @@ import com.glxp.api.res.inout.AddCodeResult; import com.glxp.api.service.auth.InvWarehouseService; import com.glxp.api.service.basic.*; import com.glxp.api.service.inout.*; +import com.glxp.api.service.inv.InvPreinDetailService; +import com.glxp.api.service.inv.InvProductDetailService; import com.glxp.api.service.system.SystemParamConfigService; import com.glxp.api.util.CustomUtil; import com.glxp.api.util.DateUtil; @@ -80,6 +84,10 @@ public class IoCodeTempController extends BaseController { InvWarehouseService invWarehouseService; @Resource IoCheckInoutService ioCheckInoutService; + @Resource + InvPreinDetailService invPreinDetailService; + @Resource + InvProductDetailService invProductDetailService; //手持端扫码单据上传调用接口 @AuthRuleAnnotation("") @@ -414,70 +422,46 @@ public class IoCodeTempController extends BaseController { } } - //校验预验收是否已存在 todo + //校验预验收是否已存在 if (bussinessTypeEntity.isPreIn()) { if (StrUtil.isNotEmpty(udiEntity.getSerialNo())) { -// List invProductDetailEntities = invPreInProductDetailService.findByOriginCode(code); -// if (CollUtil.isNotEmpty(invProductDetailEntities)) { -// return ResultVOUtils.error(500, "条码已存在!"); -// } + List invProductDetailEntities = invPreinDetailService.findByCode(code); + if (CollUtil.isNotEmpty(invProductDetailEntities)) { + return ResultVOUtils.error(500, "预验收库存已存在此UDI码,请检查后重试!"); + } } } //校验预验收库存是否已存在 if (addOrderRequest.isPreCheck()) { -// InvProductDetailEntity invProductDetailEntity = invPreInProductDetailService.statInvPreInDetail(code); -// if (invProductDetailEntity == null) { -// return ResultVOUtils.error(500, "预验收库存未存在此产品!"); -// } else { -// -// -// if (StrUtil.isNotEmpty(invProductDetailEntity.getBatchNo()) && StrUtil.isNotEmpty(addOrderRequest.getBatchNo()) -// && !invProductDetailEntity.getBatchNo().equals(addOrderRequest.getBatchNo())) { -// return ResultVOUtils.error(500, "当前批次号与预验收录入批次号不匹配!"); -// -// } -// -// -// if (StrUtil.isNotEmpty(orderId)) {//非首次添加 -// if (StrUtil.isEmpty(udiEntity.getSerialNo())) {//该单据已有该产品 -// WarehouseQueryRequest warehouseQueryRequest = new WarehouseQueryRequest(); -// warehouseQueryRequest.setOrderId(orderId); -// warehouseQueryRequest.setCode(code); -// List codeEnttitys = codesTempService.findByOrderIdAndCode(warehouseQueryRequest); -// if (CollUtil.isNotEmpty(codeEnttitys)) { -// WarehouseEntity codeEnttity = codeEnttitys.get(0); -// if (invProductDetailEntity.getCount() < (codeEnttity.getCount() + 1)) { -// return ResultVOUtils.error(500, "超出预验收库存数量"); -// } -// } -// } else { -// if (invProductDetailEntity.getCount() < 1) { -// return ResultVOUtils.error(500, "超出预验收库存数量"); -// } -// } -// } -// } - } else //校验库存是否存在 - if (addOrderRequest.isVailInv()) { -// if (bussinessTypeEntity.isAdvanceType()) { -// int count = invPreProductDetailService.vailStockCount(code); -// if (count < 0) { -// return ResultVOUtils.error(500, "当前库存不足,不允许0库存出库"); -// } -// } else { -// int count = invProductDetailService.vailStockCount(code, addOrderRequest.getLocStorageCode(), addOrderRequest.getInvWarehouseCode(), null); -// if (count <= 0) { -// return ResultVOUtils.error(500, "当前库存不足,不允许0库存出库"); -// } else if (StrUtil.isNotBlank(addOrderRequest.getOrderId())) { -// //查询此单据已扫描的条码数量 -// WarehouseEntity warehouse = codesTempService.findByUnique(addOrderRequest.getOrderId(), addOrderRequest.getCode()); -// if (null != warehouse && warehouse.getCount() >= count) { -// return ResultVOUtils.error(500, "当前库存不足,不允许0库存出库"); -// } -// } -// } + InvPreinDetailEntity invProductDetailEntity = invPreinDetailService.findOneByCode(code); + if (invProductDetailEntity == null) { + return ResultVOUtils.error(500, "预验收库存未存在此产品!"); + } else { + if (StrUtil.isNotEmpty(invProductDetailEntity.getBatchNo()) && StrUtil.isNotEmpty(addOrderRequest.getBatchNo()) + && !invProductDetailEntity.getBatchNo().equals(addOrderRequest.getBatchNo())) { + return ResultVOUtils.error(500, "当前批次号与预验收录入批次号不匹配!"); + + } + if (StrUtil.isNotEmpty(orderId)) {//非首次添加 + if (StrUtil.isEmpty(udiEntity.getSerialNo())) {//该单据已有该产品 + IoCodeTempEntity codeTempEntity = codeTempService.findByUnique(orderId, code); + if (codeTempEntity != null) { + if (invProductDetailEntity.getCount() < (codeTempEntity.getCount() + 1)) { + return ResultVOUtils.error(500, "超出预验收库存数量"); + } + } + } else { + if (invProductDetailEntity.getCount() < 1) { + return ResultVOUtils.error(500, "超出预验收库存数量"); + } + } + } } + } + + + //校验库存是否存在 if (addOrderRequest.getFromCorp() == null) { @@ -515,6 +499,12 @@ public class IoCodeTempController extends BaseController { exitLocalEntity.setCount(exitLocalEntity.getCount() + 1); exitLocalEntity.setReCount(exitLocalEntity.getCount() * udiCalCountUtil.getActCount(udiRelevanceResponses.get(0))); + + BaseResponse invRes = checkInv(bussinessTypeEntity, exitLocalEntity); + if (invRes != null) { + return invRes; + } + if (StringUtils.isBlank(exitLocalEntity.getSerialNo())) { if (bussinessTypeEntity.isCheckEnable() && bussinessTypeEntity.isCheckWebNew()) { String errMsg = ioCheckInoutService.checkCode(exitLocalEntity); @@ -602,6 +592,12 @@ public class IoCodeTempController extends BaseController { BaseResponse baseResponse = checkRelId(codeEnttity, unitFk); + + BaseResponse invRes = checkInv(bussinessTypeEntity, exitLocalEntity); + if (invRes != null) { + return invRes; + } + if (bussinessTypeEntity.isCheckEnable() && bussinessTypeEntity.isCheckWebNew()) { String errMsg = ioCheckInoutService.checkCode(codeEnttity); if (errMsg != null) { @@ -659,15 +655,20 @@ public class IoCodeTempController extends BaseController { //校验供应商是否配送此产品 public BaseResponse checkCorp(IoCodeTempEntity codeEnttity, BasicBussinessTypeEntity bussinessTypeEntity, String unitFk) { + CompanyProductRelevanceRequest companyProductRelevanceRequest = new CompanyProductRelevanceRequest(); + UdiEntity udiEntity = FilterUdiUtils.getUdi(codeEnttity.getCode()); + companyProductRelevanceRequest.setNameCode(udiEntity.getUdi()); if (bussinessTypeEntity.getCorpType() == ConstantStatus.CORP_TYPE_OUT) { - CompanyProductRelevanceRequest companyProductRelevanceRequest = new CompanyProductRelevanceRequest(); companyProductRelevanceRequest.setUnitFk(unitFk); - UdiEntity udiEntity = FilterUdiUtils.getUdi(codeEnttity.getCode()); - companyProductRelevanceRequest.setNameCode(udiEntity.getUdi()); List datas = udiRlSupService.filterUdiGp(companyProductRelevanceRequest); if (datas.size() <= 0) { return ResultVOUtils.error(500, "当前供应商不存在此配送产品!"); } + } else { + List datas = udiRlSupService.filterUdiGp(companyProductRelevanceRequest); + if (datas.size() <= 0) { + return ResultVOUtils.error(500, "此产品无指定供应商,请检查后添加!"); + } } return null; } @@ -762,6 +763,29 @@ public class IoCodeTempController extends BaseController { return null; } + public BaseResponse checkInv(BasicBussinessTypeEntity bussinessTypeEntity, IoCodeTempEntity codeTempEntity) { + if (bussinessTypeEntity.isVailInv()) { + if (bussinessTypeEntity.isAdvanceType()) { +// int count = invPreProductDetailService.vailStockCount(code); //todo 寄售 +// if (count < 0) { +// return ResultVOUtils.error(500, "当前库存不足,不允许0库存出库"); +// } + } else { + int count = invProductDetailService.vailStockCount(codeTempEntity.getRelId(), codeTempEntity.getDeptCode(), codeTempEntity.getInvCode(), null); + if (count <= 0) { + return ResultVOUtils.error(500, "当前库存不足,不允许0库存出库"); + } else { + //查询此单据已扫描的条码数量 + if (codeTempEntity.getReCount() >= count) { + return ResultVOUtils.error(500, "当前库存不足,不允许0库存出库"); + } + } + } + } + + return null; + } + @AuthRuleAnnotation("") @GetMapping("admin/warehouse/inout/findErrorByOrderId") 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 67dfc3b67..9968376ab 100644 --- a/src/main/java/com/glxp/api/controller/inout/IoOrderController.java +++ b/src/main/java/com/glxp/api/controller/inout/IoOrderController.java @@ -1,5 +1,6 @@ package com.glxp.api.controller.inout; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; import com.github.pagehelper.PageInfo; import com.glxp.api.annotation.AuthRuleAnnotation; @@ -98,20 +99,35 @@ public class IoOrderController { } + @Resource + IoAddInoutService ioAddInoutService; + //单据提交 @AuthRuleAnnotation("") - @GetMapping("warehouse/inout/submitOrderWeb") - public BaseResponse submitOrderWeb(AddOrderRequest addOrderRequest) { + @PostMapping("warehouse/inout/submitOrderWeb") + public BaseResponse submitOrderWeb(@RequestBody AddOrderRequest addOrderRequest) { //校验单据是否已完成 List orderDetailBizEntities = orderDetailBizService.findByOrderId(addOrderRequest.getBillNo()); List orderDetailCodeEntities = orderDetailCodeService.findByOrderId(addOrderRequest.getBillNo()); - String errMsg = checkInoutService.bizOrderCheck(orderDetailBizEntities, orderDetailCodeEntities); - if (StrUtil.isNotEmpty(errMsg)) { - return ResultVOUtils.error(500, "单据未校验完成,请检查后重新提交!"); + + if (CollUtil.isEmpty(orderDetailCodeEntities)) { + return ResultVOUtils.error(500, "单据还未扫码!"); } - saveOrderWeb(addOrderRequest); - checkInoutService.check(addOrderRequest.getBillNo()); + + if (CollUtil.isNotEmpty(orderDetailBizEntities)) { + String errMsg = checkInoutService.bizOrderCheck(orderDetailBizEntities, orderDetailCodeEntities); + if (StrUtil.isNotEmpty(errMsg)) { + return ResultVOUtils.error(500, "单据未校验完成,请检查后重新提交!"); + } + saveOrderWeb(addOrderRequest); + checkInoutService.check(addOrderRequest.getBillNo()); + } else { + IoOrderEntity orderEntity = orderService.findByBillNo(addOrderRequest.getBillNo()); + ioAddInoutService.dealProcess(orderEntity); + } + + return ResultVOUtils.success("提交成功!"); } diff --git a/src/main/java/com/glxp/api/controller/inout/IoOrderReviewController.java b/src/main/java/com/glxp/api/controller/inout/IoOrderReviewController.java index d0507771e..b7b702478 100644 --- a/src/main/java/com/glxp/api/controller/inout/IoOrderReviewController.java +++ b/src/main/java/com/glxp/api/controller/inout/IoOrderReviewController.java @@ -84,6 +84,18 @@ public class IoOrderReviewController extends BaseController { } + @AuthRuleAnnotation("") + @PostMapping("/udiwms/stock/order/acceptClear") + public BaseResponse acceptClear(@RequestBody AcceptOrderResponse acceptOrderEntity) { + String billNo = acceptOrderEntity.getBillNo(); + redisUtil.del(ConstantStatus.REDIS_BILLNO + billNo); + redisUtil.del(ConstantStatus.REDIS_BILLNO_CODES + billNo); + List stockOrderDetailEntities = orderDetailBizService.findByOrderId(billNo); + acceptOrderEntity.setOrderDetailEntities(stockOrderDetailEntities); + return ResultVOUtils.success(acceptOrderEntity); + } + + public BaseResponse updateReview(IoOrderEntity orderEntity) { AuthAdmin authAdmin = getUser(); orderEntity.setStatus(ConstantStatus.ORDER_STATUS_AUDITED); 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 118fcf6ef..aa4941db7 100644 --- a/src/main/java/com/glxp/api/service/inout/IoAddInoutService.java +++ b/src/main/java/com/glxp/api/service/inout/IoAddInoutService.java @@ -18,18 +18,15 @@ import com.glxp.api.entity.inout.IoOrderDetailCodeEntity; import com.glxp.api.entity.inout.IoOrderEntity; import com.glxp.api.entity.inv.InvProductDetailEntity; import com.glxp.api.entity.system.SystemParamConfigEntity; -import com.glxp.api.req.basic.CompanyProductRelevanceRequest; import com.glxp.api.req.basic.FilterCompanyProductRelevanceRequest; -import com.glxp.api.req.inout.FilterOrderRequest; import com.glxp.api.req.inout.PdaCodeEntity; import com.glxp.api.req.inout.PostOrderRequest; import com.glxp.api.res.basic.UdiRelevanceResponse; import com.glxp.api.service.basic.BasicCorpService; +import com.glxp.api.service.basic.IBasicBussinessTypeService; import com.glxp.api.service.basic.UdiRelevanceService; import com.glxp.api.service.basic.UdiRlSupService; -import com.glxp.api.service.basic.IBasicBussinessTypeService; import com.glxp.api.service.inv.InvProductDetailService; -import com.glxp.api.service.inv.InvProductService; import com.glxp.api.service.system.SystemParamConfigService; import com.glxp.api.util.CustomUtil; import com.glxp.api.util.DateUtil; @@ -210,15 +207,6 @@ public class IoAddInoutService { } if (CollUtil.isNotEmpty(insertList)) { - //临时表转正式表 - List ioCodeEntities = new ArrayList<>(); - for (IoCodeTempEntity codeTempEntity : insertList) { - IoCodeEntity codeEntity = new IoCodeEntity(); - BeanUtils.copyProperties(codeTempEntity, codeEntity); - ioCodeEntities.add(codeEntity); - } - codeService.insertBatch(ioCodeEntities); - //生成扫码单据详情 if (!orderDetailCodeService.isExit(orderEntity.getBillNo())) { for (IoCodeTempEntity codeTempEntity : insertList) { @@ -226,7 +214,6 @@ public class IoAddInoutService { } } codeTempService.deleteByBillNo(orderEntity.getBillNo()); - //进行单据校验 ioCheckInoutService.check(orderEntity.getBillNo()); } diff --git a/src/main/java/com/glxp/api/service/inv/InvPreinDetailService.java b/src/main/java/com/glxp/api/service/inv/InvPreinDetailService.java index e25acc084..a91adfeb9 100644 --- a/src/main/java/com/glxp/api/service/inv/InvPreinDetailService.java +++ b/src/main/java/com/glxp/api/service/inv/InvPreinDetailService.java @@ -6,9 +6,11 @@ import java.util.List; public interface InvPreinDetailService { - public void insertList(List invPreinDetailEntities); + void insertList(List invPreinDetailEntities); List findByCode(String code); + InvPreinDetailEntity findOneByCode(String code); + int deleteByOrderId(String orderId); } diff --git a/src/main/java/com/glxp/api/service/inv/InvProductDetailService.java b/src/main/java/com/glxp/api/service/inv/InvProductDetailService.java index 6d68e19d2..0d47f54e8 100644 --- a/src/main/java/com/glxp/api/service/inv/InvProductDetailService.java +++ b/src/main/java/com/glxp/api/service/inv/InvProductDetailService.java @@ -32,4 +32,9 @@ public interface InvProductDetailService { * @param response */ void setOrderInfo(InvProductDetailResponse response); + + + int vailStockCount(Long relId, String invStorageCode, String invWarehouseCode, String invSpaceCode); + + } diff --git a/src/main/java/com/glxp/api/service/inv/impl/InvPreinDetailServiceImpl.java b/src/main/java/com/glxp/api/service/inv/impl/InvPreinDetailServiceImpl.java index 25afaa9bc..e93074ffa 100644 --- a/src/main/java/com/glxp/api/service/inv/impl/InvPreinDetailServiceImpl.java +++ b/src/main/java/com/glxp/api/service/inv/impl/InvPreinDetailServiceImpl.java @@ -1,5 +1,6 @@ package com.glxp.api.service.inv.impl; +import cn.hutool.core.collection.CollUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.glxp.api.dao.inv.InvPreinDetailDao; import com.glxp.api.dao.inv.InvPreinOrderDao; @@ -28,6 +29,15 @@ public class InvPreinDetailServiceImpl implements InvPreinDetailService { return invPreinDetailDao.selectList(new QueryWrapper().eq("code", code)); } + @Override + public InvPreinDetailEntity findOneByCode(String code) { + List invPreinDetailEntities = invPreinDetailDao.selectList(new QueryWrapper().eq("code", code).last("limit 1")); + if (CollUtil.isNotEmpty(invPreinDetailEntities)) { + return invPreinDetailEntities.get(0); + } + return null; + } + @Override public int deleteByOrderId(String orderId) { return invPreinDetailDao.delete(new QueryWrapper().eq("orderIdFk", orderId)); diff --git a/src/main/java/com/glxp/api/service/inv/impl/InvProductDetailServiceImpl.java b/src/main/java/com/glxp/api/service/inv/impl/InvProductDetailServiceImpl.java index daaafcc45..4ba9006b7 100644 --- a/src/main/java/com/glxp/api/service/inv/impl/InvProductDetailServiceImpl.java +++ b/src/main/java/com/glxp/api/service/inv/impl/InvProductDetailServiceImpl.java @@ -1,6 +1,7 @@ package com.glxp.api.service.inv.impl; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.github.pagehelper.PageHelper; import com.glxp.api.constant.ConstantType; @@ -8,12 +9,14 @@ import com.glxp.api.dao.basic.BasicBussinessTypeDao; import com.glxp.api.dao.inout.IoOrderDao; import com.glxp.api.dao.inv.InvProductDetailDao; import com.glxp.api.entity.basic.BasicBussinessTypeEntity; +import com.glxp.api.entity.basic.UdiEntity; import com.glxp.api.entity.inout.IoOrderEntity; import com.glxp.api.entity.inv.InvProductDetailEntity; import com.glxp.api.req.inv.FilterInvProductDetailRequest; import com.glxp.api.res.inv.InvProductDetailResponse; import com.glxp.api.service.inv.InvProductDetailService; import com.glxp.api.util.DateUtil; +import com.glxp.api.util.udi.FilterUdiUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -91,4 +94,25 @@ public class InvProductDetailServiceImpl implements InvProductDetailService { IoOrderEntity order = orderDao.selectOne(new QueryWrapper().select("createTime").eq("billNo", response.getOrderId())); response.setOrderTime(DateUtil.toDateStr(order.getCreateTime(), "yyyy-MM-dd HH:mm:ss")); } + + + @Override + public int vailStockCount(Long relId, String deptCode, String invCode, String invSpaceCode) { + if (relId == null) { + return 0; + } + List datas = + invProductDetailDao.selectList(new QueryWrapper().eq("relIdFk", relId).eq("deptCode", deptCode).eq("invCode", invCode).eq("invSpaceCode", invSpaceCode)); + int count = 0; + if (CollUtil.isNotEmpty(datas)) { + for (InvProductDetailEntity invProductDetailEntity : datas) { + if (invProductDetailEntity.getMainAction().equals(ConstantType.TYPE_PUT)) + count = count + invProductDetailEntity.getCount(); + else { + count = count - invProductDetailEntity.getCount(); + } + } + } + return count; + } } From 61415aa489c27e7385648a92ece2dbb3063ff189 Mon Sep 17 00:00:00 2001 From: x_z Date: Mon, 13 Feb 2023 13:42:51 +0800 Subject: [PATCH 08/12] =?UTF-8?q?1.=E4=BF=AE=E5=A4=8D=E5=8D=95=E6=8D=AE?= =?UTF-8?q?=E7=94=9F=E6=88=90=E7=AD=89=E6=8E=A5=E5=8F=A3=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../auth/InvWarehouseController.java | 4 +-- .../basic/BasicBusTypePreController.java | 6 +++++ .../entity/basic/BasicBusTypePreEntity.java | 2 +- .../req/basic/FilterBusTypeChangeRequest.java | 5 ++++ .../basic/IBasicBusTypePreService.java | 9 ++++++- .../impl/BasicBusTypePreServiceImpl.java | 25 ++++++++++++++++++- .../mapper/basic/BasicBusTypePreDao.xml | 12 ++++++--- 7 files changed, 54 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/glxp/api/controller/auth/InvWarehouseController.java b/src/main/java/com/glxp/api/controller/auth/InvWarehouseController.java index 9513e4252..1c06c4d35 100644 --- a/src/main/java/com/glxp/api/controller/auth/InvWarehouseController.java +++ b/src/main/java/com/glxp/api/controller/auth/InvWarehouseController.java @@ -20,12 +20,10 @@ import com.glxp.api.req.thrsys.FilterBasicThirdSysRequest; import com.glxp.api.res.PageSimpleResponse; import com.glxp.api.res.auth.InvSubWarehouseResponse; import com.glxp.api.res.auth.InvWarehouseThirdSysResponse; -import com.glxp.api.res.auth.WarehouseUserResponse; import com.glxp.api.res.basic.BasicBussinessTypeResponse; import com.glxp.api.service.auth.*; import com.glxp.api.service.basic.IBasicBussinessTypeService; import com.glxp.api.service.system.SystemParamConfigService; -import org.springframework.beans.BeanUtils; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; @@ -299,6 +297,8 @@ public class InvWarehouseController extends BaseController { if (!warehouseBussinessTypeEntities.isEmpty()) { return ResultVOUtils.error(500, "请先移除该仓库关联用户和单据类型!"); } + + // // //判断此分库中是否还有库存 // InvWarehouseEntity invSubWarehouse = invWarehouseService.findById(deleteRequest.getId()); diff --git a/src/main/java/com/glxp/api/controller/basic/BasicBusTypePreController.java b/src/main/java/com/glxp/api/controller/basic/BasicBusTypePreController.java index 7d1a86d83..4de2c324d 100644 --- a/src/main/java/com/glxp/api/controller/basic/BasicBusTypePreController.java +++ b/src/main/java/com/glxp/api/controller/basic/BasicBusTypePreController.java @@ -182,6 +182,12 @@ public class BasicBusTypePreController { return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage()); } if (basicBusTypePreEntity != null) { + //判断是否重复添加 + boolean result = basicBusTypePreService.checkExists(basicBusTypePreEntity); + if (result) { + return ResultVOUtils.error(ResultEnum.DATA_REPEAT, "重复添加!"); + } + if (StrUtil.isNotBlank(basicBusTypePreEntity.getDefaultInvCode())) { InvWarehouseEntity invWarehouse = invWarehouseService.findByInvSubByCode(basicBusTypePreEntity.getDefaultInvCode()); basicBusTypePreEntity.setDefaultDeptCode(invWarehouse.getParentId()); diff --git a/src/main/java/com/glxp/api/entity/basic/BasicBusTypePreEntity.java b/src/main/java/com/glxp/api/entity/basic/BasicBusTypePreEntity.java index 3023e502c..fbb3eaf2a 100644 --- a/src/main/java/com/glxp/api/entity/basic/BasicBusTypePreEntity.java +++ b/src/main/java/com/glxp/api/entity/basic/BasicBusTypePreEntity.java @@ -85,7 +85,7 @@ public class BasicBusTypePreEntity { * 是否自动补单 */ @TableField(value = "changeEnable") - private Byte changeEnable; + private Boolean changeEnable; /** * 是否全量补单 diff --git a/src/main/java/com/glxp/api/req/basic/FilterBusTypeChangeRequest.java b/src/main/java/com/glxp/api/req/basic/FilterBusTypeChangeRequest.java index 589cec509..e6c618473 100644 --- a/src/main/java/com/glxp/api/req/basic/FilterBusTypeChangeRequest.java +++ b/src/main/java/com/glxp/api/req/basic/FilterBusTypeChangeRequest.java @@ -29,4 +29,9 @@ public class FilterBusTypeChangeRequest extends ListPageRequest { */ private String lastUpdateTime; + /** + * 是否启用 + */ + private Boolean enable; + } diff --git a/src/main/java/com/glxp/api/service/basic/IBasicBusTypePreService.java b/src/main/java/com/glxp/api/service/basic/IBasicBusTypePreService.java index 75482700b..9c523051d 100644 --- a/src/main/java/com/glxp/api/service/basic/IBasicBusTypePreService.java +++ b/src/main/java/com/glxp/api/service/basic/IBasicBusTypePreService.java @@ -71,6 +71,13 @@ public interface IBasicBusTypePreService { List filterBusTypePreResList(FilterBusTypePreRequest filterBusTypePreRequest); - BasicBusTypePreEntity findByOriginAction(String orginAction); + BasicBusTypePreEntity findByOriginAction(String originAction); + /** + * 校验数据是否重复 + * + * @param basicBusTypePreEntity + * @return + */ + boolean checkExists(BasicBusTypePreEntity basicBusTypePreEntity); } diff --git a/src/main/java/com/glxp/api/service/basic/impl/BasicBusTypePreServiceImpl.java b/src/main/java/com/glxp/api/service/basic/impl/BasicBusTypePreServiceImpl.java index 43c70556a..29a9ae201 100644 --- a/src/main/java/com/glxp/api/service/basic/impl/BasicBusTypePreServiceImpl.java +++ b/src/main/java/com/glxp/api/service/basic/impl/BasicBusTypePreServiceImpl.java @@ -1,10 +1,10 @@ package com.glxp.api.service.basic.impl; +import cn.hutool.core.collection.CollUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.github.pagehelper.PageHelper; import com.glxp.api.dao.basic.BasicBusTypePreDao; import com.glxp.api.entity.basic.BasicBusTypePreEntity; -import com.glxp.api.entity.inout.IoCodeEntity; import com.glxp.api.req.basic.FilterBusTypeChangeRequest; import com.glxp.api.req.basic.FilterBusTypePreRequest; import com.glxp.api.res.basic.BasicBusTypePreResponse; @@ -80,6 +80,29 @@ public class BasicBusTypePreServiceImpl implements IBasicBusTypePreService { return basicBusTypePreDao.selectOne(new QueryWrapper().eq("originAction", originAction)); } + @Override + public boolean checkExists(BasicBusTypePreEntity basicBusTypePreEntity) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("action", basicBusTypePreEntity.getAction()) + .eq("originAction", basicBusTypePreEntity.getOriginAction()) + .eq("invCode", basicBusTypePreEntity.getInvCode()) + .eq(null != basicBusTypePreEntity.getBeforeTime(), "beforeTime", basicBusTypePreEntity.getBeforeTime()) + .eq(null != basicBusTypePreEntity.getDefaultInvCode(), "defaultInvCode", basicBusTypePreEntity.getDefaultInvCode()) + .eq(null != basicBusTypePreEntity.getSupplementAll(), "supplementAll", basicBusTypePreEntity.getSupplementAll()); + + List list = basicBusTypePreDao.selectList(wrapper); + if (CollUtil.isNotEmpty(list)) { + if (null != basicBusTypePreEntity.getId()) { + for (BasicBusTypePreEntity busTypePreEntity : list) { + return busTypePreEntity.getId() == basicBusTypePreEntity.getId() ? false : true; + } + } else { + return true; + } + } + return false; + } + /** * 设置创建/更新信息 * diff --git a/src/main/resources/mybatis/mapper/basic/BasicBusTypePreDao.xml b/src/main/resources/mybatis/mapper/basic/BasicBusTypePreDao.xml index d4e221e3e..3262b6b1e 100644 --- a/src/main/resources/mybatis/mapper/basic/BasicBusTypePreDao.xml +++ b/src/main/resources/mybatis/mapper/basic/BasicBusTypePreDao.xml @@ -29,14 +29,15 @@ + + diff --git a/src/main/resources/mybatis/mapper/monitor/SysLogininforMapper.xml b/src/main/resources/mybatis/mapper/monitor/SysLogininforMapper.xml index 2b1046553..349cb37f6 100644 --- a/src/main/resources/mybatis/mapper/monitor/SysLogininforMapper.xml +++ b/src/main/resources/mybatis/mapper/monitor/SysLogininforMapper.xml @@ -18,27 +18,26 @@ diff --git a/src/main/resources/mybatis/mapper/monitor/SysOperLogMapper.xml b/src/main/resources/mybatis/mapper/monitor/SysOperLogMapper.xml index 43e7f0e04..115b42ed1 100644 --- a/src/main/resources/mybatis/mapper/monitor/SysOperLogMapper.xml +++ b/src/main/resources/mybatis/mapper/monitor/SysOperLogMapper.xml @@ -37,7 +37,7 @@ and oper_id = #{operId} - AND `title` = #{title} + AND `title` like concat('%', #{title}, '%') AND `business_type` = #{businessType} @@ -68,6 +68,7 @@ AND `status` = #{status} + order by monitor_oper_log.oper_time desc From 6e4dadd22a12107da5ca9446995cc141c3a8ffee Mon Sep 17 00:00:00 2001 From: anthonywj Date: Mon, 13 Feb 2023 16:11:02 +0800 Subject: [PATCH 10/12] =?UTF-8?q?=E5=8D=95=E6=8D=AE=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E7=9B=B8=E5=85=B3=E5=8A=9F=E8=83=BD=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../inout/IoCodeTempController.java | 33 ++++++++++--------- .../inout/IoOrderDetailBizController.java | 2 +- .../service/inout/IoCheckInoutService.java | 6 ++++ .../inout/IoOrderDetailBizService.java | 4 ++- .../impl/IoOrderDetailBizServiceImpl.java | 9 +++-- 5 files changed, 35 insertions(+), 19 deletions(-) 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 44609e0f4..b32999680 100644 --- a/src/main/java/com/glxp/api/controller/inout/IoCodeTempController.java +++ b/src/main/java/com/glxp/api/controller/inout/IoCodeTempController.java @@ -461,9 +461,6 @@ public class IoCodeTempController extends BaseController { } - //校验库存是否存在 - - if (addOrderRequest.getFromCorp() == null) { BasicCorpEntity basicCorpEntity = basicUnitMaintainService.selectByName(addOrderRequest.getFromCorp()); if (basicCorpEntity == null && bussinessTypeEntity.getCorpType() == ConstantStatus.CORP_TYPE_INPUT && bussinessTypeEntity.isGenUnit()) { @@ -802,28 +799,34 @@ public class IoCodeTempController extends BaseController { @AuthRuleAnnotation("") @PostMapping("/udiwms/addCode/updateBindSup") - public BaseResponse updateBindSup(@RequestBody IoCodeTempEntity warehouseEntity, BindingResult bindingResult) { + public BaseResponse updateBindSup(@RequestBody IoCodeTempEntity codeTempEntity, BindingResult bindingResult) { if (bindingResult.hasErrors()) { return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage()); } - if (StrUtil.isNotEmpty(warehouseEntity.getMySupId())) { - warehouseEntity.setSupId(warehouseEntity.getMySupId()); - codeTempService.updateById(warehouseEntity); - } else if (warehouseEntity.getRelId() != null) { - warehouseEntity = codeTempService.selectById(warehouseEntity.getId()); - int reCount = udiCalCountUtil.getActCount(warehouseEntity); - warehouseEntity.setReCount(reCount); - codeTempService.updateById(warehouseEntity); - BasicBussinessTypeEntity bussinessTypeEntity = basicBussinessTypeService.findByAction(warehouseEntity.getAction()); - BaseResponse baseResponse = checkSupId(bussinessTypeEntity, warehouseEntity, warehouseEntity.getSupId()); + + if (StrUtil.isNotEmpty(codeTempEntity.getSupId())) { + codeTempEntity.setSupId(codeTempEntity.getSupId()); + codeTempService.updateById(codeTempEntity); + } else if (codeTempEntity.getRelId() != null) { + codeTempEntity = codeTempService.selectById(codeTempEntity.getId()); + int reCount = udiCalCountUtil.getActCount(codeTempEntity); + codeTempEntity.setReCount(reCount); + codeTempService.updateById(codeTempEntity); + BasicBussinessTypeEntity bussinessTypeEntity = basicBussinessTypeService.findByAction(codeTempEntity.getAction()); + BaseResponse baseResponse = checkSupId(bussinessTypeEntity, codeTempEntity, codeTempEntity.getSupId()); if (baseResponse != null) return baseResponse; } + codeTempEntity = codeTempService.selectById(codeTempEntity.getId()); + IoOrderEntity orderEntity = orderService.findByBillNo(codeTempEntity.getOrderId()); + ioAddInoutService.genOrderDetailCode(orderEntity, codeTempEntity); + return ResultVOUtils.success("绑定成功"); } - + @Resource + IoAddInoutService ioAddInoutService; @Resource IoOrderDetailCodeService ioOrderDetailCodeService; diff --git a/src/main/java/com/glxp/api/controller/inout/IoOrderDetailBizController.java b/src/main/java/com/glxp/api/controller/inout/IoOrderDetailBizController.java index b1bd185e8..afcdf5ccd 100644 --- a/src/main/java/com/glxp/api/controller/inout/IoOrderDetailBizController.java +++ b/src/main/java/com/glxp/api/controller/inout/IoOrderDetailBizController.java @@ -125,7 +125,7 @@ public class IoOrderDetailBizController extends BaseController { @AuthRuleAnnotation("") @PostMapping("/udiwms/inout/order/updateBizProduct") public BaseResponse updateBizProduct(@RequestBody IoOrderDetailBizEntity orderDetailBizEntity) { - boolean isExit = orderDetailBizService.isExit(orderDetailBizEntity.getBindRlFk(), orderDetailBizEntity.getBatchNo(), orderDetailBizEntity.getId()); + boolean isExit = orderDetailBizService.isExit(orderDetailBizEntity.getBindRlFk(), orderDetailBizEntity.getBatchNo(), orderDetailBizEntity.getId(), orderDetailBizEntity.getOrderIdFk()); if (isExit) { return ResultVOUtils.error(500, "存在相同产品,相同批次号,请检查后保存!"); } 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 50dbe5b6c..44c0a2bff 100644 --- a/src/main/java/com/glxp/api/service/inout/IoCheckInoutService.java +++ b/src/main/java/com/glxp/api/service/inout/IoCheckInoutService.java @@ -105,6 +105,12 @@ public class IoCheckInoutService { } public String checkCode(IoCodeTempEntity codeEntity) { + + boolean isBillExit = orderDetailBizService.isExit(codeEntity.getOrderId()); + if (!isBillExit) { + return "请先录入业务详情"; + } + IoOrderDetailBizEntity bizEntity = orderDetailBizService.findByUnique(codeEntity.getOrderId(), codeEntity.getRelId(), codeEntity.getBatchNo()); if (bizEntity == null) { return "非此单产品!"; diff --git a/src/main/java/com/glxp/api/service/inout/IoOrderDetailBizService.java b/src/main/java/com/glxp/api/service/inout/IoOrderDetailBizService.java index f42009b7c..e2e7506b4 100644 --- a/src/main/java/com/glxp/api/service/inout/IoOrderDetailBizService.java +++ b/src/main/java/com/glxp/api/service/inout/IoOrderDetailBizService.java @@ -18,7 +18,9 @@ public interface IoOrderDetailBizService { int deleteByOrderId(String billNo); - boolean isExit(Long relId, String bacthNo, Integer ignoreId); + boolean isExit(String billNo); + + boolean isExit(Long relId, String bacthNo, Integer ignoreId,String orderId); IoOrderDetailBizEntity findByUnique(String orderId, Long relId, String bacthNo); diff --git a/src/main/java/com/glxp/api/service/inout/impl/IoOrderDetailBizServiceImpl.java b/src/main/java/com/glxp/api/service/inout/impl/IoOrderDetailBizServiceImpl.java index 15f7fcd6a..525a152ea 100644 --- a/src/main/java/com/glxp/api/service/inout/impl/IoOrderDetailBizServiceImpl.java +++ b/src/main/java/com/glxp/api/service/inout/impl/IoOrderDetailBizServiceImpl.java @@ -48,10 +48,15 @@ public class IoOrderDetailBizServiceImpl implements IoOrderDetailBizService { return ioOrderDetailBizDao.delete(new QueryWrapper().eq("orderIdFk", billNo)); } + @Override + public boolean isExit(String billNo) { + return ioOrderDetailBizDao.exists(new QueryWrapper().eq("orderIdFk",billNo)); + } + @Override - public boolean isExit(Long relId, String bacthNo, Integer ignoreId) { - return ioOrderDetailBizDao.exists(new QueryWrapper().eq("bindRlFk", relId).eq("batchNo", bacthNo).ne("id", ignoreId)); + public boolean isExit(Long relId, String bacthNo, Integer ignoreId,String orderId) { + return ioOrderDetailBizDao.exists(new QueryWrapper().eq("bindRlFk", relId).eq("batchNo", bacthNo).eq("orderIdFk", orderId).ne("id", ignoreId)); } @Override From 69e0f65b611110a1db01c17611adfca3e7d3f802 Mon Sep 17 00:00:00 2001 From: x_z Date: Mon, 13 Feb 2023 16:38:49 +0800 Subject: [PATCH 11/12] =?UTF-8?q?1.=E6=B7=BB=E5=8A=A0=E5=BA=93=E5=AD=98?= =?UTF-8?q?=E7=BB=9F=E8=AE=A1=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/inv/InvProductController.java | 34 +++++++++++ .../com/glxp/api/dao/inv/InvProductDao.java | 8 +++ .../api/service/inv/InvProductService.java | 8 +++ .../inv/impl/InvProductServiceImpl.java | 11 ++++ .../mybatis/mapper/inv/invProductDao.xml | 58 +++++++++++++++++++ 5 files changed, 119 insertions(+) diff --git a/src/main/java/com/glxp/api/controller/inv/InvProductController.java b/src/main/java/com/glxp/api/controller/inv/InvProductController.java index c0f707b5a..d0f615e6e 100644 --- a/src/main/java/com/glxp/api/controller/inv/InvProductController.java +++ b/src/main/java/com/glxp/api/controller/inv/InvProductController.java @@ -142,4 +142,38 @@ public class InvProductController { } } + /** + * 库存统计 + * + * @param filterInvProductRequest + * @return + */ + @GetMapping("/spms/inv/product/stockStatistics") + public BaseResponse stockStatistics(FilterInvProductRequest filterInvProductRequest) { + boolean showSup = true; + if (StrUtil.isBlank(filterInvProductRequest.getInvCode())) { + List invCodes = warehouseUserService.selectCodeByUser(customerService.getUserIdStr()); + filterInvProductRequest.setInvCodes(invCodes); + } + + List invProductResponses; + if (StrUtil.isBlank(filterInvProductRequest.getCpmctymc()) && StrUtil.isBlank(filterInvProductRequest.getNameCode()) + && StrUtil.isBlank(filterInvProductRequest.getGgxh()) && StrUtil.isBlank(filterInvProductRequest.getZczbhhzbapzbh()) + && StrUtil.isBlank(filterInvProductRequest.getYlqxzcrbarmc()) && StrUtil.isBlank(filterInvProductRequest.getSupId()) + && StrUtil.isBlank(filterInvProductRequest.getInvCode()) && StrUtil.isBlank(filterInvProductRequest.getBatchNo()) + ) { + //查询参数为空,走库存查询逻辑 + invProductResponses = invProductService.filterList(filterInvProductRequest); + } else { + //查询参数不为空,走库存统计逻辑 + invProductResponses = invProductService.stockStatistics(filterInvProductRequest); + } + PageInfo pageInfo = new PageInfo<>(invProductResponses); + InvProductPageResponse pageResponse = new InvProductPageResponse<>(); + pageResponse.setTotal(pageInfo.getTotal()); + pageResponse.setList(pageInfo.getList()); + pageResponse.setShowSup(showSup); + return ResultVOUtils.success(pageResponse); + } + } diff --git a/src/main/java/com/glxp/api/dao/inv/InvProductDao.java b/src/main/java/com/glxp/api/dao/inv/InvProductDao.java index 22789e4d9..bb513dd41 100644 --- a/src/main/java/com/glxp/api/dao/inv/InvProductDao.java +++ b/src/main/java/com/glxp/api/dao/inv/InvProductDao.java @@ -18,4 +18,12 @@ public interface InvProductDao extends BaseMapperPlus filterList(FilterInvProductRequest filterInvProductRequest); + + /** + * 库存统计查询 + * + * @param filterInvProductRequest + * @return + */ + List stockStatistics(FilterInvProductRequest filterInvProductRequest); } diff --git a/src/main/java/com/glxp/api/service/inv/InvProductService.java b/src/main/java/com/glxp/api/service/inv/InvProductService.java index 8f06e058d..afa048502 100644 --- a/src/main/java/com/glxp/api/service/inv/InvProductService.java +++ b/src/main/java/com/glxp/api/service/inv/InvProductService.java @@ -40,4 +40,12 @@ public interface InvProductService { * @return */ boolean deleteById(String id); + + /** + * 库存统计 + * + * @param filterInvProductRequest + * @return + */ + List stockStatistics(FilterInvProductRequest filterInvProductRequest); } diff --git a/src/main/java/com/glxp/api/service/inv/impl/InvProductServiceImpl.java b/src/main/java/com/glxp/api/service/inv/impl/InvProductServiceImpl.java index 9658dc350..fcbdd8692 100644 --- a/src/main/java/com/glxp/api/service/inv/impl/InvProductServiceImpl.java +++ b/src/main/java/com/glxp/api/service/inv/impl/InvProductServiceImpl.java @@ -63,4 +63,15 @@ public class InvProductServiceImpl implements InvProductService { return invProductDao.deleteById(id) == 1 ? true : false; } + @Override + public List stockStatistics(FilterInvProductRequest filterInvProductRequest) { + if (null == filterInvProductRequest) { + return Collections.emptyList(); + } + if (null != filterInvProductRequest.getPage() && null != filterInvProductRequest.getLimit()) { + PageHelper.offsetPage((filterInvProductRequest.getPage() - 1) * filterInvProductRequest.getLimit(), filterInvProductRequest.getLimit()); + } + return invProductDao.stockStatistics(filterInvProductRequest); + } + } \ No newline at end of file diff --git a/src/main/resources/mybatis/mapper/inv/invProductDao.xml b/src/main/resources/mybatis/mapper/inv/invProductDao.xml index 72500b80b..435235af5 100644 --- a/src/main/resources/mybatis/mapper/inv/invProductDao.xml +++ b/src/main/resources/mybatis/mapper/inv/invProductDao.xml @@ -80,4 +80,62 @@ + + From e0b1296f0c782ca4e52e87272895065170a990d0 Mon Sep 17 00:00:00 2001 From: x_z Date: Tue, 14 Feb 2023 15:02:25 +0800 Subject: [PATCH 12/12] =?UTF-8?q?1.=E6=B7=BB=E5=8A=A0=E5=BA=93=E5=AD=98?= =?UTF-8?q?=E6=91=86=E6=94=BE=E5=8A=9F=E8=83=BD=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/inv/InvPlaceController.java | 71 ++++++++++++ .../glxp/api/dao/auth/InvSubWarehouseDao.java | 9 ++ .../glxp/api/dao/inv/InvProductDetailDao.java | 34 ++++++ .../api/req/inv/FilterInvPlaceRequest.java | 27 +++++ .../glxp/api/res/inv/BindInvSpaceRequest.java | 43 ++++++++ .../api/res/inv/InvPlaceDetailResponse.java | 101 ++++++++++++++++++ .../glxp/api/service/inv/InvPlaceService.java | 37 +++++++ .../service/inv/impl/InvPlaceServiceImpl.java | 85 +++++++++++++++ .../mybatis/mapper/auth/PurPlanService.xml | 4 + .../mapper/inv/invProductDetailDao.xml | 53 +++++++++ 10 files changed, 464 insertions(+) create mode 100644 src/main/java/com/glxp/api/controller/inv/InvPlaceController.java create mode 100644 src/main/java/com/glxp/api/req/inv/FilterInvPlaceRequest.java create mode 100644 src/main/java/com/glxp/api/res/inv/BindInvSpaceRequest.java create mode 100644 src/main/java/com/glxp/api/res/inv/InvPlaceDetailResponse.java create mode 100644 src/main/java/com/glxp/api/service/inv/InvPlaceService.java create mode 100644 src/main/java/com/glxp/api/service/inv/impl/InvPlaceServiceImpl.java diff --git a/src/main/java/com/glxp/api/controller/inv/InvPlaceController.java b/src/main/java/com/glxp/api/controller/inv/InvPlaceController.java new file mode 100644 index 000000000..9c5319957 --- /dev/null +++ b/src/main/java/com/glxp/api/controller/inv/InvPlaceController.java @@ -0,0 +1,71 @@ +package com.glxp.api.controller.inv; + +import cn.hutool.core.util.StrUtil; +import com.github.pagehelper.PageInfo; +import com.glxp.api.common.enums.ResultEnum; +import com.glxp.api.common.res.BaseResponse; +import com.glxp.api.common.util.ResultVOUtils; +import com.glxp.api.req.inv.FilterInvPlaceRequest; +import com.glxp.api.res.inv.BindInvSpaceRequest; +import com.glxp.api.res.inv.InvPlaceDetailResponse; +import com.glxp.api.service.inv.InvPlaceService; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import javax.validation.Valid; +import java.util.List; + +/** + * 库存摆放接口 + */ +@RestController +public class InvPlaceController { + + @Resource + private InvPlaceService invPlaceService; + + /** + * 查询库存摆放记录 + * + * @return + */ + @GetMapping("/spms/inv/product/getPlaceDetailList") + public BaseResponse getPlaceDetailList(FilterInvPlaceRequest filterInvPlaceRequest) { + List list = invPlaceService.getPlaceDetailList(filterInvPlaceRequest); + PageInfo pageInfo = new PageInfo<>(list); + return ResultVOUtils.page(pageInfo); + } + + /** + * 绑定货位接口 + * + * @param bindInvSpaceRequest + * @return + */ + @PostMapping("/spms/inv/product/bindInvSpace") + public BaseResponse bindInvSpace(@RequestBody @Valid BindInvSpaceRequest bindInvSpaceRequest) { + if (null == bindInvSpaceRequest) { + return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL); + } + invPlaceService.bindInvSpace(bindInvSpaceRequest); + return ResultVOUtils.success("绑定成功"); + } + + /** + * 校验库存详情绑定货位信息 + * + * @param bindInvSpaceRequest + * @return + */ + @PostMapping("/spms/inv/product/checkCodeSpace") + public BaseResponse checkCodeSpace(@RequestBody BindInvSpaceRequest bindInvSpaceRequest) { + if (null == bindInvSpaceRequest || StrUtil.isBlank(bindInvSpaceRequest.getInvCode()) || StrUtil.isBlank(bindInvSpaceRequest.getInvSpaceCode()) || StrUtil.isBlank(bindInvSpaceRequest.getCode())) { + return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL); + } + return invPlaceService.checkCodeSpace(bindInvSpaceRequest); + } + +} diff --git a/src/main/java/com/glxp/api/dao/auth/InvSubWarehouseDao.java b/src/main/java/com/glxp/api/dao/auth/InvSubWarehouseDao.java index 5ed750636..dc9708554 100644 --- a/src/main/java/com/glxp/api/dao/auth/InvSubWarehouseDao.java +++ b/src/main/java/com/glxp/api/dao/auth/InvSubWarehouseDao.java @@ -86,4 +86,13 @@ public interface InvSubWarehouseDao extends BaseMapperPlus selectInvListByUser(@Param("userId") Long userId); + + /** + * 根据仓库编码查询部门编码 + * + * @param invCode + * @return + */ + String selectParentIdByCode(@Param("invCode") String invCode); + } diff --git a/src/main/java/com/glxp/api/dao/inv/InvProductDetailDao.java b/src/main/java/com/glxp/api/dao/inv/InvProductDetailDao.java index 04b7841f4..304774f0c 100644 --- a/src/main/java/com/glxp/api/dao/inv/InvProductDetailDao.java +++ b/src/main/java/com/glxp/api/dao/inv/InvProductDetailDao.java @@ -2,8 +2,12 @@ package com.glxp.api.dao.inv; import com.glxp.api.dao.BaseMapperPlus; import com.glxp.api.entity.inv.InvProductDetailEntity; +import com.glxp.api.req.inv.FilterInvPlaceRequest; import com.glxp.api.req.inv.FilterInvProductDetailRequest; +import com.glxp.api.res.inv.BindInvSpaceRequest; +import com.glxp.api.res.inv.InvPlaceDetailResponse; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; import java.util.List; @@ -18,5 +22,35 @@ public interface InvProductDetailDao extends BaseMapperPlus filterInvProductDetailList(FilterInvProductDetailRequest filterInvProductDetailRequest); + /** + * 删除库存详情 + * + * @param detailRequest + * @return + */ boolean deleteInvProductDetail(FilterInvProductDetailRequest detailRequest); + + /** + * 查询库存摆放详情 + * + * @param filterInvPlaceRequest + * @return + */ + List selectPlaceDetailList(FilterInvPlaceRequest filterInvPlaceRequest); + + /** + * 绑定货位 + * + * @param ids + * @param invSpaceCode + */ + void batchBindSpace(@Param("ids") List ids, @Param("invSpaceCode") String invSpaceCode); + + /** + * 根据仓库编码和UDI码查询库存详情 + * + * @param bindInvSpaceRequest + * @return + */ + InvProductDetailEntity selectByInvAndCode(BindInvSpaceRequest bindInvSpaceRequest); } diff --git a/src/main/java/com/glxp/api/req/inv/FilterInvPlaceRequest.java b/src/main/java/com/glxp/api/req/inv/FilterInvPlaceRequest.java new file mode 100644 index 000000000..d1cd93afe --- /dev/null +++ b/src/main/java/com/glxp/api/req/inv/FilterInvPlaceRequest.java @@ -0,0 +1,27 @@ +package com.glxp.api.req.inv; + +import com.glxp.api.util.page.ListPageRequest; +import lombok.Data; + +/** + * 库存摆放接口参数 + */ +@Data +public class FilterInvPlaceRequest extends ListPageRequest { + + /** + * 部门编码 + */ + private String deptCode; + + /** + * 仓库编码 + */ + private String invCode; + + /** + * 货位编码 + */ + private String invSpaceCode; + +} diff --git a/src/main/java/com/glxp/api/res/inv/BindInvSpaceRequest.java b/src/main/java/com/glxp/api/res/inv/BindInvSpaceRequest.java new file mode 100644 index 000000000..871e53ec5 --- /dev/null +++ b/src/main/java/com/glxp/api/res/inv/BindInvSpaceRequest.java @@ -0,0 +1,43 @@ +package com.glxp.api.res.inv; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotEmpty; +import java.util.List; + +/** + * 库存条码绑定货位参数 + */ +@Data +public class BindInvSpaceRequest { + + /** + * 部门编码 + */ + private String deptCode; + + /** + * 仓库编码 + */ + @NotBlank(message = "请选择仓库") + private String invCode; + + /** + * 货位编码 + */ + @NotBlank(message = "请选择货位") + private String invSpaceCode; + + /** + * 条码列表 + */ + @NotEmpty(message = "请扫描货物条码") + private List codeArray; + + /** + * UDI码 + */ + private String code; + +} diff --git a/src/main/java/com/glxp/api/res/inv/InvPlaceDetailResponse.java b/src/main/java/com/glxp/api/res/inv/InvPlaceDetailResponse.java new file mode 100644 index 000000000..a92d61f44 --- /dev/null +++ b/src/main/java/com/glxp/api/res/inv/InvPlaceDetailResponse.java @@ -0,0 +1,101 @@ +package com.glxp.api.res.inv; + +import lombok.Data; + +/** + * 库存摆放接口查询返回参数 + */ +@Data +public class InvPlaceDetailResponse { + + /** + * 库存详情ID + */ + private Integer id; + + /** + * UDI码 + */ + private String code; + + /** + * 耗材字典ID + */ + private String relId; + + /** + * 产品名称 + */ + private String productName; + + /** + * 规格型号 + */ + private String ggxh; + + /** + * 出入单据类型 + */ + private String mainAction; + + /** + * 批次号 + */ + private String batchNo; + + /** + * 生产日期 + */ + private String productionDate; + + /** + * 失效日期 + */ + private String expireDate; + + /** + * 产品DI + */ + private String nameCode; + + /** + * 注册证,批准文号 + */ + private String zczbhhzbapzbh; + + /** + * 生产厂家 + */ + private String ylqxzcrbarmc; + + /** + * 部门编码 + */ + private String deptCode; + + /** + * 仓库编码 + */ + private String invCode; + + /** + * 货位码 + */ + private String invSpaceCode; + + /** + * 部门名称 + */ + private String deptName; + + /** + * 仓库名称 + */ + private String invName; + + /** + * 货位名称 + */ + private String invSpaceName; + +} diff --git a/src/main/java/com/glxp/api/service/inv/InvPlaceService.java b/src/main/java/com/glxp/api/service/inv/InvPlaceService.java new file mode 100644 index 000000000..ef9376942 --- /dev/null +++ b/src/main/java/com/glxp/api/service/inv/InvPlaceService.java @@ -0,0 +1,37 @@ +package com.glxp.api.service.inv; + +import com.glxp.api.common.res.BaseResponse; +import com.glxp.api.req.inv.FilterInvPlaceRequest; +import com.glxp.api.res.inv.BindInvSpaceRequest; +import com.glxp.api.res.inv.InvPlaceDetailResponse; + +import java.util.List; + +/** + * 库存摆放Service + */ +public interface InvPlaceService { + + /** + * 查询库存摆放记录列表 + * + * @param filterInvPlaceRequest + * @return + */ + List getPlaceDetailList(FilterInvPlaceRequest filterInvPlaceRequest); + + /** + * 绑定货位 + * + * @param bindInvSpaceRequest + */ + void bindInvSpace(BindInvSpaceRequest bindInvSpaceRequest); + + /** + * 校验库存详情绑定货位信息 + * + * @param bindInvSpaceRequest + * @return + */ + BaseResponse checkCodeSpace(BindInvSpaceRequest bindInvSpaceRequest); +} diff --git a/src/main/java/com/glxp/api/service/inv/impl/InvPlaceServiceImpl.java b/src/main/java/com/glxp/api/service/inv/impl/InvPlaceServiceImpl.java new file mode 100644 index 000000000..377158750 --- /dev/null +++ b/src/main/java/com/glxp/api/service/inv/impl/InvPlaceServiceImpl.java @@ -0,0 +1,85 @@ +package com.glxp.api.service.inv.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.github.pagehelper.PageHelper; +import com.glxp.api.common.enums.ResultEnum; +import com.glxp.api.common.res.BaseResponse; +import com.glxp.api.common.util.ResultVOUtils; +import com.glxp.api.dao.auth.InvSpaceDao; +import com.glxp.api.dao.auth.InvSubWarehouseDao; +import com.glxp.api.dao.inv.InvProductDetailDao; +import com.glxp.api.entity.inv.InvProductDetailEntity; +import com.glxp.api.req.inv.FilterInvPlaceRequest; +import com.glxp.api.res.inv.BindInvSpaceRequest; +import com.glxp.api.res.inv.InvPlaceDetailResponse; +import com.glxp.api.service.inv.InvPlaceService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.util.Collections; +import java.util.List; +import java.util.stream.Collectors; + +@Slf4j +@Service +@Transactional(rollbackFor = Exception.class) +public class InvPlaceServiceImpl implements InvPlaceService { + + @Resource + private InvProductDetailDao invProductDetailDao; + @Resource + private InvSubWarehouseDao invSubWarehouseDao; + @Resource + private InvSpaceDao invSpaceDao; + + @Override + public List getPlaceDetailList(FilterInvPlaceRequest filterInvPlaceRequest) { + if (null == filterInvPlaceRequest) { + return Collections.emptyList(); + } + if (null != filterInvPlaceRequest.getPage() && null != filterInvPlaceRequest.getLimit()) { + PageHelper.offsetPage((filterInvPlaceRequest.getPage() - 1) * filterInvPlaceRequest.getLimit(), filterInvPlaceRequest.getLimit()); + } + return invProductDetailDao.selectPlaceDetailList(filterInvPlaceRequest); + } + + @Override + public void bindInvSpace(BindInvSpaceRequest bindInvSpaceRequest) { + //查询仓库的部门ID + String deptCode = invSubWarehouseDao.selectParentIdByCode(bindInvSpaceRequest.getInvCode()); + List list = invProductDetailDao.selectList(new QueryWrapper() + .select("id") + .eq("deptCode", deptCode) + .eq("invCode", bindInvSpaceRequest.getInvCode()) + .in("code", bindInvSpaceRequest.getCodeArray()) + ); + if (CollUtil.isNotEmpty(list)) { + List ids = list.stream().map(InvProductDetailEntity::getId).collect(Collectors.toList()); + log.info("本次绑定货位的库存详情数量为:{} 条", ids.size()); + invProductDetailDao.batchBindSpace(ids, bindInvSpaceRequest.getInvSpaceCode()); + } else { + log.info("绑定货位列表查询无数据"); + } + } + + @Override + public BaseResponse checkCodeSpace(BindInvSpaceRequest bindInvSpaceRequest) { + //查询仓库的部门ID + String deptCode = invSubWarehouseDao.selectParentIdByCode(bindInvSpaceRequest.getInvCode()); + bindInvSpaceRequest.setDeptCode(deptCode); + //查询此库存详情的信息 + InvProductDetailEntity invProductDetailEntity = invProductDetailDao.selectByInvAndCode(bindInvSpaceRequest); + if (null == invProductDetailEntity) { + return ResultVOUtils.error(ResultEnum.DATA_ERROR, "此货物非当前仓库物品,无法绑定货位"); + } + if (StrUtil.isNotBlank(invProductDetailEntity.getInvSpaceCode()) && !bindInvSpaceRequest.getInvSpaceCode().equals(invProductDetailEntity.getInvSpaceCode())) { + String invSpaceName = invSpaceDao.selectNameByCode(invProductDetailEntity.getDeptCode(), invProductDetailEntity.getInvCode(), invProductDetailEntity.getInvSpaceCode()); + return ResultVOUtils.error(ResultEnum.DATA_REPEAT, "此货物已绑定 " + invSpaceName + " 货位,是否重新绑定?"); + } + return ResultVOUtils.success(); + } +} diff --git a/src/main/resources/mybatis/mapper/auth/PurPlanService.xml b/src/main/resources/mybatis/mapper/auth/PurPlanService.xml index 6a40ad4d7..a1df15fee 100644 --- a/src/main/resources/mybatis/mapper/auth/PurPlanService.xml +++ b/src/main/resources/mybatis/mapper/auth/PurPlanService.xml @@ -341,4 +341,8 @@ inner join auth_warehouse_user on auth_warehouse.code = auth_warehouse_user.code where userId = #{userId} + + \ No newline at end of file diff --git a/src/main/resources/mybatis/mapper/inv/invProductDetailDao.xml b/src/main/resources/mybatis/mapper/inv/invProductDetailDao.xml index f1edcd52b..a7756f6c1 100644 --- a/src/main/resources/mybatis/mapper/inv/invProductDetailDao.xml +++ b/src/main/resources/mybatis/mapper/inv/invProductDetailDao.xml @@ -77,4 +77,57 @@ + + + + + update inv_product_detail + set invSpaceCode = #{invSpaceCode} + where id in + + #{item} + + + +