diff --git a/src/main/java/com/glxp/api/constant/ConstantStatus.java b/src/main/java/com/glxp/api/constant/ConstantStatus.java index c9368fc65..a977e9fd1 100644 --- a/src/main/java/com/glxp/api/constant/ConstantStatus.java +++ b/src/main/java/com/glxp/api/constant/ConstantStatus.java @@ -9,10 +9,11 @@ public class ConstantStatus { public static final Integer ORDER_STATUS_TEMP_SAVE = -1; //等待提交(草稿) public static final Integer ORDER_STATUS_PROCESS = 1; //等待处理 public static final Integer ORDER_STATUS_CHECK = 2; //等待校验 - public static final Integer ORDER_STATUS_FAIL = 3; //重码校验失败 + public static final Integer ORDER_STATUS_FAIL = 3; //单据校验失败 public static final Integer ORDER_STATUS_SUCCESS = 4; //已校验 public static final Integer ORDER_STATUS_ADDITIONAL = 5; //补录单据 public static final Integer ORDER_STATUS_DOING = 6; + public static final Integer ORDER_STATUS_RECEIVEED = 7; //订单处理状态 public static final Integer ORDER_DEAL_DRAFT = 1; //草稿 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 a4b6a5d2e..fd313f24c 100644 --- a/src/main/java/com/glxp/api/controller/auth/InvWarehouseController.java +++ b/src/main/java/com/glxp/api/controller/auth/InvWarehouseController.java @@ -3,6 +3,7 @@ package com.glxp.api.controller.auth; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.StrUtil; +import cn.hutool.json.JSONUtil; import com.github.pagehelper.PageInfo; import com.glxp.api.annotation.AuthRuleAnnotation; import com.glxp.api.common.enums.ResultEnum; @@ -17,6 +18,7 @@ import com.glxp.api.req.basic.FilterBussinessTypeRequest; import com.glxp.api.req.system.DeleteRequest; import com.glxp.api.req.thrsys.FilterBasicThirdSysRequest; import com.glxp.api.res.PageSimpleResponse; +import com.glxp.api.res.auth.InvBusUserResponse; import com.glxp.api.res.auth.InvSubWarehouseResponse; import com.glxp.api.res.auth.InvWarehouseThirdSysResponse; import com.glxp.api.res.auth.WarehouseUserResponse; @@ -33,10 +35,8 @@ import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; import javax.validation.Valid; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Date; -import java.util.List; +import java.util.*; +import java.util.stream.Collectors; @RestController public class InvWarehouseController extends BaseController { @@ -55,6 +55,10 @@ public class InvWarehouseController extends BaseController { private WarehouseBussinessTypeService warehouseBussinessTypeService; @Resource private IBasicBussinessTypeService basicBussinessTypeService; + @Resource + private InvSpaceService invSpaceService; + @Resource + InvBusUserService invBusUserService; /** * 获取仓库列表 @@ -202,6 +206,7 @@ public class InvWarehouseController extends BaseController { return ResultVOUtils.success(invSubWarehouseEntities); } + @AuthRuleAnnotation("") @PostMapping("/spms/sub/inv/warehouse/save") public BaseResponse save(@RequestBody @Valid InvWarehouseEntity invWarehouseEntity, @@ -276,15 +281,15 @@ public class InvWarehouseController extends BaseController { //todo 代码未迁移完,记得回来修改 -// Integer userCount = warehouseUserService.countUserBySubInvCode(invWarehouseEntity.getCode()); -// if (userCount > 0) { -// return ResultVOUtils.error(500, "请先移除该仓库关联用户!"); -// } -// -// List warehouseBussinessTypeEntities = warehouseBussinessTypeService.getListByCode(invWarehouseEntity.getCode()); -// if (!warehouseBussinessTypeEntities.isEmpty()) { -// return ResultVOUtils.error(500, "请先移除该仓库关联用户和单据类型!"); -// } + Integer userCount = warehouseUserService.countUserBySubInvCode(invWarehouseEntity.getCode()); + if (userCount > 0) { + return ResultVOUtils.error(500, "请先移除该仓库关联用户!"); + } + + List warehouseBussinessTypeEntities = warehouseBussinessTypeService.getListByCode(invWarehouseEntity.getCode()); + if (!warehouseBussinessTypeEntities.isEmpty()) { + return ResultVOUtils.error(500, "请先移除该仓库关联用户和单据类型!"); + } // // //判断此分库中是否还有库存 // InvWarehouseEntity invSubWarehouse = invWarehouseService.findById(deleteRequest.getId()); @@ -293,11 +298,11 @@ public class InvWarehouseController extends BaseController { // return ResultVOUtils.error(500, "此分库存在库存,不能删除!"); // } // -// //判断此分库下是否有货位 -// List spaceList = invSpaceService.findBySubWarehouseCode(invSubWarehouse.getCode()); -// if (CollUtil.isNotEmpty(spaceList)) { -// return ResultVOUtils.error(500, "请先移除此分库下的货位!"); -// } + //判断此分库下是否有货位 + List spaceList = invSpaceService.findBySubWarehouseCode(invWarehouseEntity.getCode()); + if (CollUtil.isNotEmpty(spaceList)) { + return ResultVOUtils.error(500, "请先移除此分库下的货位!"); + } boolean b = invWarehouseService.deleteById(deleteRequest.getId()); @@ -514,4 +519,39 @@ public class InvWarehouseController extends BaseController { return null; } + @AuthRuleAnnotation("") + @PostMapping("/warehouse/inout/delWarehouseUser") + public BaseResponse deleteWarehouseUser(Integer id) { + if (null == id) + return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL); + WarehouseUserEntity warehouseUserEntity = warehouseUserService.selectById(id); + + List invBusUserEntities = invBusUserService.selectByUnion(warehouseUserEntity.getUserid() + "", warehouseUserEntity.getCode()); + if (CollUtil.isNotEmpty(invBusUserEntities)) { + return ResultVOUtils.error(500, "已存在该用户关联单据类型,无法删除!"); + } + + InvWarehouseEntity invSubWarehouseEntity = + invWarehouseService.findByInvSubByCode(warehouseUserEntity.getCode()); + deptService.updateTime(invSubWarehouseEntity.getParentId(), new Date()); + warehouseUserService.deleteWarehouseUser(id); + return ResultVOUtils.success(); + } + + + @AuthRuleAnnotation("") + @PostMapping("/warehouse/inout/addWarehouseUser") + public BaseResponse addWarehouseUser(@RequestBody Map params) { + String code = String.valueOf(params.get("code")); + String userListJson = String.valueOf(params.get("userList")); + if (StrUtil.isBlank(code) || StrUtil.isBlank(userListJson)) + return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL); + List userList = JSONUtil.toList(userListJson, AuthAdmin.class); + warehouseUserService.saveWarehouseUser(code, userList); + InvWarehouseEntity invSubWarehouseEntity = + invWarehouseService.findByInvSubByCode(code); + deptService.updateTime(invSubWarehouseEntity.getParentId(), new Date()); + return ResultVOUtils.success(); + } + } diff --git a/src/main/java/com/glxp/api/controller/inout/IoCodeController.java b/src/main/java/com/glxp/api/controller/inout/IoCodeController.java index 25c428835..a3510c9bd 100644 --- a/src/main/java/com/glxp/api/controller/inout/IoCodeController.java +++ b/src/main/java/com/glxp/api/controller/inout/IoCodeController.java @@ -3,10 +3,12 @@ package com.glxp.api.controller.inout; import com.glxp.api.controller.BaseController; import org.springframework.web.bind.annotation.RestController; +/** + * 单据正式码表接口 + */ @RestController public class IoCodeController extends BaseController { - } 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 9f08f5b4c..d5ec7184c 100644 --- a/src/main/java/com/glxp/api/controller/inout/IoCodeTempController.java +++ b/src/main/java/com/glxp/api/controller/inout/IoCodeTempController.java @@ -17,6 +17,7 @@ import com.glxp.api.entity.basic.UdiEntity; import com.glxp.api.entity.basic.UdiProductEntity; import com.glxp.api.entity.inout.IoCodeEnttity; import com.glxp.api.entity.inout.IoCodeTempEntity; +import com.glxp.api.entity.inout.IoOrderDetailCodeEntity; import com.glxp.api.entity.inout.IoOrderEntity; import com.glxp.api.entity.system.SystemParamConfigEntity; import com.glxp.api.http.SpsDirectClient; @@ -32,8 +33,9 @@ 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.IoCodeTempService; +import com.glxp.api.service.inout.IoOrderDetailCodeService; import com.glxp.api.service.inout.IoOrderService; -import com.glxp.api.service.inout.IoTransInoutService; +import com.glxp.api.service.inout.IoAddInoutService; import com.glxp.api.service.system.SystemParamConfigService; import com.glxp.api.util.CustomUtil; import com.glxp.api.util.DateUtil; @@ -45,10 +47,7 @@ import com.glxp.api.util.udi.UdiCalCountUtil; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.BeanUtils; 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 org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import java.util.ArrayList; @@ -68,7 +67,7 @@ public class IoCodeTempController extends BaseController { @Resource private SpsDirectClient spsDirectClient; @Resource - IoTransInoutService transInoutService; + IoAddInoutService transInoutService; @Resource private SystemParamConfigService systemParamConfigService; @Resource @@ -374,7 +373,7 @@ public class IoCodeTempController extends BaseController { } } - String orderId = addOrderRequest.getOrderId(); + String orderId = addOrderRequest.getBillNo(); //三期校验 if (addOrderRequest.isCodeFillCheck()) { @@ -765,4 +764,46 @@ public class IoCodeTempController extends BaseController { } + @Resource + IoOrderDetailCodeService ioOrderDetailCodeService; + + @AuthRuleAnnotation("") + @GetMapping("warehouse/inout/deleteCodesTempById") + public BaseResponse deleteCodesTempById(@RequestParam("id") Integer id) { + + IoCodeTempEntity codeTempEntity = codeTempService.selectById(id); + IoOrderEntity orderEntity = orderService.findByBillNo(codeTempEntity.getOrderId()); + if (codeTempEntity.getCount() != null && codeTempEntity.getCount() > 1) { + codeTempEntity.setCount(codeTempEntity.getCount() - 1); + codeTempService.updateById(codeTempEntity); + } else { + codeTempService.deleteById(id); + } + + //更新扫码详情 + List orderDetailCodeEntities = ioOrderDetailCodeService.findByOrderId(codeTempEntity.getOrderId()); + if (CollUtil.isNotEmpty(orderDetailCodeEntities)) { + for (IoOrderDetailCodeEntity orderDetailCodeEntity : orderDetailCodeEntities) { + if (orderDetailCodeEntity.getBindRlFk() == codeTempEntity.getRelId() && StrUtil.trimToEmpty(orderDetailCodeEntity.getBatchNo()).equals(codeTempEntity.getBatchNo())) { + //扫码数量-1 + int orderCount = orderDetailCodeEntity.getCount(); + int orderReCount = orderDetailCodeEntity.getReCount(); + if (orderCount > 1) { + orderDetailCodeEntity.setCount(orderCount - codeTempEntity.getCount()); + orderDetailCodeEntity.setCount(orderReCount - codeTempEntity.getReCount()); + ioOrderDetailCodeService.update(orderDetailCodeEntity); + } else { + ioOrderDetailCodeService.deleteById(orderDetailCodeEntity.getId()); + } + } + } + } + + orderEntity.setUpdateUser(getUserId() + ""); + orderEntity.setUpdateTime(new Date()); + orderService.update(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 new file mode 100644 index 000000000..e8effe719 --- /dev/null +++ b/src/main/java/com/glxp/api/controller/inout/IoOrderDetailBizController.java @@ -0,0 +1,123 @@ +package com.glxp.api.controller.inout; + + +import cn.hutool.core.util.StrUtil; +import com.glxp.api.annotation.AuthRuleAnnotation; +import com.glxp.api.common.res.BaseResponse; +import com.glxp.api.common.util.ResultVOUtils; +import com.glxp.api.constant.Constant; +import com.glxp.api.controller.BaseController; +import com.glxp.api.dao.inout.IoOrderDao; +import com.glxp.api.dao.inout.IoOrderDetailBizDao; +import com.glxp.api.entity.auth.AuthAdmin; +import com.glxp.api.entity.basic.BasicBussinessTypeEntity; +import com.glxp.api.entity.inout.IoOrderDetailBizEntity; +import com.glxp.api.entity.inout.IoOrderDetailCodeEntity; +import com.glxp.api.entity.inout.IoOrderEntity; +import com.glxp.api.req.inout.AddBizProductReqeust; +import com.glxp.api.req.system.DeleteRequest; +import com.glxp.api.res.PageSimpleResponse; +import com.glxp.api.res.basic.UdiRelevanceResponse; +import com.glxp.api.service.basic.IBasicBussinessTypeService; +import com.glxp.api.service.basic.UdiRelevanceService; +import com.glxp.api.service.inout.IoOrderDetailBizService; +import com.glxp.api.service.inout.IoOrderService; +import com.glxp.api.util.GennerOrderUtils; +import com.glxp.api.util.OrderNoTypeBean; +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.Date; +import java.util.List; + +/** + * 单据业务详情 + */ + +@RestController +public class IoOrderDetailBizController extends BaseController { + + @Resource + IoOrderService orderService; + @Resource + IoOrderDetailBizService orderDetailBizService; + @Resource + UdiRelevanceService udiRelevanceService; + @Resource + GennerOrderUtils gennerOrderUtils; + @Resource + private IBasicBussinessTypeService basicBussinessTypeService; + @Resource + IoOrderDetailBizDao ioOrderDetailBizDao; + + //获取单据业务详情---临时接口查询 + @AuthRuleAnnotation("") + @GetMapping("udiwms/inout/order/draft/biz") + public BaseResponse getDraftsDetailCode() { + List orderEntityList = ioOrderDetailBizDao.selectList(); + PageSimpleResponse pageSimpleResponse = new PageSimpleResponse<>(); + pageSimpleResponse.setTotal(100l); + pageSimpleResponse.setList(orderEntityList); + return ResultVOUtils.success(pageSimpleResponse); + } + + + //录入业务单据详情 + @AuthRuleAnnotation("") + @PostMapping("/udiwms/inout/order/addBizProduct") + public BaseResponse addBizProduct(@RequestBody AddBizProductReqeust addBizProductReqeust) { + + AuthAdmin authAdmin = getUser(); + if (addBizProductReqeust.getRelId() == null) + return ResultVOUtils.error(500, "未选择产品信息"); + if (addBizProductReqeust.getOrderEntity() == null) + return ResultVOUtils.error(500, "未指定订单"); + IoOrderEntity orderEntity = addBizProductReqeust.getOrderEntity(); + if (StrUtil.isEmpty(orderEntity.getBillNo())) { + BasicBussinessTypeEntity bussinessTypeEntity = basicBussinessTypeService.findByAction(orderEntity.getAction()); + String orderNo = gennerOrderUtils.createScOrderNo(new OrderNoTypeBean(Constant.SCAN_ORDER + StrUtil.trimToEmpty(bussinessTypeEntity.getPrefix()), "yyyyMMdd")); + orderEntity.setBillNo(orderNo); + orderEntity.setCreateUser(authAdmin.getId() + ""); + orderEntity.setCreateTime(new Date()); + } + UdiRelevanceResponse udiRelevanceResponse = udiRelevanceService.selectGroupById(addBizProductReqeust.getRelId()); + IoOrderDetailBizEntity ioOrderDetailBizEntity = new IoOrderDetailBizEntity(); + ioOrderDetailBizEntity.setOrderIdFk(orderEntity.getBillNo()); + ioOrderDetailBizEntity.setBindRlFk(udiRelevanceResponse.getId()); + ioOrderDetailBizEntity.setUuidFk(udiRelevanceResponse.getUuid()); + ioOrderDetailBizEntity.setCoName(udiRelevanceResponse.getCpmctymc()); + ioOrderDetailBizEntity.setCertCode(udiRelevanceResponse.getZczbhhzbapzbh()); + ioOrderDetailBizEntity.setYlqxzcrbarmc(udiRelevanceResponse.getYlqxzcrbarmc()); + ioOrderDetailBizEntity.setManufacturer(udiRelevanceResponse.getManufactory()); + ioOrderDetailBizEntity.setMeasname(udiRelevanceResponse.getMeasname()); + ioOrderDetailBizEntity.setSpec(udiRelevanceResponse.getGgxh()); + ioOrderDetailBizEntity.setPrice(udiRelevanceResponse.getPrice()); + orderDetailBizService.insert(ioOrderDetailBizEntity); + orderEntity.setUpdateTime(new Date()); + orderEntity.setUpdateUser(authAdmin.getId() + ""); + orderService.insertOrUpdate(orderEntity); + return ResultVOUtils.success(orderEntity); + } + + //修改业务单据详情 + @AuthRuleAnnotation("") + @PostMapping("/udiwms/inout/order/updateBizProduct") + public BaseResponse updateBizProduct(@RequestBody IoOrderDetailBizEntity orderDetailBizEntity) { + boolean isExit = orderDetailBizService.isExit(orderDetailBizEntity.getBindRlFk(), orderDetailBizEntity.getBatchNo(), orderDetailBizEntity.getId()); + if (isExit) { + return ResultVOUtils.error(500, "存在相同产品,相同批次号,请检查后保存!"); + } + return orderDetailBizService.update(orderDetailBizEntity) > 0 ? ResultVOUtils.success("保存成功!") : ResultVOUtils.error(500, "保存失败"); + } + + @AuthRuleAnnotation("") + @PostMapping("/udiwms/inout/order/delBizProduct") + public BaseResponse delBizProduct(@RequestBody DeleteRequest deleteRequest) { + return orderDetailBizService.deleteById(Integer.parseInt(deleteRequest.getId())) > 0 ? ResultVOUtils.success("删除成功!") : ResultVOUtils.error(500, "删除失败"); + } + + +} diff --git a/src/main/java/com/glxp/api/controller/inout/IoOrderDetailController.java b/src/main/java/com/glxp/api/controller/inout/IoOrderDetailController.java index ab9288162..918c86035 100644 --- a/src/main/java/com/glxp/api/controller/inout/IoOrderDetailController.java +++ b/src/main/java/com/glxp/api/controller/inout/IoOrderDetailController.java @@ -4,9 +4,14 @@ import com.glxp.api.annotation.AuthRuleAnnotation; import com.glxp.api.common.res.BaseResponse; import com.glxp.api.common.util.ResultVOUtils; import com.glxp.api.dao.inout.IoOrderDetailCodeDao; +import com.glxp.api.entity.inout.IoOrderDetailBizEntity; import com.glxp.api.entity.inout.IoOrderDetailCodeEntity; +import com.glxp.api.req.basic.UdiCombineRequest; +import com.glxp.api.req.inout.AddBizProductReqeust; import com.glxp.api.res.PageSimpleResponse; 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; @@ -31,6 +36,6 @@ public class IoOrderDetailController { } - //录入业务单据详情 + } diff --git a/src/main/java/com/glxp/api/controller/thrsys/ThrInvWarehouseController.java b/src/main/java/com/glxp/api/controller/thrsys/ThrInvWarehouseController.java index ba6002707..27d23c1b8 100644 --- a/src/main/java/com/glxp/api/controller/thrsys/ThrInvWarehouseController.java +++ b/src/main/java/com/glxp/api/controller/thrsys/ThrInvWarehouseController.java @@ -89,7 +89,7 @@ public class ThrInvWarehouseController { @AuthRuleAnnotation("") @PostMapping("/thirdSys/sub/inv/warehouse/edit") public BaseResponse edit(@RequestBody @Valid ThrInvWarehouseEntity invSubWarehouseEntity, - BindingResult bindingResult) { + BindingResult bindingResult,FilterThrSubInvWarehouseRequest filterThrSubInvWarehouseRequest ) { if (bindingResult.hasErrors()) { return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage()); @@ -97,9 +97,18 @@ public class ThrInvWarehouseController { if (invSubWarehouseEntity.getId() == null) { return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL); } - boolean b = thrInvWarehouseService.updateThrInvWarehouse(invSubWarehouseEntity); - if (!b) { - return ResultVOUtils.error(ResultEnum.NOT_NETWORK); + //先判断该部门下存不存在此仓库 + filterThrSubInvWarehouseRequest.setCode(invSubWarehouseEntity.getCode()); + filterThrSubInvWarehouseRequest.setName(invSubWarehouseEntity.getName()); + filterThrSubInvWarehouseRequest.setParentId(invSubWarehouseEntity.getParentId()); + List thrInvWarehouseEntities = thrInvWarehouseService.filterThrInvWarehouse(filterThrSubInvWarehouseRequest); + if(thrInvWarehouseEntities.size()==0){ + boolean b = thrInvWarehouseService.updateThrInvWarehouse(invSubWarehouseEntity); + if (!b) { + return ResultVOUtils.error(ResultEnum.NOT_NETWORK); + } + }else{ + return ResultVOUtils.error(ResultEnum.DATA_REPEAT); } ThrDeptEntity thrDeptEntity = thrDeptService.selectByCode(invSubWarehouseEntity.getParentId(), invSubWarehouseEntity.getThirdSysFk()); 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 e8bf85c54..09a9dece2 100644 --- a/src/main/java/com/glxp/api/dao/auth/InvSubWarehouseDao.java +++ b/src/main/java/com/glxp/api/dao/auth/InvSubWarehouseDao.java @@ -1,16 +1,20 @@ package com.glxp.api.dao.auth; +import com.glxp.api.dao.BaseMapperPlus; +import com.glxp.api.dao.inout.IoOrderDetailCodeDao; import com.glxp.api.entity.auth.InvWarehouseEntity; +import com.glxp.api.entity.inout.IoOrderDetailCodeEntity; import com.glxp.api.req.auth.FilterInvSubWarehouseRequest; import com.glxp.api.req.auth.FilterInvWarehouseRequest; import com.glxp.api.res.auth.InvSubWarehouseResponse; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; +import java.util.Date; import java.util.List; @Mapper -public interface InvSubWarehouseDao { +public interface InvSubWarehouseDao extends BaseMapperPlus { List filterInvSubWarehouse(FilterInvSubWarehouseRequest filterInvSubWarehouseRequest); @@ -74,4 +78,7 @@ public interface InvSubWarehouseDao { */ List filterSubInvList(FilterInvWarehouseRequest filterInvWarehouseRequest); + + boolean updateTime(@Param("code") String code, @Param("updateTime") Date updateTime); + } diff --git a/src/main/java/com/glxp/api/dao/inout/IoCodeDao.java b/src/main/java/com/glxp/api/dao/inout/IoCodeDao.java index 43cd88613..ec88510ec 100644 --- a/src/main/java/com/glxp/api/dao/inout/IoCodeDao.java +++ b/src/main/java/com/glxp/api/dao/inout/IoCodeDao.java @@ -2,7 +2,17 @@ package com.glxp.api.dao.inout; import com.glxp.api.dao.BaseMapperPlus; import com.glxp.api.entity.inout.IoCodeEnttity; -import com.glxp.api.entity.inout.IoOrderEntity; +import com.glxp.api.req.inout.FilterIoCodeRequest; -public interface IoCodeDao extends BaseMapperPlus { +import java.util.List; + +public interface IoCodeDao extends BaseMapperPlus { + + /** + * 查询单据码明细 + * + * @param filterIoCodeRequest + * @return + */ + List filterCodeList(FilterIoCodeRequest filterIoCodeRequest); } diff --git a/src/main/java/com/glxp/api/dao/inout/IoCodeTempDao.java b/src/main/java/com/glxp/api/dao/inout/IoCodeTempDao.java index aa422f0c6..d079aad8a 100644 --- a/src/main/java/com/glxp/api/dao/inout/IoCodeTempDao.java +++ b/src/main/java/com/glxp/api/dao/inout/IoCodeTempDao.java @@ -1,7 +1,6 @@ package com.glxp.api.dao.inout; import com.glxp.api.dao.BaseMapperPlus; -import com.glxp.api.entity.inout.IoCodeEnttity; import com.glxp.api.entity.inout.IoCodeTempEntity; public interface IoCodeTempDao extends BaseMapperPlus { diff --git a/src/main/java/com/glxp/api/dao/inout/IoOrderDetailCodeDao.java b/src/main/java/com/glxp/api/dao/inout/IoOrderDetailCodeDao.java index ba00c8513..4204c4e94 100644 --- a/src/main/java/com/glxp/api/dao/inout/IoOrderDetailCodeDao.java +++ b/src/main/java/com/glxp/api/dao/inout/IoOrderDetailCodeDao.java @@ -1,7 +1,6 @@ package com.glxp.api.dao.inout; import com.glxp.api.dao.BaseMapperPlus; -import com.glxp.api.entity.inout.IoCodeTempEntity; import com.glxp.api.entity.inout.IoOrderDetailCodeEntity; public interface IoOrderDetailCodeDao extends BaseMapperPlus { diff --git a/src/main/java/com/glxp/api/entity/basic/UdiRlSupEntity.java b/src/main/java/com/glxp/api/entity/basic/UdiRlSupEntity.java index 9ab260742..74874e17b 100644 --- a/src/main/java/com/glxp/api/entity/basic/UdiRlSupEntity.java +++ b/src/main/java/com/glxp/api/entity/basic/UdiRlSupEntity.java @@ -1,11 +1,13 @@ package com.glxp.api.entity.basic; -import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; import java.math.BigDecimal; import java.util.Date; +/** + * 供应商关联耗材字典表 + */ @Data public class UdiRlSupEntity { diff --git a/src/main/java/com/glxp/api/entity/inout/IoOrderDetailBizEntity.java b/src/main/java/com/glxp/api/entity/inout/IoOrderDetailBizEntity.java index 7c374a764..ce14a94b5 100644 --- a/src/main/java/com/glxp/api/entity/inout/IoOrderDetailBizEntity.java +++ b/src/main/java/com/glxp/api/entity/inout/IoOrderDetailBizEntity.java @@ -4,8 +4,10 @@ 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 java.io.Serializable; import java.math.BigDecimal; + import lombok.Data; @Data @@ -24,7 +26,7 @@ public class IoOrderDetailBizEntity implements Serializable { * 耗材字典ID外键 */ @TableField(value = "bindRlFk") - private String bindRlFk; + private Long bindRlFk; /** * DI信息UUID外键 @@ -182,5 +184,9 @@ public class IoOrderDetailBizEntity implements Serializable { @TableField(value = "remark5") private String remark5; + + @TableField(exist = false) + private boolean checkSuccess; + private static final long serialVersionUID = 1L; } \ No newline at end of file diff --git a/src/main/java/com/glxp/api/entity/inout/IoOrderDetailCodeEntity.java b/src/main/java/com/glxp/api/entity/inout/IoOrderDetailCodeEntity.java index cedaaf208..f6a229669 100644 --- a/src/main/java/com/glxp/api/entity/inout/IoOrderDetailCodeEntity.java +++ b/src/main/java/com/glxp/api/entity/inout/IoOrderDetailCodeEntity.java @@ -184,5 +184,8 @@ public class IoOrderDetailCodeEntity implements Serializable { @TableField(value = "remark5") private String remark5; + @TableField(exist = false) + private boolean checkSuccess; + private static final long serialVersionUID = 1L; } \ No newline at end of file diff --git a/src/main/java/com/glxp/api/entity/inout/IoOrderEntity.java b/src/main/java/com/glxp/api/entity/inout/IoOrderEntity.java index 8e3a2c2e1..ef435ecc6 100644 --- a/src/main/java/com/glxp/api/entity/inout/IoOrderEntity.java +++ b/src/main/java/com/glxp/api/entity/inout/IoOrderEntity.java @@ -178,5 +178,8 @@ public class IoOrderEntity implements Serializable { @TableField(value = "remark") private String remark; + @TableField(value = "errMsg") + private String errMsg; + private static final long serialVersionUID = 1L; } \ No newline at end of file diff --git a/src/main/java/com/glxp/api/entity/inv/InvPreinDetailEntity.java b/src/main/java/com/glxp/api/entity/inv/InvPreinDetailEntity.java new file mode 100644 index 000000000..0edfa446a --- /dev/null +++ b/src/main/java/com/glxp/api/entity/inv/InvPreinDetailEntity.java @@ -0,0 +1,79 @@ +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 java.io.Serializable; + +import lombok.Data; + +@Data +@TableName(value = "inv_prein_detail") +public class InvPreinDetailEntity implements Serializable { + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + /** + * 条码 + */ + @TableField(value = "code") + private String code; + + /** + * 单据号外键 + */ + @TableField(value = "orderId") + private String orderId; + + /** + * 最小销售表示 + */ + @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 = "relId") + private Integer relId; + + /** + * 扫码数量 + */ + @TableField(value = "`count`") + private Integer count; + + /** + * 实际数量 + */ + @TableField(value = "reCount") + private Integer reCount; + + private static final long serialVersionUID = 1L; +} \ No newline at end of file diff --git a/src/main/java/com/glxp/api/entity/inv/InvPreinOrderEntity.java b/src/main/java/com/glxp/api/entity/inv/InvPreinOrderEntity.java new file mode 100644 index 000000000..56213152e --- /dev/null +++ b/src/main/java/com/glxp/api/entity/inv/InvPreinOrderEntity.java @@ -0,0 +1,96 @@ +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 java.io.Serializable; +import java.util.Date; +import lombok.Data; + +@Data +@TableName(value = "inv_prein_order") +public class InvPreinOrderEntity implements Serializable { + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + /** + * 单据号 + */ + @TableField(value = "billNo") + private String billNo; + + /** + * 单据类型 + */ + @TableField(value = "`action`") + private String action; + + /** + * 往来单位 + */ + @TableField(value = "fromCorp") + private String fromCorp; + + /** + * 来源 + */ + @TableField(value = "fromType") + private String fromType; + + /** + * 创建人 + */ + @TableField(value = "`createUser`") + private String createUser; + + /** + * 创建时间 + */ + @TableField(value = "createTime") + private Date createTime; + + /** + * 更新人 + */ + @TableField(value = "updateUser") + private String updateUser; + + /** + * 更新时间 + */ + @TableField(value = "updateTime") + private Date updateTime; + + /** + * 验收人 + */ + @TableField(value = "reviewUser") + private String reviewUser; + + /** + * 验收时间 + */ + @TableField(value = "auditTime") + private Date auditTime; + + /** + * 客户ID + */ + @TableField(value = "customerId") + private Integer customerId; + + /** + * 当前仓库 + */ + @TableField(value = "invCode") + private String invCode; + + /** + * 备注 + */ + @TableField(value = "remark") + private String remark; + + private static final long serialVersionUID = 1L; +} \ No newline at end of file diff --git a/src/main/java/com/glxp/api/entity/inv/InvProductDetailEntity.java b/src/main/java/com/glxp/api/entity/inv/InvProductDetailEntity.java new file mode 100644 index 000000000..34699c1e8 --- /dev/null +++ b/src/main/java/com/glxp/api/entity/inv/InvProductDetailEntity.java @@ -0,0 +1,120 @@ +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 java.io.Serializable; +import java.util.Date; +import lombok.Data; + +@Data +@TableName(value = "inv_product_detail") +public class InvProductDetailEntity implements Serializable { + @TableId(value = "id", type = IdType.INPUT) + private Integer id; + + /** + * UDI码 + */ + @TableField(value = "code") + private String code; + + /** + * 订单号外键 + */ + @TableField(value = "orderId") + private String orderId; + + /** + * 耗材字典ID + */ + @TableField(value = "relId") + private String relId; + + /** + * 最小销售标识 + */ + @TableField(value = "nameCode") + private String nameCode; + + /** + * 批次号 + */ + @TableField(value = "batchNo") + private String batchNo; + + /** + * 生产日期 + */ + @TableField(value = "produceDate") + private Date produceDate; + + /** + * 失效日期 + */ + @TableField(value = "expireDate") + private Date expireDate; + + /** + * 序列号 + */ + @TableField(value = "serialNo") + private String serialNo; + + /** + * 供应商 + */ + @TableField(value = "supId") + private Integer supId; + + /** + * 扫码数量 + */ + @TableField(value = "`count`") + private Integer count; + + /** + * 实际数量 + */ + @TableField(value = "reCount") + private String reCount; + + /** + * 部门编码 + */ + @TableField(value = "deptCode") + private String deptCode; + + /** + * 仓库编码 + */ + @TableField(value = "invCode") + private String invCode; + + /** + * 货位编码 + */ + @TableField(value = "invSpaceCode") + private String invSpaceCode; + + /** + * 原始编码 + */ + @TableField(value = "originCode") + private String originCode; + + /** + * 采购类型 + */ + @TableField(value = "purchaseType") + private String purchaseType; + + /** + * 更新时间 + */ + @TableField(value = "updateTime") + private Date updateTime; + + private static final long serialVersionUID = 1L; +} \ 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 new file mode 100644 index 000000000..dbd084dcc --- /dev/null +++ b/src/main/java/com/glxp/api/entity/inv/InvProductEntity.java @@ -0,0 +1,96 @@ +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 java.io.Serializable; +import java.util.Date; +import lombok.Data; + +@Data +@TableName(value = "inv_product") +public class InvProductEntity implements Serializable { + @TableId(value = "id", type = IdType.INPUT) + private Integer id; + + /** + * 耗材字典ID + */ + @TableField(value = "relIdFk") + private String relIdFk; + + /** + * 最小销售标识 + */ + @TableField(value = "nameCode") + private String nameCode; + + /** + * 批次号 + */ + @TableField(value = "batchNo") + private String batchNo; + + /** + * 生产日期 + */ + @TableField(value = "productionDate") + private Date productionDate; + + /** + * 失效日期 + */ + @TableField(value = "expireDate") + private Date expireDate; + + /** + * 入库数量 + */ + @TableField(value = "inCount") + private String inCount; + + /** + * 出库数量 + */ + @TableField(value = "outCount") + private String outCount; + + /** + * 实际数量 + */ + @TableField(value = "reCount") + private String reCount; + + /** + * 客户ID + */ + @TableField(value = "customerId") + private Integer customerId; + + /** + * 供应商ID + */ + @TableField(value = "supId") + private Integer supId; + + /** + * 部门编码 + */ + @TableField(value = "deptCode") + private String deptCode; + + /** + * 仓库编码 + */ + @TableField(value = "invCode") + private String invCode; + + /** + * 更新时间 + */ + @TableField(value = "updateTime") + private Date updateTime; + + private static final long serialVersionUID = 1L; +} \ No newline at end of file diff --git a/src/main/java/com/glxp/api/req/inout/AddBizProductReqeust.java b/src/main/java/com/glxp/api/req/inout/AddBizProductReqeust.java new file mode 100644 index 000000000..0daf33ca5 --- /dev/null +++ b/src/main/java/com/glxp/api/req/inout/AddBizProductReqeust.java @@ -0,0 +1,13 @@ +package com.glxp.api.req.inout; + +import com.glxp.api.entity.inout.IoOrderEntity; +import lombok.Data; + +@Data +public class AddBizProductReqeust { + + private IoOrderEntity orderEntity; + private Long relId; + private String zczbhhzbapzbh; + +} diff --git a/src/main/java/com/glxp/api/req/inout/AddOrderRequest.java b/src/main/java/com/glxp/api/req/inout/AddOrderRequest.java index fc48ee2cb..884674bee 100644 --- a/src/main/java/com/glxp/api/req/inout/AddOrderRequest.java +++ b/src/main/java/com/glxp/api/req/inout/AddOrderRequest.java @@ -13,7 +13,7 @@ public class AddOrderRequest { private String billType; private String deptCode; private String invCode; - private String orderId; + private String billNo; private Long customerId; private boolean outChangeEnable; private boolean ignoreExpire; diff --git a/src/main/java/com/glxp/api/req/inout/FilterOrderBizRequest.java b/src/main/java/com/glxp/api/req/inout/FilterOrderBizRequest.java new file mode 100644 index 000000000..9e720b0f1 --- /dev/null +++ b/src/main/java/com/glxp/api/req/inout/FilterOrderBizRequest.java @@ -0,0 +1,10 @@ +package com.glxp.api.req.inout; + +import lombok.Data; + +@Data +public class FilterOrderBizRequest { + + private Long relId; + private String batchNo; +} diff --git a/src/main/java/com/glxp/api/service/auth/DeptService.java b/src/main/java/com/glxp/api/service/auth/DeptService.java index 1a5afb9d1..27c76f3f5 100644 --- a/src/main/java/com/glxp/api/service/auth/DeptService.java +++ b/src/main/java/com/glxp/api/service/auth/DeptService.java @@ -3,7 +3,9 @@ package com.glxp.api.service.auth; import com.glxp.api.entity.auth.DeptEntity; import com.glxp.api.req.auth.FilterInvWarehouseRequest; +import org.apache.ibatis.annotations.Param; +import java.util.Date; import java.util.List; public interface DeptService { @@ -67,4 +69,6 @@ public interface DeptService { */ DeptEntity selectByCodeAll(String code); + boolean updateTime(String code, Date updateTime); + } diff --git a/src/main/java/com/glxp/api/service/auth/impl/DeptServiceImpl.java b/src/main/java/com/glxp/api/service/auth/impl/DeptServiceImpl.java index 4938d237a..21bb2c41a 100644 --- a/src/main/java/com/glxp/api/service/auth/impl/DeptServiceImpl.java +++ b/src/main/java/com/glxp/api/service/auth/impl/DeptServiceImpl.java @@ -11,6 +11,7 @@ import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.Collections; +import java.util.Date; import java.util.List; @Service @@ -154,4 +155,9 @@ public class DeptServiceImpl implements DeptService { public DeptEntity selectByCodeAll(String code) { return deptDao.selectByCodeAll(code); } + + @Override + public boolean updateTime(String code, Date updateTime) { + return deptDao.updateTime(code, updateTime); + } } diff --git a/src/main/java/com/glxp/api/service/inout/IoTransInoutService.java b/src/main/java/com/glxp/api/service/inout/IoAddInoutService.java similarity index 97% rename from src/main/java/com/glxp/api/service/inout/IoTransInoutService.java rename to src/main/java/com/glxp/api/service/inout/IoAddInoutService.java index 28296d7f2..1372c75e1 100644 --- a/src/main/java/com/glxp/api/service/inout/IoTransInoutService.java +++ b/src/main/java/com/glxp/api/service/inout/IoAddInoutService.java @@ -5,13 +5,11 @@ import cn.hutool.core.util.StrUtil; import com.glxp.api.constant.Constant; import com.glxp.api.constant.ConstantStatus; import com.glxp.api.entity.basic.BasicBussinessTypeEntity; -import com.glxp.api.entity.basic.UdiEntity; import com.glxp.api.entity.basic.UdiRlSupEntity; import com.glxp.api.entity.inout.IoCodeEnttity; import com.glxp.api.entity.inout.IoCodeTempEntity; import com.glxp.api.entity.inout.IoOrderDetailCodeEntity; import com.glxp.api.entity.inout.IoOrderEntity; -import com.glxp.api.req.basic.CompanyProductRelevanceRequest; import com.glxp.api.req.basic.FilterCompanyProductRelevanceRequest; import com.glxp.api.req.inout.PdaCodeEntity; import com.glxp.api.req.inout.PostOrderRequest; @@ -19,22 +17,18 @@ import com.glxp.api.res.basic.UdiRelevanceResponse; 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.util.CustomUtil; import com.glxp.api.util.DateUtil; import com.glxp.api.util.GennerOrderUtils; import com.glxp.api.util.OrderNoTypeBean; -import com.glxp.api.util.udi.FilterUdiUtils; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; -import java.math.BigDecimal; import java.util.ArrayList; -import java.util.Date; import java.util.List; @Service -public class IoTransInoutService { +public class IoAddInoutService { @Resource private IBasicBussinessTypeService basicBussinessTypeService; @@ -101,6 +95,10 @@ public class IoTransInoutService { } } + + + + //校验条码关联供应商 public String checkExitSup(Long relId) { FilterCompanyProductRelevanceRequest filterCompanyProductRelevanceRequest = new FilterCompanyProductRelevanceRequest(); diff --git a/src/main/java/com/glxp/api/service/inout/IoCheckInoutService.java b/src/main/java/com/glxp/api/service/inout/IoCheckInoutService.java new file mode 100644 index 000000000..b7baa843b --- /dev/null +++ b/src/main/java/com/glxp/api/service/inout/IoCheckInoutService.java @@ -0,0 +1,261 @@ +package com.glxp.api.service.inout; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.StrUtil; +import com.glxp.api.constant.ConstantStatus; +import com.glxp.api.entity.basic.BasicBussinessTypeEntity; +import com.glxp.api.entity.inout.*; +import com.glxp.api.res.basic.UdiRelevanceResponse; +import com.glxp.api.service.basic.IBasicBussinessTypeService; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.Date; +import java.util.List; + +/** + * 校验出入库服务 + */ +@Service +public class IoCheckInoutService { + + @Resource + IoOrderService orderService; + @Resource + IoCodeService codeService; + @Resource + IoCodeTempService codeTempService; + @Resource + IBasicBussinessTypeService basicBussinessTypeService; + @Resource + IoOrderDetailCodeService orderDetailCodeService; + @Resource + IoOrderDetailBizService orderDetailBizService; + @Resource + IoOrderDetailResultService orderDetailResultService; + + public void check(String orderId) { + IoOrderEntity orderEntity = orderService.findByBillNo(orderId); + BasicBussinessTypeEntity bussinessTypeEntity = basicBussinessTypeService.findByAction(orderEntity.getAction()); + if (!bussinessTypeEntity.isCheckEnable()) { + unCheckFinish(orderEntity); + } else { + if (orderEntity.getFromType().intValue() == ConstantStatus.FROM_UDIMS) { + if (!bussinessTypeEntity.isCheckUdims()) { + unCheckFinish(orderEntity); + return; + } + } else if (orderEntity.getFromType().intValue() == ConstantStatus.FROM_WEBNEW) { + if (!bussinessTypeEntity.isCheckWebNew()) { + unCheckFinish(orderEntity); + return; + } + } else if (orderEntity.getFromType().intValue() == ConstantStatus.FROM_PDAED) { + if (!bussinessTypeEntity.isCheckPdaEd()) { + unCheckFinish(orderEntity); + return; + } + } else if (orderEntity.getFromType().intValue() == ConstantStatus.FROM_PDAUN) { + if (!bussinessTypeEntity.isCheckPdaUn()) { + unCheckFinish(orderEntity); + return; + } + } else if (orderEntity.getFromType().intValue() == ConstantStatus.FROM_PC) { + if (!bussinessTypeEntity.isCheckPc()) { + unCheckFinish(orderEntity); + return; + } + } else if (orderEntity.getFromType().intValue() == ConstantStatus.FROM_CHANGE) { + if (!bussinessTypeEntity.isCheckChange()) { + unCheckFinish(orderEntity); + return; + } + } else if (orderEntity.getFromType().intValue() == ConstantStatus.FROM_PEACE_CHANGE) { + if (!bussinessTypeEntity.isCheckBalance()) { + unCheckFinish(orderEntity); + return; + } + } else if (orderEntity.getFromType().intValue() == ConstantStatus.FROM_UDISP) { + if (!bussinessTypeEntity.isCheckSp()) { + unCheckFinish(orderEntity); + return; + } + } else if (orderEntity.getFromType().intValue() == ConstantStatus.FROM_COPY) { + if (!bussinessTypeEntity.isCheckCopy()) { + unCheckFinish(orderEntity); + return; + } + } + checkFinish(orderEntity); + } + } + + public void unCheckFinish(IoOrderEntity orderEntity) { + + List orderDetailCodeEntities = orderDetailCodeService.findByOrderId(orderEntity.getBillNo()); + + if (CollUtil.isEmpty(orderDetailCodeEntities)) { + orderEntity.setStatus(ConstantStatus.ORDER_STATUS_FAIL); + orderEntity.setUpdateTime(new Date()); + orderEntity.setErrMsg("校验失败,扫码详情为空!"); + orderService.update(orderEntity); + return; + } + orderDetailCodeEntities.forEach(orderDetailCodeEntity -> + { + //生成业务单据 + IoOrderDetailBizEntity orderDetailBizEntity = new IoOrderDetailBizEntity(); + BeanUtils.copyProperties(orderDetailCodeEntity, orderDetailBizEntity); + orderDetailBizService.insert(orderDetailBizEntity); + + + //生成单据结果 + IoOrderDetailResultEntity orderDetailResultEntity = new IoOrderDetailResultEntity(); + BeanUtils.copyProperties(orderDetailCodeEntity, orderDetailResultEntity); + orderDetailResultService.insert(orderDetailResultEntity); + + }); + + orderEntity.setStatus(ConstantStatus.ORDER_STATUS_RECEIVEED); + orderEntity.setUpdateTime(new Date()); + orderService.update(orderEntity); + } + + public void checkFinish(IoOrderEntity orderEntity) { + List orderDetailCodeEntities = orderDetailCodeService.findByOrderId(orderEntity.getBillNo()); + List orderDetailBizEntities = orderDetailBizService.findByOrderId(orderEntity.getBillNo()); + + if (CollUtil.isEmpty(orderDetailCodeEntities)) { + orderEntity.setStatus(ConstantStatus.ORDER_STATUS_FAIL); + orderEntity.setUpdateTime(new Date()); + orderEntity.setErrMsg("校验失败,扫码详情为空!"); + orderService.update(orderEntity); + return; + } + + if (CollUtil.isEmpty(orderDetailBizEntities)) { + orderEntity.setStatus(ConstantStatus.ORDER_STATUS_FAIL); + orderEntity.setUpdateTime(new Date()); + orderEntity.setErrMsg("校验失败,业务详情为空!"); + orderService.update(orderEntity); + return; + } + String errMsg = ""; + //正向校验 + for (IoOrderDetailBizEntity bizEntity : orderDetailBizEntities) { + for (IoOrderDetailCodeEntity codeEntity : orderDetailCodeEntities) { + if (!bizEntity.isCheckSuccess() && !codeEntity.isCheckSuccess() && checkId(bizEntity, codeEntity) == null + && checkBatchNo(bizEntity, codeEntity) == null + && checkProductDate(bizEntity, codeEntity) == null + && checkExpireDate(bizEntity, codeEntity) == null + ) { + + if (checkCount(bizEntity, codeEntity) == null) { + bizEntity.setCheckSuccess(true); + codeEntity.setCheckSuccess(true); + } + break; + } + } + } + + for (IoOrderDetailBizEntity bizEntity : orderDetailBizEntities) { + if (!bizEntity.isCheckSuccess()) { + errMsg = errMsg + bizEntity.getCoName() + ";"; + } + } + + //反向校验 + for (IoOrderDetailCodeEntity codeEntity : orderDetailCodeEntities) { + for (IoOrderDetailBizEntity bizEntity : orderDetailBizEntities) { + if (!bizEntity.isCheckSuccess() && !codeEntity.isCheckSuccess() && checkId(bizEntity, codeEntity) == null + && checkBatchNo(bizEntity, codeEntity) == null + && checkProductDate(bizEntity, codeEntity) == null + && checkExpireDate(bizEntity, codeEntity) == null + ) { + + if (checkCount(bizEntity, codeEntity) == null) { + bizEntity.setCheckSuccess(true); + codeEntity.setCheckSuccess(true); + } + break; + } + } + } + + for (IoOrderDetailCodeEntity codeEntity : orderDetailCodeEntities) { + if (!codeEntity.isCheckSuccess()) { + errMsg = errMsg + codeEntity.getCoName() + ";"; + } + } + + if (StrUtil.isEmpty(errMsg)) { + orderEntity.setErrMsg(errMsg + "校验失败"); + orderEntity.setStatus(ConstantStatus.ORDER_STATUS_FAIL); + orderEntity.setUpdateTime(new Date()); + orderService.update(orderEntity); + } else { + //生成单据结果 + for (IoOrderDetailBizEntity orderDetailBizEntity : orderDetailBizEntities) { + IoOrderDetailResultEntity orderDetailResultEntity = new IoOrderDetailResultEntity(); + BeanUtils.copyProperties(orderDetailBizEntity, orderDetailResultEntity); + orderDetailResultService.insert(orderDetailResultEntity); + } + + //临时表转正式表 + List codeTempEntities = codeTempService.findByOrderId(orderEntity.getBillNo()); + for (IoCodeTempEntity codeTempEntity : codeTempEntities) { + IoCodeEnttity codeEnttity = new IoCodeEnttity(); + BeanUtils.copyProperties(codeTempEntity, codeEnttity); + codeService.insert(codeEnttity); + } + codeTempService.deleteByBillNo(orderEntity.getBillNo()); + orderEntity.setErrMsg("校验成功!"); + orderEntity.setStatus(ConstantStatus.ORDER_STATUS_SUCCESS); + orderEntity.setUpdateTime(new Date()); + orderService.update(orderEntity); + } + } + + public String checkId(IoOrderDetailBizEntity bizEntity, IoOrderDetailCodeEntity codeEntity) { + + if (bizEntity.getBindRlFk() == codeEntity.getBindRlFk()) { + return null; + } else { + return "产品ID不匹配"; + } + } + + public String checkBatchNo(IoOrderDetailBizEntity bizEntity, IoOrderDetailCodeEntity codeEntity) { + + if (StrUtil.nullToEmpty(bizEntity.getBatchNo()).equals(StrUtil.nullToEmpty(codeEntity.getBatchNo()))) { + return null; + } else { + return bizEntity.getCoName() + "批次号不匹配"; + } + } + + public String checkProductDate(IoOrderDetailBizEntity bizEntity, IoOrderDetailCodeEntity codeEntity) { + if (StrUtil.nullToEmpty(bizEntity.getBatchNo()).equals(StrUtil.nullToEmpty(codeEntity.getBatchNo()))) { + return null; + } else { + return bizEntity.getCoName() + "批次号不匹配"; + } + } + + public String checkExpireDate(IoOrderDetailBizEntity bizEntity, IoOrderDetailCodeEntity codeEntity) { + if (StrUtil.nullToEmpty(bizEntity.getBatchNo()).equals(StrUtil.nullToEmpty(codeEntity.getBatchNo()))) { + return null; + } else { + return bizEntity.getCoName() + "批次号不匹配"; + } + } + + public String checkCount(IoOrderDetailBizEntity bizEntity, IoOrderDetailCodeEntity codeEntity) { + if (bizEntity.getReCount() == codeEntity.getReCount()) { + return null; + } + return bizEntity.getCoName() + "数量不匹配!"; + } +} diff --git a/src/main/java/com/glxp/api/service/inout/IoCodeService.java b/src/main/java/com/glxp/api/service/inout/IoCodeService.java index 0a6ee3827..621572422 100644 --- a/src/main/java/com/glxp/api/service/inout/IoCodeService.java +++ b/src/main/java/com/glxp/api/service/inout/IoCodeService.java @@ -1,6 +1,7 @@ package com.glxp.api.service.inout; import com.glxp.api.entity.inout.IoCodeEnttity; +import com.glxp.api.req.inout.FilterIoCodeRequest; import java.util.List; @@ -16,5 +17,6 @@ public interface IoCodeService { public IoCodeEnttity findByUnique(String orderId, String code); + List filterCodeList(FilterIoCodeRequest filterIoCodeRequest); } diff --git a/src/main/java/com/glxp/api/service/inout/IoCodeTempService.java b/src/main/java/com/glxp/api/service/inout/IoCodeTempService.java index 2a36b9d0d..c0821493f 100644 --- a/src/main/java/com/glxp/api/service/inout/IoCodeTempService.java +++ b/src/main/java/com/glxp/api/service/inout/IoCodeTempService.java @@ -1,24 +1,30 @@ package com.glxp.api.service.inout; -import com.glxp.api.entity.inout.IoCodeTempEntity; import com.glxp.api.entity.inout.IoCodeTempEntity; import com.glxp.api.req.inout.FilterIoCodeRequest; -import com.glxp.api.util.page.PageQuery; import com.glxp.api.util.page.TableDataInfo; import java.util.List; public interface IoCodeTempService { + + IoCodeTempEntity selectById(Integer id); + int insert(IoCodeTempEntity codeEnttity); + int deleteById(Integer id); + boolean insertBatch(List codeEnttities); int updateById(IoCodeTempEntity codeEnttity); - public IoCodeTempEntity findByUnique(String orderId, String code); + IoCodeTempEntity findByUnique(String orderId, String code); List findByOrderId(String billNo); TableDataInfo findByOrderId(FilterIoCodeRequest filterIoCodeRequest); + + + int deleteByBillNo(String orderId); } diff --git a/src/main/java/com/glxp/api/service/inout/IoGenInvService.java b/src/main/java/com/glxp/api/service/inout/IoGenInvService.java new file mode 100644 index 000000000..85cfa704d --- /dev/null +++ b/src/main/java/com/glxp/api/service/inout/IoGenInvService.java @@ -0,0 +1,10 @@ +package com.glxp.api.service.inout; + +import org.springframework.stereotype.Service; + + +@Service +public class IoGenInvService { + + +} 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 4c7634fdd..b0a633950 100644 --- a/src/main/java/com/glxp/api/service/inout/IoOrderDetailBizService.java +++ b/src/main/java/com/glxp/api/service/inout/IoOrderDetailBizService.java @@ -11,4 +11,8 @@ public interface IoOrderDetailBizService { int insert(IoOrderDetailBizEntity orderDetailBizEntity); int update(IoOrderDetailBizEntity orderDetailBizEntity); + + int deleteById(Integer id); + + boolean isExit(Long relId, String bacthNo,Integer ignoreId); } diff --git a/src/main/java/com/glxp/api/service/inout/IoOrderDetailCodeService.java b/src/main/java/com/glxp/api/service/inout/IoOrderDetailCodeService.java index 38bea2226..643d0dda8 100644 --- a/src/main/java/com/glxp/api/service/inout/IoOrderDetailCodeService.java +++ b/src/main/java/com/glxp/api/service/inout/IoOrderDetailCodeService.java @@ -12,4 +12,6 @@ public interface IoOrderDetailCodeService { int update(IoOrderDetailCodeEntity orderDetailCodeEntity); + int deleteById(Integer id); + } diff --git a/src/main/java/com/glxp/api/service/inout/IoOrderService.java b/src/main/java/com/glxp/api/service/inout/IoOrderService.java index 0dce7c0be..21a0a059d 100644 --- a/src/main/java/com/glxp/api/service/inout/IoOrderService.java +++ b/src/main/java/com/glxp/api/service/inout/IoOrderService.java @@ -7,11 +7,15 @@ import java.util.List; public interface IoOrderService { - List selectAll(); + List selectAll(); IoOrderEntity findById(String orderId); IoOrderEntity findByBillNo(String billNO); int insertOrder(IoOrderEntity orderEntity); + + int insertOrUpdate(IoOrderEntity orderEntity); + + int update(IoOrderEntity orderEntity); } diff --git a/src/main/java/com/glxp/api/service/inout/impl/IoCodeServiceImpl.java b/src/main/java/com/glxp/api/service/inout/impl/IoCodeServiceImpl.java index e7695602f..4cf8dfbb3 100644 --- a/src/main/java/com/glxp/api/service/inout/impl/IoCodeServiceImpl.java +++ b/src/main/java/com/glxp/api/service/inout/impl/IoCodeServiceImpl.java @@ -1,13 +1,15 @@ package com.glxp.api.service.inout.impl; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.github.pagehelper.PageHelper; import com.glxp.api.dao.inout.IoCodeDao; import com.glxp.api.entity.inout.IoCodeEnttity; +import com.glxp.api.req.inout.FilterIoCodeRequest; import com.glxp.api.service.inout.IoCodeService; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.util.Collections; import java.util.List; @Service @@ -41,5 +43,16 @@ public class IoCodeServiceImpl implements IoCodeService { return ioCodeDao.selectOne(new QueryWrapper().eq("orderId", orderId).eq("code", code)); } + @Override + public List filterCodeList(FilterIoCodeRequest filterIoCodeRequest) { + if (null == filterIoCodeRequest) { + return Collections.emptyList(); + } + if (null != filterIoCodeRequest.getPage() && null != filterIoCodeRequest.getLimit()) { + PageHelper.offsetPage((filterIoCodeRequest.getPage() - 1) * filterIoCodeRequest.getLimit(), filterIoCodeRequest.getLimit()); + } + return ioCodeDao.filterCodeList(filterIoCodeRequest); + } + } diff --git a/src/main/java/com/glxp/api/service/inout/impl/IoCodeTempServiceImpl.java b/src/main/java/com/glxp/api/service/inout/impl/IoCodeTempServiceImpl.java index d138023fd..8cdc64e6c 100644 --- a/src/main/java/com/glxp/api/service/inout/impl/IoCodeTempServiceImpl.java +++ b/src/main/java/com/glxp/api/service/inout/impl/IoCodeTempServiceImpl.java @@ -1,10 +1,7 @@ package com.glxp.api.service.inout.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.glxp.api.dao.inout.IoCodeDao; import com.glxp.api.dao.inout.IoCodeTempDao; -import com.glxp.api.entity.auth.SysDictData; -import com.glxp.api.entity.inout.IoCodeTempEntity; import com.glxp.api.entity.inout.IoCodeTempEntity; import com.glxp.api.req.inout.FilterIoCodeRequest; import com.glxp.api.service.inout.IoCodeTempService; @@ -24,11 +21,21 @@ public class IoCodeTempServiceImpl implements IoCodeTempService { @Resource IoCodeTempDao ioCodeTempDao; + @Override + public IoCodeTempEntity selectById(Integer id) { + return ioCodeTempDao.selectById(id); + } + @Override public int insert(IoCodeTempEntity codeEnttity) { return ioCodeTempDao.insert(codeEnttity); } + @Override + public int deleteById(Integer id) { + return ioCodeTempDao.deleteById(id); + } + @Override public boolean insertBatch(List codeEnttities) { return ioCodeTempDao.insertBatch(codeEnttities); @@ -57,4 +64,9 @@ public class IoCodeTempServiceImpl implements IoCodeTempService { return TableDataInfo.build(page); } + @Override + public int deleteByBillNo(String orderId) { + return ioCodeTempDao.delete(new QueryWrapper().eq("orderId", orderId)); + } + } 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 0180e0abb..275a6a4a7 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 @@ -30,5 +30,16 @@ public class IoOrderDetailBizServiceImpl implements IoOrderDetailBizService { return ioOrderDetailBizDao.updateById(orderDetailBizEntity); } + @Override + public int deleteById(Integer id) { + return ioOrderDetailBizDao.deleteById(id); + } + + + @Override + public boolean isExit(Long relId, String bacthNo, Integer ignoreId) { + return ioOrderDetailBizDao.exists(new QueryWrapper().eq("bindRlFk", relId).eq("batchNo", bacthNo).ne("id", ignoreId)); + } + } diff --git a/src/main/java/com/glxp/api/service/inout/impl/IoOrderDetailCodeServiceImpl.java b/src/main/java/com/glxp/api/service/inout/impl/IoOrderDetailCodeServiceImpl.java index 7f20e4c64..f509ebff8 100644 --- a/src/main/java/com/glxp/api/service/inout/impl/IoOrderDetailCodeServiceImpl.java +++ b/src/main/java/com/glxp/api/service/inout/impl/IoOrderDetailCodeServiceImpl.java @@ -30,4 +30,9 @@ public class IoOrderDetailCodeServiceImpl implements IoOrderDetailCodeService { public int update(IoOrderDetailCodeEntity orderDetailCodeEntity) { return ioOrderDetailCodeDao.updateById(orderDetailCodeEntity); } + + @Override + public int deleteById(Integer id) { + return ioOrderDetailCodeDao.deleteById(id); + } } diff --git a/src/main/java/com/glxp/api/service/inout/impl/IoOrderServiceImpl.java b/src/main/java/com/glxp/api/service/inout/impl/IoOrderServiceImpl.java index da9a872f0..9423fd817 100644 --- a/src/main/java/com/glxp/api/service/inout/impl/IoOrderServiceImpl.java +++ b/src/main/java/com/glxp/api/service/inout/impl/IoOrderServiceImpl.java @@ -2,6 +2,7 @@ package com.glxp.api.service.inout.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.glxp.api.dao.inout.IoOrderDao; +import com.glxp.api.entity.inout.IoOrderDetailBizEntity; import com.glxp.api.entity.inout.IoOrderEntity; import com.glxp.api.service.inout.IoOrderService; import org.springframework.stereotype.Service; @@ -34,4 +35,20 @@ public class IoOrderServiceImpl implements IoOrderService { public int insertOrder(IoOrderEntity orderEntity) { return orderDao.insert(orderEntity); } + + + @Override + public int insertOrUpdate(IoOrderEntity orderEntity) { + IoOrderEntity temp = orderDao.selectOne(new QueryWrapper().eq("billNo", orderEntity.getBillNo())); + if (temp == null) { + return orderDao.insert(orderEntity); + } else { + return orderDao.updateById(orderEntity); + } + } + + @Override + public int update(IoOrderEntity orderEntity) { + return orderDao.updateById(orderEntity); + } } diff --git a/src/main/java/com/glxp/api/service/inv/InvPreinOrderService.java b/src/main/java/com/glxp/api/service/inv/InvPreinOrderService.java new file mode 100644 index 000000000..57196a302 --- /dev/null +++ b/src/main/java/com/glxp/api/service/inv/InvPreinOrderService.java @@ -0,0 +1,5 @@ +package com.glxp.api.service.inv; + +public interface InvPreinOrderService { + +} diff --git a/src/main/java/com/glxp/api/service/inv/InvProductService.java b/src/main/java/com/glxp/api/service/inv/InvProductService.java new file mode 100644 index 000000000..408f51730 --- /dev/null +++ b/src/main/java/com/glxp/api/service/inv/InvProductService.java @@ -0,0 +1,5 @@ +package com.glxp.api.service.inv; + +public interface InvProductService { + +} diff --git a/src/main/java/com/glxp/api/service/inv/impl/InvPreinOrderServiceImpl.java b/src/main/java/com/glxp/api/service/inv/impl/InvPreinOrderServiceImpl.java new file mode 100644 index 000000000..716b144a3 --- /dev/null +++ b/src/main/java/com/glxp/api/service/inv/impl/InvPreinOrderServiceImpl.java @@ -0,0 +1,8 @@ +package com.glxp.api.service.inv.impl; + +import com.glxp.api.service.inv.InvPreinOrderService; +import org.springframework.stereotype.Service; + +@Service +public class InvPreinOrderServiceImpl implements InvPreinOrderService { +} 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 new file mode 100644 index 000000000..d6200d703 --- /dev/null +++ b/src/main/java/com/glxp/api/service/inv/impl/InvProductServiceImpl.java @@ -0,0 +1,8 @@ +package com.glxp.api.service.inv.impl; + +import com.glxp.api.service.inv.InvProductService; +import org.springframework.stereotype.Service; + +@Service +public class InvProductServiceImpl implements InvProductService { +} diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index 97fee7870..c7e9cd220 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -4,9 +4,9 @@ server: spring: datasource: driver-class-name: com.p6spy.engine.spy.P6SpyDriver - jdbc-url: jdbc:p6spy:mysql://192.168.0.66:3364/udi_wms?allowMultiQueries=true&serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true + jdbc-url: jdbc:p6spy:mysql://127.0.0.1:3306/udi_wms?allowMultiQueries=true&serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true username: root - password: Glxp@6066 + password: 123456 hikari: connection-timeout: 60000 maximum-pool-size: 60 diff --git a/src/main/resources/mybatis/mapper/inout/IoCodeDao.xml b/src/main/resources/mybatis/mapper/inout/IoCodeDao.xml new file mode 100644 index 000000000..6b1ca0123 --- /dev/null +++ b/src/main/resources/mybatis/mapper/inout/IoCodeDao.xml @@ -0,0 +1,8 @@ + + + + + + \ No newline at end of file diff --git a/src/main/resources/mybatis/mapper/thrsys/ThrInvWarehouseDao.xml b/src/main/resources/mybatis/mapper/thrsys/ThrInvWarehouseDao.xml index cb96ee4a2..924e5a476 100644 --- a/src/main/resources/mybatis/mapper/thrsys/ThrInvWarehouseDao.xml +++ b/src/main/resources/mybatis/mapper/thrsys/ThrInvWarehouseDao.xml @@ -2,7 +2,7 @@ -