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/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/BasicBusTypeChangeController.java b/src/main/java/com/glxp/api/controller/basic/BasicBusTypeChangeController.java index 2d0481d38..bbca6a452 100644 --- a/src/main/java/com/glxp/api/controller/basic/BasicBusTypeChangeController.java +++ b/src/main/java/com/glxp/api/controller/basic/BasicBusTypeChangeController.java @@ -62,6 +62,10 @@ public class BasicBusTypeChangeController { if (bindingResult.hasErrors()) { return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage()); } + boolean result = basicBusTypeChangeService.verifyExists(basicBusTypeChangeEntity); + if (result) { + return ResultVOUtils.error(ResultEnum.DATA_REPEAT, "重复添加"); + } basicBusTypeChangeEntity.setUpdateTime(new Date()); basicBusTypeChangeService.insert(basicBusTypeChangeEntity); return ResultVOUtils.success("更新成功"); @@ -79,6 +83,10 @@ public class BasicBusTypeChangeController { if (bindingResult.hasErrors()) { return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage()); } + boolean result = basicBusTypeChangeService.verifyExists(basicBusTypeChangeEntity); + if (result) { + return ResultVOUtils.error(ResultEnum.DATA_REPEAT, "重复添加"); + } basicBusTypeChangeEntity.setUpdateTime(new Date()); basicBusTypeChangeService.updateBasicBusTypeChange(basicBusTypeChangeEntity); return ResultVOUtils.success("更新成功"); 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..0773bc52d 100644 --- a/src/main/java/com/glxp/api/controller/basic/BasicBusTypePreController.java +++ b/src/main/java/com/glxp/api/controller/basic/BasicBusTypePreController.java @@ -162,6 +162,12 @@ public class BasicBusTypePreController { return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage()); } if (basicBusTypePreEntity != null) { + //判断是否重复添加 + boolean result = basicBusTypePreService.verifyExists(basicBusTypePreEntity); + if (result) { + return ResultVOUtils.error(ResultEnum.DATA_REPEAT, "重复添加!"); + } + basicBusTypePreService.updateBusChangeType(basicBusTypePreEntity); } else { ResultVOUtils.error(999, "参数错误"); @@ -182,6 +188,12 @@ public class BasicBusTypePreController { return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage()); } if (basicBusTypePreEntity != null) { + //判断是否重复添加 + boolean result = basicBusTypePreService.verifyExists(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/controller/basic/BasicCorpController.java b/src/main/java/com/glxp/api/controller/basic/BasicCorpController.java index 4670435bc..09d440623 100644 --- a/src/main/java/com/glxp/api/controller/basic/BasicCorpController.java +++ b/src/main/java/com/glxp/api/controller/basic/BasicCorpController.java @@ -108,6 +108,11 @@ public class BasicCorpController { return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage()); } + boolean result = basicUnitMaintainService.verifyExists(basicUnitMaintainSaveRequest); + if (result) { + return ResultVOUtils.error(ResultEnum.DATA_REPEAT, "重复添加"); + } + BasicCorpEntity basicUnitMaintainEntity = new BasicCorpEntity(); BeanUtils.copyProperties(basicUnitMaintainSaveRequest, basicUnitMaintainEntity); basicUnitMaintainEntity.setErpId(CustomUtil.getId()); @@ -127,6 +132,12 @@ public class BasicCorpController { if (bindingResult.hasErrors()) { return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage()); } + + boolean result = basicUnitMaintainService.verifyExists(basicUnitMaintainSaveRequest); + if (result) { + return ResultVOUtils.error(ResultEnum.DATA_REPEAT, "重复添加"); + } + basicUnitMaintainService.updateById(basicUnitMaintainSaveRequest); return ResultVOUtils.success("修改成功"); } 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..b32999680 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,43 @@ 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 +496,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,7 +589,13 @@ public class IoCodeTempController extends BaseController { BaseResponse baseResponse = checkRelId(codeEnttity, unitFk); - if (bussinessTypeEntity.isCheckEnable() && bussinessTypeEntity.isCheckWebNew()){ + + BaseResponse invRes = checkInv(bussinessTypeEntity, exitLocalEntity); + if (invRes != null) { + return invRes; + } + + if (bussinessTypeEntity.isCheckEnable() && bussinessTypeEntity.isCheckWebNew()) { String errMsg = ioCheckInoutService.checkCode(codeEnttity); if (errMsg != null) { return ResultVOUtils.error(500, errMsg); @@ -659,15 +652,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 +760,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") @@ -776,7 +797,36 @@ public class IoCodeTempController extends BaseController { return ResultVOUtils.success(pageSimpleResponse); } + @AuthRuleAnnotation("") + @PostMapping("/udiwms/addCode/updateBindSup") + public BaseResponse updateBindSup(@RequestBody IoCodeTempEntity codeTempEntity, BindingResult bindingResult) { + + if (bindingResult.hasErrors()) { + return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage()); + } + + 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; @@ -815,4 +865,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/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/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/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/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/controller/inv/InvPreProductController.java b/src/main/java/com/glxp/api/controller/inv/InvPreProductController.java new file mode 100644 index 000000000..e5530b69c --- /dev/null +++ b/src/main/java/com/glxp/api/controller/inv/InvPreProductController.java @@ -0,0 +1,146 @@ +package com.glxp.api.controller.inv; + +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; +import com.glxp.api.res.inv.InvPreProductResponse; +import com.glxp.api.service.auth.CustomerService; +import com.glxp.api.service.auth.WarehouseUserService; +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; +import java.util.ArrayList; +import java.util.List; + +/** + * 寄售库存接口 + */ +@Slf4j +@RestController +public class InvPreProductController { + + @Resource + private InvPreProductService invPreProductService; + @Resource + private InvPreProductDetailService invPreProductDetailService; + @Resource + private WarehouseUserService warehouseUserService; + @Resource + private CustomerService customerService; + + /** + * 寄售库存查询接口 + * + * @param filterInvPreProductRequest + * @return + */ + @GetMapping("/spms/inv/pre/product/filter") + public BaseResponse filterList(FilterInvPreProductRequest filterInvPreProductRequest) { + boolean showSup = false; //前端控制表格显示字段 + if (StrUtil.isNotBlank(filterInvPreProductRequest.getUdiCode())) { + filterInvPreProductRequest.setNameCode(FilterUdiUtils.getDiStr(filterInvPreProductRequest.getUdiCode())); + } + + if (StrUtil.isBlank(filterInvPreProductRequest.getInvCode())) { + List invCodes = warehouseUserService.selectCodeByUser(customerService.getUserIdStr()); + if (CollUtil.isNotEmpty(invCodes)) { + filterInvPreProductRequest.setInvCodes(invCodes); + } + } + + List list = invPreProductService.filterList(filterInvPreProductRequest); + PageInfo pageInfo = new PageInfo<>(list); + InvPreProductPageResponse pageResponse = new InvPreProductPageResponse<>(); + pageResponse.setList(pageInfo.getList()); + pageResponse.setTotal(pageInfo.getTotal()); + pageResponse.setShowSup(showSup); + return ResultVOUtils.success(pageResponse); + } + + /** + * 查询寄售库存详情 + * + * @param detailRequest + * @return + */ + @GetMapping("/spms/inv/pre/product/filterDetail") + public BaseResponse filterInvPreProductDetail(FilterInvPreProductDetailRequest detailRequest) { + if (StrUtil.isBlank(detailRequest.getBatchNo())) { + detailRequest.setBatchNo("empty"); + } + + List invPreProductDetailEntities = invPreProductDetailService.filterPreProductDetailList(detailRequest); + PageInfo pageInfo = new PageInfo<>(invPreProductDetailEntities); + + List list = new ArrayList<>(); + if (CollUtil.isNotEmpty(invPreProductDetailEntities)) { + invPreProductDetailEntities.forEach(invPreProductDetailEntity -> { + InvPreProductDetailResponse response = new InvPreProductDetailResponse(); + BeanUtil.copyProperties(invPreProductDetailEntity, response); + //设置单据类型名称等单据相关参数 + invPreProductDetailService.setOrderInfo(response); + list.add(response); + }); + } + + PageSimpleResponse pageSimpleResponse = new PageSimpleResponse<>(); + pageSimpleResponse.setList(list); + pageSimpleResponse.setTotal(pageInfo.getTotal()); + 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 d5dece44f..d0f615e6e 100644 --- a/src/main/java/com/glxp/api/controller/inv/InvProductController.java +++ b/src/main/java/com/glxp/api/controller/inv/InvProductController.java @@ -18,7 +18,6 @@ import com.glxp.api.res.inv.InvProductPageResponse; import com.glxp.api.res.inv.InvProductResponse; import com.glxp.api.service.auth.CustomerService; import com.glxp.api.service.auth.WarehouseUserService; -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.util.udi.FilterUdiUtils; @@ -48,8 +47,6 @@ public class InvProductController { private WarehouseUserService warehouseUserService; @Resource private CustomerService customerService; - @Resource - private IBasicBussinessTypeService bussinessTypeService; /** * 库存列表查询接口 @@ -126,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()); @@ -145,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/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/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/basic/BasicCorpDao.java b/src/main/java/com/glxp/api/dao/basic/BasicCorpDao.java index b0a874e52..5cde0e627 100644 --- a/src/main/java/com/glxp/api/dao/basic/BasicCorpDao.java +++ b/src/main/java/com/glxp/api/dao/basic/BasicCorpDao.java @@ -36,4 +36,13 @@ public interface BasicCorpDao { boolean importBasicUnitMaintain(BasicCorpEntity basicUnitMaintainEntity); List batchSelectByErpIdsAndName(@Param("erpIds") List erpIds, @Param("name") String name); + + /** + * 根据往来单位名称和社会信用号查询列表 + * + * @param name + * @param creditNo + * @return + */ + List selectByNameAndCreditNo(@Param("name") String name, @Param("creditNo") String creditNo); } diff --git a/src/main/java/com/glxp/api/dao/inv/InvPreProductDao.java b/src/main/java/com/glxp/api/dao/inv/InvPreProductDao.java new file mode 100644 index 000000000..4893331a6 --- /dev/null +++ b/src/main/java/com/glxp/api/dao/inv/InvPreProductDao.java @@ -0,0 +1,31 @@ +package com.glxp.api.dao.inv; + +import com.glxp.api.dao.BaseMapperPlus; +import com.glxp.api.entity.inv.InvPreProductEntity; +import com.glxp.api.req.inv.FilterInvPreProductRequest; +import com.glxp.api.res.inv.InvPreProductResponse; + +import java.util.List; + +/** + * 寄售库存Dao + */ +public interface InvPreProductDao extends BaseMapperPlus { + + /** + * 查询寄售库存VO列表 + * + * @param invPreProductRequest + * @return + */ + List filterList(FilterInvPreProductRequest invPreProductRequest); + + /** + * 查询寄售库存实体列表 + * + * @param invPreProductRequest + * @return + */ + List filterPreProductList(FilterInvPreProductRequest invPreProductRequest); + +} \ No newline at end of file diff --git a/src/main/java/com/glxp/api/dao/inv/InvPreProductDetailDao.java b/src/main/java/com/glxp/api/dao/inv/InvPreProductDetailDao.java new file mode 100644 index 000000000..500a45af9 --- /dev/null +++ b/src/main/java/com/glxp/api/dao/inv/InvPreProductDetailDao.java @@ -0,0 +1,30 @@ +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; + +/** + * 寄售库存详情Dao + */ +public interface InvPreProductDetailDao extends BaseMapperPlus { + + /** + * 查询库存详情实体列表 + * + * @param invPreProductDetailRequest + * @return + */ + List 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/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/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/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/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/InvPreProductDetailEntity.java b/src/main/java/com/glxp/api/entity/inv/InvPreProductDetailEntity.java new file mode 100644 index 000000000..b9f8d68ee --- /dev/null +++ b/src/main/java/com/glxp/api/entity/inv/InvPreProductDetailEntity.java @@ -0,0 +1,165 @@ +package com.glxp.api.entity.inv; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.util.Date; + +/** + * 寄售库存详情表 + */ +@Data +@TableName(value = "inv_pre_product_detail") +public class InvPreProductDetailEntity { + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + /** + * UDI码 + */ + @TableField(value = "code") + private String code; + + /** + * 出入单据类型 + */ + @TableField(value = "mainAction") + private String mainAction; + + /** + * 单据类型 + */ + @TableField(value = "`action`") + private String action; + + /** + * 订单号外键 + */ + @TableField(value = "orderId") + private String orderId; + + /** + * 耗材字典ID + */ + @TableField(value = "relId") + private Integer relId; + + /** + * 最小销售标识 + */ + @TableField(value = "nameCode") + private String nameCode; + + /** + * 批次号 + */ + @TableField(value = "batchNo") + private String batchNo; + + /** + * 生产日期 + */ + @TableField(value = "produceDate") + private String produceDate; + + /** + * 失效日期 + */ + @TableField(value = "expireDate") + private String expireDate; + + /** + * 序列号 + */ + @TableField(value = "serialNo") + private String serialNo; + + /** + * 供应商 + */ + @TableField(value = "supId") + private String supId; + + /** + * 扫码数量 + */ + @TableField(value = "`count`") + private Integer count; + + /** + * 实际数量 + */ + @TableField(value = "reCount") + private Integer reCount; + + /** + * 部门编码 + */ + @TableField(value = "deptCode") + private String deptCode; + + /** + * 仓库编码 + */ + @TableField(value = "invCode") + private String invCode; + + /** + * 货位编码 + */ + @TableField(value = "invSpaceCode") + private String invSpaceCode; + + /** + * 采购类型 + */ + @TableField(value = "purchaseType") + private Byte purchaseType; + + /** + * 更新时间 + */ + @TableField(value = "updateTime") + private Date updateTime; + + public static final String COL_ID = "id"; + + public static final String COL_CODE = "code"; + + public static final String COL_MAINACTION = "mainAction"; + + public static final String COL_ACTION = "action"; + + public static final String COL_ORDERID = "orderId"; + + public static final String COL_RELID = "relId"; + + public static final String COL_NAMECODE = "nameCode"; + + public static final String COL_BATCHNO = "batchNo"; + + public static final String COL_PRODUCEDATE = "produceDate"; + + public static final String COL_EXPIREDATE = "expireDate"; + + public static final String COL_SERIALNO = "serialNo"; + + public static final String COL_SUPID = "supId"; + + public static final String COL_COUNT = "count"; + + public static final String COL_RECOUNT = "reCount"; + + public static final String COL_DEPTCODE = "deptCode"; + + public static final String COL_INVCODE = "invCode"; + + public static final String COL_INVSPACECODE = "invSpaceCode"; + + public static final String COL_PURCHASETYPE = "purchaseType"; + + public static final String COL_UPDATETIME = "updateTime"; +} \ No newline at end of file diff --git a/src/main/java/com/glxp/api/entity/inv/InvPreProductEntity.java b/src/main/java/com/glxp/api/entity/inv/InvPreProductEntity.java new file mode 100644 index 000000000..70ad2b7bf --- /dev/null +++ b/src/main/java/com/glxp/api/entity/inv/InvPreProductEntity.java @@ -0,0 +1,133 @@ +package com.glxp.api.entity.inv; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.util.Date; + +/** + * 寄售库存表 + */ +@Data +@TableName(value = "inv_pre_product") +public class InvPreProductEntity { + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + /** + * 耗材字典ID + */ + @TableField(value = "relIdFk") + private Long relIdFk; + + /** + * 最小销售标识 + */ + @TableField(value = "nameCode") + private String nameCode; + + /** + * 批次号 + */ + @TableField(value = "batchNo") + private String batchNo; + + /** + * 生产日期 + */ + @TableField(value = "productionDate") + private String productionDate; + + /** + * 失效日期 + */ + @TableField(value = "expireDate") + private String expireDate; + + /** + * 入库数量 + */ + @TableField(value = "inCount") + private Integer inCount; + + /** + * 出库数量 + */ + @TableField(value = "outCount") + private Integer outCount; + + /** + * 实际数量 + */ + @TableField(value = "reCount") + private String reCount; + + /** + * 客户ID + */ + @TableField(value = "customerId") + private String customerId; + + /** + * 供应商ID + */ + @TableField(value = "supId") + private String supId; + + /** + * 部门编码 + */ + @TableField(value = "deptCode") + private String deptCode; + + /** + * 仓库编码 + */ + @TableField(value = "invCode") + private String invCode; + + /** + * 创建时间 + */ + @TableField(value = "createTime") + private Date createTime; + + /** + * 更新时间 + */ + @TableField(value = "updateTime") + private Date updateTime; + + public static final String COL_ID = "id"; + + public static final String COL_RELIDFK = "relIdFk"; + + public static final String COL_NAMECODE = "nameCode"; + + public static final String COL_BATCHNO = "batchNo"; + + public static final String COL_PRODUCTIONDATE = "productionDate"; + + public static final String COL_EXPIREDATE = "expireDate"; + + public static final String COL_INCOUNT = "inCount"; + + public static final String COL_OUTCOUNT = "outCount"; + + public static final String COL_RECOUNT = "reCount"; + + public static final String COL_CUSTOMERID = "customerId"; + + public static final String COL_SUPID = "supId"; + + public static final String COL_DEPTCODE = "deptCode"; + + public static final String COL_INVCODE = "invCode"; + + public static final String COL_CREATETIME = "createTime"; + + public static final String COL_UPDATETIME = "updateTime"; +} \ 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/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/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/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/req/inv/FilterInvPreProductDetailRequest.java b/src/main/java/com/glxp/api/req/inv/FilterInvPreProductDetailRequest.java new file mode 100644 index 000000000..45ccf4c84 --- /dev/null +++ b/src/main/java/com/glxp/api/req/inv/FilterInvPreProductDetailRequest.java @@ -0,0 +1,79 @@ +package com.glxp.api.req.inv; + +import com.glxp.api.util.page.ListPageRequest; +import lombok.Data; + +import java.util.List; + +/** + * 寄售库存详情查询参数 + */ +@Data +public class FilterInvPreProductDetailRequest extends ListPageRequest { + + /** + * UDI码 + */ + private String code; + + /** + * 出入库单据类型 + */ + private String mainAction; + + /** + * 单据类型 + */ + private String action; + + /** + * 供应商ID + */ + private String supId; + + /** + * 耗材字典ID + */ + private String relId; + + /** + * 最小销售标识 + */ + private String nameCode; + + /** + * 单据号 + */ + private String orderId; + + /** + * 部门编码 + */ + private String deptCode; + + /** + * 仓库编码 + */ + private String invCode; + + /** + * 货位编码 + */ + private String invSpaceCode; + + /** + * 批次号 + */ + private String batchNo; + + /** + * 产品ID集合 + */ + private List productIdList; + + /** + * 更新时间 + */ + private String updateTime; + +} diff --git a/src/main/java/com/glxp/api/req/inv/FilterInvPreProductRequest.java b/src/main/java/com/glxp/api/req/inv/FilterInvPreProductRequest.java new file mode 100644 index 000000000..dc38bd6f5 --- /dev/null +++ b/src/main/java/com/glxp/api/req/inv/FilterInvPreProductRequest.java @@ -0,0 +1,101 @@ +package com.glxp.api.req.inv; + +import com.glxp.api.util.page.ListPageRequest; +import lombok.Data; + +import java.util.List; + +/** + * 寄售库存查询参数 + */ +@Data +public class FilterInvPreProductRequest extends ListPageRequest { + + private String id; + + /** + * 产品名称 + */ + private String cpmctymc; + + /** + * 产品标识DI + */ + private String nameCode; + + /** + * UDI码 + */ + private String udiCode; + + /** + * 耗材字典ID + */ + private String relIdFk; + + /** + * 规格型号 + */ + private String ggxh; + + /** + * 批次号 + */ + private String batchNo; + + /** + * 生产日期 + */ + private String productionDate; + + /** + * 失效日期 + */ + private String expireDate; + + /** + * 生产厂家 + */ + private String ylqxzcrbarmc; + + /** + * 批准文号 + */ + private String zczbhhzbapzbh; + + /** + * 客户ID + */ + private String customerId; + + /** + * 供应商ID + */ + private String supId; + + /** + * 供应商名称 + */ + private String supName; + + /** + * 部门编码 + */ + private String deptCode; + + /** + * 仓库编码 + */ + private String invCode; + + /** + * 仓库数组 + */ + private List invCodes; + + /** + * 产品类别 + */ + private String cplb; + +} 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/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/res/inv/InvPreProductDetailResponse.java b/src/main/java/com/glxp/api/res/inv/InvPreProductDetailResponse.java new file mode 100644 index 000000000..8dffff768 --- /dev/null +++ b/src/main/java/com/glxp/api/res/inv/InvPreProductDetailResponse.java @@ -0,0 +1,130 @@ +package com.glxp.api.res.inv; + +import lombok.Data; + +import java.util.Date; + +/** + * 寄售库存详情VO + */ +@Data +public class InvPreProductDetailResponse { + + private Integer id; + + /** + * UDI码 + */ + private String code; + + /** + * 订单号外键 + */ + private String orderId; + + /** + * 耗材字典ID + */ + private Long relId; + + /** + * 最小销售标识 + */ + private String nameCode; + + /** + * 批次号 + */ + private String batchNo; + + /** + * 生产日期 + */ + private String produceDate; + + /** + * 失效日期 + */ + private String expireDate; + + /** + * 序列号 + */ + private String serialNo; + + /** + * 供应商 + */ + private String supId; + + /** + * 扫码数量 + */ + private Integer count; + + /** + * 实际数量 + */ + private Integer reCount; + + /** + * 部门编码 + */ + private String deptCode; + + /** + * 仓库编码 + */ + private String invCode; + + /** + * 货位编码 + */ + private String invSpaceCode; + + /** + * 采购类型 + */ + private Integer purchaseType; + + /** + * 更新时间 + */ + private Date updateTime; + + /** + * 单据出入库类型 + */ + private String mainAction; + + /** + * 单据类型编码 + */ + private String action; + + /** + * 单据类型名称 + */ + private String actionName; + + /** + * 出入库类型中文字符串 + */ + private String mainActionStr; + + /** + * 入库数量 + */ + private Integer inCount; + + /** + * 出库数量 + */ + private Integer outCount; + + /** + * 单据日期 + */ + private String orderTime; + +} diff --git a/src/main/java/com/glxp/api/res/inv/InvPreProductPageResponse.java b/src/main/java/com/glxp/api/res/inv/InvPreProductPageResponse.java new file mode 100644 index 000000000..aaae8d2aa --- /dev/null +++ b/src/main/java/com/glxp/api/res/inv/InvPreProductPageResponse.java @@ -0,0 +1,17 @@ +package com.glxp.api.res.inv; + +import com.glxp.api.res.PageSimpleResponse; +import lombok.Data; + +/** + * 寄售库存查询分页对象 + */ +@Data +public class InvPreProductPageResponse extends PageSimpleResponse { + + /** + * 前端页面控制字段 + */ + private boolean showSup; + +} diff --git a/src/main/java/com/glxp/api/res/inv/InvPreProductResponse.java b/src/main/java/com/glxp/api/res/inv/InvPreProductResponse.java new file mode 100644 index 000000000..131408f70 --- /dev/null +++ b/src/main/java/com/glxp/api/res/inv/InvPreProductResponse.java @@ -0,0 +1,108 @@ +package com.glxp.api.res.inv; + +import lombok.Data; + +/** + * 寄售库存VO + */ +@Data +public class InvPreProductResponse { + + private Integer id; + + /** + * 产品标识DI + */ + private String nameCode; + + /** + * 产品名称 + */ + private String cpmctymc; + + /** + * 耗材字典ID + */ + private String relIdFk; + + /** + * 规格型号 + */ + private String ggxh; + + /** + * 批次号 + */ + private String batchNo; + + /** + * 生产日期 + */ + private String productionDate; + + /** + * 过期时间 + */ + private String expireDate; + + /** + * 生产厂家名称 + */ + private String ylqxzcrbarmc; + + /** + * 批准文号 + */ + private String zczbhhzbapzbh; + + /** + * 入库数量 + */ + private Integer inCount; + + /** + * 出库数量 + */ + private Integer outCount; + + /** + * 实际数量 + */ + private Integer reCount; + + /** + * 客户ID + */ + private String customerId; + + /** + * 供应商名称 + */ + private String supName; + + /** + * 供应商ID + */ + private String supId; + + /** + * 部门名称 + */ + private String deptName; + + /** + * 仓库名称 + */ + private String invName; + + /** + * 部门编码 + */ + private String deptCode; + + /** + * 仓库编码 + */ + private String invCode; + +} 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/java/com/glxp/api/service/basic/BasicCorpService.java b/src/main/java/com/glxp/api/service/basic/BasicCorpService.java index 35d0657bd..99f893c0a 100644 --- a/src/main/java/com/glxp/api/service/basic/BasicCorpService.java +++ b/src/main/java/com/glxp/api/service/basic/BasicCorpService.java @@ -1,8 +1,6 @@ package com.glxp.api.service.basic; - - import com.glxp.api.entity.basic.BasicCorpEntity; import com.glxp.api.req.basic.BasicUnitMaintainFilterRequest; @@ -40,4 +38,12 @@ public interface BasicCorpService { List batchSelectByErpIds(List erpIds); List batchSelectByErpIdsAndName(List erpIds, String name); + + /** + * 验证数据是否重复 + * + * @param basicCorpEntity + * @return + */ + boolean verifyExists(BasicCorpEntity basicCorpEntity); } diff --git a/src/main/java/com/glxp/api/service/basic/IBasicBusTypeChangeService.java b/src/main/java/com/glxp/api/service/basic/IBasicBusTypeChangeService.java index 79e27e562..2e44a3f3d 100644 --- a/src/main/java/com/glxp/api/service/basic/IBasicBusTypeChangeService.java +++ b/src/main/java/com/glxp/api/service/basic/IBasicBusTypeChangeService.java @@ -40,4 +40,12 @@ public interface IBasicBusTypeChangeService { * @param id */ boolean deleteById(String id); + + /** + * 校验数据是否存在 + * + * @param basicBusTypeChangeEntity + * @return + */ + boolean verifyExists(BasicBusTypeChangeEntity basicBusTypeChangeEntity); } 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..226bbf9ba 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 verifyExists(BasicBusTypePreEntity basicBusTypePreEntity); } diff --git a/src/main/java/com/glxp/api/service/basic/impl/BasicBusTypeChangeServiceImpl.java b/src/main/java/com/glxp/api/service/basic/impl/BasicBusTypeChangeServiceImpl.java index 6bf5a5fc9..106c26f0e 100644 --- a/src/main/java/com/glxp/api/service/basic/impl/BasicBusTypeChangeServiceImpl.java +++ b/src/main/java/com/glxp/api/service/basic/impl/BasicBusTypeChangeServiceImpl.java @@ -1,5 +1,7 @@ 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.BasicBusTypeChangeDao; import com.glxp.api.entity.basic.BasicBusTypeChangeEntity; @@ -54,6 +56,27 @@ public class BasicBusTypeChangeServiceImpl implements IBasicBusTypeChangeService return basicBusTypeChangeDao.deleteById(id) != 0; } + @Override + public boolean verifyExists(BasicBusTypeChangeEntity basicBusTypeChangeEntity) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("originAction", basicBusTypeChangeEntity.getOriginAction()) + .eq("targetAction", basicBusTypeChangeEntity.getTargetAction()) + .eq("originName", basicBusTypeChangeEntity.getOriginName()); + List list = basicBusTypeChangeDao.selectList(wrapper); + if (CollUtil.isNotEmpty(list)) { + if (null != basicBusTypeChangeEntity.getId()) { + for (BasicBusTypeChangeEntity busTypeChangeEntity : list) { + if (busTypeChangeEntity.getId() != basicBusTypeChangeEntity.getId()) { + return true; + } + } + } else { + return true; + } + } + return false; + } + private void setUpdateInfo(BasicBusTypeChangeEntity basicBusTypeChangeEntity) { Date now = new Date(); String userId = String.valueOf(customerService.getUserBean().getId()); 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..2b898f0d9 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,31 @@ public class BasicBusTypePreServiceImpl implements IBasicBusTypePreService { return basicBusTypePreDao.selectOne(new QueryWrapper().eq("originAction", originAction)); } + @Override + public boolean verifyExists(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) { + if (busTypePreEntity.getId() != basicBusTypePreEntity.getId()) { + return true; + } + } + } else { + return true; + } + } + return false; + } + /** * 设置创建/更新信息 * diff --git a/src/main/java/com/glxp/api/service/basic/impl/BasicCorpServiceImpl.java b/src/main/java/com/glxp/api/service/basic/impl/BasicCorpServiceImpl.java index d72df1893..0c0aa56a6 100644 --- a/src/main/java/com/glxp/api/service/basic/impl/BasicCorpServiceImpl.java +++ b/src/main/java/com/glxp/api/service/basic/impl/BasicCorpServiceImpl.java @@ -1,5 +1,6 @@ package com.glxp.api.service.basic.impl; +import cn.hutool.core.collection.CollUtil; import com.github.pagehelper.PageHelper; import com.glxp.api.dao.basic.BasicCorpDao; import com.glxp.api.entity.basic.BasicCorpEntity; @@ -92,6 +93,23 @@ public class BasicCorpServiceImpl implements BasicCorpService { return basicCorpDao.batchSelectByErpIdsAndName(erpIds, name); } + @Override + public boolean verifyExists(BasicCorpEntity basicCorpEntity) { + List list = basicCorpDao.selectByNameAndCreditNo(basicCorpEntity.getName(), basicCorpEntity.getCreditNo()); + if (CollUtil.isNotEmpty(list)) { + if (null != basicCorpEntity.getId()) { + for (BasicCorpEntity corpEntity : list) { + if (corpEntity.getId() != basicCorpEntity.getId()) { + return true; + } + } + } else { + return true; + } + } + return false; + } + @Override public BasicCorpEntity selectById(String id) { return basicCorpDao.selectById(id); 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..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; @@ -77,6 +74,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); @@ -209,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) { @@ -225,7 +214,6 @@ public class IoAddInoutService { } } codeTempService.deleteByBillNo(orderEntity.getBillNo()); - //进行单据校验 ioCheckInoutService.check(orderEntity.getBillNo()); } 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..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 "非此单产品!"; @@ -375,6 +381,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/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 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/InvPreProductDetailService.java b/src/main/java/com/glxp/api/service/inv/InvPreProductDetailService.java new file mode 100644 index 000000000..d3c95db23 --- /dev/null +++ b/src/main/java/com/glxp/api/service/inv/InvPreProductDetailService.java @@ -0,0 +1,42 @@ +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; + +/** + * 寄售库存详情Service + */ +public interface InvPreProductDetailService { + + int insert(InvPreProductDetailEntity invPreProductDetailEntity); + + boolean update(InvPreProductDetailEntity invPreProductDetailEntity); + + boolean deleteById(String id); + + /** + * 查询寄售库存详情列表 + * + * @param invPreProductDetailRequest + * @return + */ + List filterPreProductDetailList(FilterInvPreProductDetailRequest invPreProductDetailRequest); + + /** + * 设置单据类型名称等单据相关参数 + * + * @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 new file mode 100644 index 000000000..f46ef5c88 --- /dev/null +++ b/src/main/java/com/glxp/api/service/inv/InvPreProductService.java @@ -0,0 +1,43 @@ +package com.glxp.api.service.inv; + +import com.glxp.api.entity.inv.InvPreProductEntity; +import com.glxp.api.req.inv.FilterInvPreProductRequest; +import com.glxp.api.res.inv.InvPreProductResponse; + +import java.util.List; + +/** + * 寄售库存Service + */ +public interface InvPreProductService { + + int insert(InvPreProductEntity invPreProductEntity); + + boolean update(InvPreProductEntity invPreProductEntity); + + boolean deleteById(String id); + + /** + * 查询寄售库存VO + * + * @param invPreProductRequest + * @return + */ + List filterList(FilterInvPreProductRequest invPreProductRequest); + + /** + * 查询寄售库存列表 + * + * @param invPreProductRequest + * @return + */ + List filterPreProductList(FilterInvPreProductRequest invPreProductRequest); + + /** + * 根据ID查询寄售库存信息 + * + * @param id + * @return + */ + InvPreProductEntity findById(String id); +} 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/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/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/java/com/glxp/api/service/inv/impl/InvPreProductDetailServiceImpl.java b/src/main/java/com/glxp/api/service/inv/impl/InvPreProductDetailServiceImpl.java new file mode 100644 index 000000000..95db50e6f --- /dev/null +++ b/src/main/java/com/glxp/api/service/inv/impl/InvPreProductDetailServiceImpl.java @@ -0,0 +1,86 @@ +package com.glxp.api.service.inv.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.github.pagehelper.PageHelper; +import com.glxp.api.constant.ConstantType; +import com.glxp.api.dao.basic.BasicBussinessTypeDao; +import com.glxp.api.dao.inout.IoOrderDao; +import com.glxp.api.dao.inv.InvPreProductDetailDao; +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; +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; + +@Slf4j +@Service +@Transactional(rollbackFor = Exception.class) +public class InvPreProductDetailServiceImpl implements InvPreProductDetailService { + + @Resource + private InvPreProductDetailDao invPreProductDetailDao; + @Resource + private BasicBussinessTypeDao bussinessTypeDao; + @Resource + private IoOrderDao orderDao; + + @Override + public int insert(InvPreProductDetailEntity invPreProductDetailEntity) { + return invPreProductDetailDao.insert(invPreProductDetailEntity); + } + + @Override + public boolean update(InvPreProductDetailEntity invPreProductDetailEntity) { + return invPreProductDetailDao.updateById(invPreProductDetailEntity) == 1 ? true : false; + } + + @Override + public boolean deleteById(String id) { + return invPreProductDetailDao.deleteById(id) == 1 ? true : false; + } + + @Override + public List filterPreProductDetailList(FilterInvPreProductDetailRequest invPreProductDetailRequest) { + if (null == invPreProductDetailRequest) { + return Collections.emptyList(); + } + if (null != invPreProductDetailRequest.getPage() && null != invPreProductDetailRequest.getLimit()) { + PageHelper.offsetPage((invPreProductDetailRequest.getPage() - 1) * invPreProductDetailRequest.getLimit(), invPreProductDetailRequest.getLimit()); + } + return invPreProductDetailDao.filterPreProductDetailList(invPreProductDetailRequest); + } + + @Override + public void setOrderInfo(InvPreProductDetailResponse response) { + //设置出入库中文及出入库数量 + if (response.getMainAction().equals(ConstantType.TYPE_OUT)) { + response.setMainActionStr("出库"); + response.setOutCount(response.getCount()); + } else { + response.setMainActionStr("入库"); + response.setInCount(response.getCount()); + } + //设置单据类型名称 + BasicBussinessTypeEntity busType = bussinessTypeDao.selectOne(new QueryWrapper().select("name").eq("action", response.getAction())); + response.setActionName(busType.getName()); + //设置单据日期 + 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 new file mode 100644 index 000000000..573d936b5 --- /dev/null +++ b/src/main/java/com/glxp/api/service/inv/impl/InvPreProductServiceImpl.java @@ -0,0 +1,67 @@ +package com.glxp.api.service.inv.impl; + +import com.github.pagehelper.PageHelper; +import com.glxp.api.dao.inv.InvPreProductDao; +import com.glxp.api.entity.inv.InvPreProductEntity; +import com.glxp.api.req.inv.FilterInvPreProductRequest; +import com.glxp.api.res.inv.InvPreProductResponse; +import com.glxp.api.service.inv.InvPreProductService; +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; + +@Slf4j +@Service +@Transactional(rollbackFor = Exception.class) +public class InvPreProductServiceImpl implements InvPreProductService { + + @Resource + private InvPreProductDao invPreProductDao; + + @Override + public int insert(InvPreProductEntity invPreProductEntity) { + return invPreProductDao.insert(invPreProductEntity); + } + + @Override + public boolean update(InvPreProductEntity invPreProductEntity) { + return invPreProductDao.updateById(invPreProductEntity) == 1 ? true : false; + } + + @Override + public boolean deleteById(String id) { + return invPreProductDao.deleteById(id) == 1 ? true : false; + } + + @Override + public List filterList(FilterInvPreProductRequest invPreProductRequest) { + if (null == invPreProductRequest) { + return Collections.emptyList(); + } + if (null != invPreProductRequest.getProductionDate() && null != invPreProductRequest.getLimit()) { + PageHelper.offsetPage((invPreProductRequest.getPage() - 1) * invPreProductRequest.getLimit(), invPreProductRequest.getLimit()); + } + return invPreProductDao.filterList(invPreProductRequest); + } + + @Override + public List filterPreProductList(FilterInvPreProductRequest invPreProductRequest) { + if (null == invPreProductRequest) { + return Collections.emptyList(); + } + if (null != invPreProductRequest.getProductionDate() && null != invPreProductRequest.getLimit()) { + PageHelper.offsetPage((invPreProductRequest.getPage() - 1) * invPreProductRequest.getLimit(), invPreProductRequest.getLimit()); + } + return invPreProductDao.filterPreProductList(invPreProductRequest); + } + + @Override + public InvPreProductEntity findById(String id) { + return invPreProductDao.selectById(id); + } + +} 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; + } } 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/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; + } + } 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 @@ + + \ No newline at end of file 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/inv/InvPreProductDao.xml b/src/main/resources/mybatis/mapper/inv/InvPreProductDao.xml new file mode 100644 index 000000000..8c337f5b3 --- /dev/null +++ b/src/main/resources/mybatis/mapper/inv/InvPreProductDao.xml @@ -0,0 +1,138 @@ + + + + + + + \ 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..a44b17f39 --- /dev/null +++ b/src/main/resources/mybatis/mapper/inv/InvPreProductDetailDao.xml @@ -0,0 +1,78 @@ + + + + + + + + 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 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 @@ + + 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} + + + + 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 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},'%')