diff --git a/src/main/java/com/glxp/udi/admin/constant/ConstantStatus.java b/src/main/java/com/glxp/udi/admin/constant/ConstantStatus.java index c6e05bd..aa7814a 100644 --- a/src/main/java/com/glxp/udi/admin/constant/ConstantStatus.java +++ b/src/main/java/com/glxp/udi/admin/constant/ConstantStatus.java @@ -68,4 +68,20 @@ public class ConstantStatus { */ public static final int STACK_RULES_ENABLE = 1; + //建垛数据来源 + /** + * PDA新增 + */ + public static final int STACK_ORDER_FROM_TYPE_PDA = 0; + + /** + * 网页扫码建垛 + */ + public static final int STACK_ORDER_FROM_TYPE_WEB = 0; + + /** + * 导入excel建垛 + */ + public static final int STACK_ORDER_FROM_TYPE_EXCEL = 0; + } diff --git a/src/main/java/com/glxp/udi/admin/controller/basic/StackRulesController.java b/src/main/java/com/glxp/udi/admin/controller/basic/StackRulesController.java index dd454f2..582209b 100644 --- a/src/main/java/com/glxp/udi/admin/controller/basic/StackRulesController.java +++ b/src/main/java/com/glxp/udi/admin/controller/basic/StackRulesController.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.glxp.udi.admin.common.enums.ResultEnum; import com.glxp.udi.admin.common.res.BaseResponse; import com.glxp.udi.admin.common.util.ResultVOUtils; -import com.glxp.udi.admin.constant.ConstantStatus; import com.glxp.udi.admin.entity.basic.StackRulesEntity; import com.glxp.udi.admin.req.basic.FilterStackRulesRequest; import com.glxp.udi.admin.req.inout.DeleteRequest; @@ -58,12 +57,10 @@ public class StackRulesController { if (exists) { return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, "规则重复"); } - if (stackRulesEntity.getStatus().equals(ConstantStatus.STACK_RULES_ENABLE)) { - //判断当前用户是否已存在启用的规则 - Long count = stackRulesService.countEnableRules(stackRulesEntity.getCustomerId()); - if (count > 0) { - return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, "已有启用规则"); - } + //校验规则启用数量 + boolean verifyResult = stackRulesService.verifyStatus(stackRulesEntity); + if (!verifyResult) { + return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, "至少启用一个规则"); } stackRulesService.addStackRules(stackRulesEntity); return ResultVOUtils.success(); @@ -85,12 +82,10 @@ public class StackRulesController { if (exists) { return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, "规则重复"); } - if (stackRulesEntity.getStatus().equals(ConstantStatus.STACK_RULES_ENABLE)) { - //判断当前用户是否已存在启用的规则 - Long count = stackRulesService.countEnableRules(stackRulesEntity.getCustomerId()); - if (count > 0) { - return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, "已有启用规则"); - } + //校验规则启用数量 + boolean verifyResult = stackRulesService.verifyStatus(stackRulesEntity); + if (!verifyResult) { + return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, "至少启用一个规则"); } stackRulesService.updateStackRules(stackRulesEntity); return ResultVOUtils.success(); @@ -107,6 +102,10 @@ public class StackRulesController { if (null == deleteRequest || StrUtil.isBlank(deleteRequest.getId())) { return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL); } + Long count = stackRulesService.countEnableRules(deleteRequest.getCustomerId()); + if (count == 1) { + return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, "至少保留一条规则"); + } stackRulesService.delete(deleteRequest.getId()); return ResultVOUtils.success(); } diff --git a/src/main/java/com/glxp/udi/admin/controller/inout/InvProductsController.java b/src/main/java/com/glxp/udi/admin/controller/inout/InvProductsController.java index d2f0511..4005fcd 100644 --- a/src/main/java/com/glxp/udi/admin/controller/inout/InvProductsController.java +++ b/src/main/java/com/glxp/udi/admin/controller/inout/InvProductsController.java @@ -2,16 +2,18 @@ package com.glxp.udi.admin.controller.inout; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.metadata.IPage; import com.glxp.udi.admin.annotation.AuthRuleAnnotation; +import com.glxp.udi.admin.common.enums.ResultEnum; import com.glxp.udi.admin.common.res.BaseResponse; +import com.glxp.udi.admin.common.util.ResultVOUtils; import com.glxp.udi.admin.constant.ConstantType; import com.glxp.udi.admin.entity.auth.AuthAdmin; import com.glxp.udi.admin.entity.inout.InvProductDetailEntity; import com.glxp.udi.admin.entity.inout.InvProductEntity; import com.glxp.udi.admin.entity.inout.UdiInfoEntity; -import com.glxp.udi.admin.service.inout.InvProductDetailService; -import com.glxp.udi.admin.service.inout.InvProductService; +import com.glxp.udi.admin.entity.udid.UdiEntity; import com.glxp.udi.admin.req.inout.DeleteRequest; import com.glxp.udi.admin.req.inout.FilterInvProductDetailRequest; import com.glxp.udi.admin.req.inout.FilterUdiInfoRequest; @@ -20,12 +22,12 @@ import com.glxp.udi.admin.res.PageSimpleResponse; import com.glxp.udi.admin.res.inventory.InvProductDetailResponse; import com.glxp.udi.admin.res.inventory.InvProductResponse; import com.glxp.udi.admin.service.auth.CustomerService; +import com.glxp.udi.admin.service.inout.InvProductDetailService; +import com.glxp.udi.admin.service.inout.InvProductService; import com.glxp.udi.admin.service.inout.UdiInfoService; import com.glxp.udi.admin.service.inout.WarehouseUserService; import com.glxp.udi.admin.service.inventory.InvWarehouseService; import com.glxp.udi.admin.util.FilterUdiUtils; -import com.glxp.udi.admin.common.enums.ResultEnum; -import com.glxp.udi.admin.common.util.ResultVOUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.GetMapping; @@ -103,7 +105,11 @@ public class InvProductsController { || StringUtils.isNotBlank(filterInvProductRequest.getUdiCode())) { FilterUdiInfoRequest filterUdiInfoRequest = new FilterUdiInfoRequest(); if (StringUtils.isNotBlank(filterInvProductRequest.getUdiCode())) { + UdiEntity udi = FilterUdiUtils.getUdi(filterInvProductRequest.getUdiCode()); filterUdiInfoRequest.setNameCode(FilterUdiUtils.getDiStr(filterInvProductRequest.getUdiCode())); + if (StrUtil.isNotBlank(udi.getBatchNo())) { + filterInvProductRequest.setBatchNo(udi.getBatchNo()); + } } String customerId = String.valueOf(customerService.getCustomerId()); filterUdiInfoRequest.setCustomerId(customerId); @@ -137,6 +143,7 @@ public class InvProductsController { response.setCpmctymc(udiInfoEntity.getCpmctymc()); response.setInvStorageCode(invProductEntity.getLocStorageCode()); response.setInvStorageName(invWarehouseService.findNameByCode(invProductEntity.getLocStorageCode())); + response.setProductionDate(invProductEntity.getProductDate()); invProductResponses.add(response); } diff --git a/src/main/java/com/glxp/udi/admin/controller/inout/OrderController.java b/src/main/java/com/glxp/udi/admin/controller/inout/OrderController.java index 6a56a14..e65620b 100644 --- a/src/main/java/com/glxp/udi/admin/controller/inout/OrderController.java +++ b/src/main/java/com/glxp/udi/admin/controller/inout/OrderController.java @@ -502,7 +502,8 @@ public class OrderController { originOrder.setActDate(cn.hutool.core.date.DateUtil.date().toString(DatePattern.NORM_DATETIME_PATTERN)); originOrder.setFromCorp(addOrderChangeRequest.getFromCorp()); originOrder.setFromCorpId(addOrderChangeRequest.getFromCorpId()); - originOrder.setCorpOrderId(CustomUtil.getId() + "x"); + originOrder.setCorpOrderId(oldOrderId); + originOrder.setFromType("复制单据"); originOrder.setMainAction(addOrderChangeRequest.getMainAction()); originOrder.setAction(addOrderChangeRequest.getAction()); originOrder.setExportStatus("0"); //设置导出状态为未导出 @@ -530,7 +531,7 @@ public class OrderController { if ((StrUtil.isNotBlank(product.getBatchNo()) && StrUtil.isNotBlank(code.getBatchNo()) && product.getBatchNo().equals(code.getBatchNo())) || (StrUtil.isBlank(product.getBatchNo()) && StrUtil.isBlank(code.getBatchNo()))) { WarehousetempEntity supplementCode = new WarehousetempEntity(); - BeanUtil.copyProperties(code, supplementCode); + BeanUtil.copyProperties(code, supplementCode,"id"); supplementCode.setFromCorpId(originOrder.getFromCorpId()); supplementCode.setFromCorp(originOrder.getFromCorp()); supplementCode.setLocStorageCode(originOrder.getLocStorageCode()); @@ -545,7 +546,6 @@ public class OrderController { } ); originOrder.setUpdateTime(new Date()); - originOrder.setOrderId(null); orderService.insertOrder(originOrder); warehouseTempService.insertTempWarehouses(supplementCodes); orderService.updateReplicateNo(oldOrderId, replicateNo); diff --git a/src/main/java/com/glxp/udi/admin/controller/inout/UdiRelevanceController.java b/src/main/java/com/glxp/udi/admin/controller/inout/UdiRelevanceController.java index db3aae8..33592e1 100644 --- a/src/main/java/com/glxp/udi/admin/controller/inout/UdiRelevanceController.java +++ b/src/main/java/com/glxp/udi/admin/controller/inout/UdiRelevanceController.java @@ -64,9 +64,14 @@ public class UdiRelevanceController { filterUdiInfoRequest.setDisable(false); IPage page = udiInfoService.filterUdiInfo(filterUdiInfoRequest); List udiRelevanceResponses = page.getRecords().stream().map(e -> { - UdiRelevanceResponse authAdminRoleResponse = new UdiRelevanceResponse(); - BeanUtils.copyProperties(e, authAdminRoleResponse); - return authAdminRoleResponse; + UdiRelevanceResponse udiRelevanceResponse = new UdiRelevanceResponse(); + BeanUtils.copyProperties(e, udiRelevanceResponse); + + //转换部分字段 + udiRelevanceResponse.setAllowNoBatch(udiRelevanceResponse.getScbssfbhph().equals("是")); + udiRelevanceResponse.setAllowNoProduct(udiRelevanceResponse.getScbssfbhscrq().equals("是")); + udiRelevanceResponse.setAllowNoExpire(udiRelevanceResponse.getScbssfbhsxrq().equals("是")); + return udiRelevanceResponse; }).collect(Collectors.toList()); PageSimpleResponse pageSimpleResponse = new PageSimpleResponse<>(); diff --git a/src/main/java/com/glxp/udi/admin/controller/inout/UnitMaintainController.java b/src/main/java/com/glxp/udi/admin/controller/inout/UnitMaintainController.java index a5ab11a..b96d6fb 100644 --- a/src/main/java/com/glxp/udi/admin/controller/inout/UnitMaintainController.java +++ b/src/main/java/com/glxp/udi/admin/controller/inout/UnitMaintainController.java @@ -97,6 +97,7 @@ public class UnitMaintainController { IPage page = unitMaintainService.filterList(unitMaintainFilterRequest); for (UnitMaintainEntity unitMaintainEntity : page.getRecords()) { unitMaintainEntity.setErpId(unitMaintainEntity.getUnitId()); + unitMaintainEntity.setSpell(unitMaintainEntity.getPinyinCode()); } PageSimpleResponse pageSimpleResponse = new PageSimpleResponse<>(); pageSimpleResponse.setTotal(page.getTotal()); diff --git a/src/main/java/com/glxp/udi/admin/controller/product/StackOrderController.java b/src/main/java/com/glxp/udi/admin/controller/product/StackOrderController.java index ae1b9bf..cc6cfb2 100644 --- a/src/main/java/com/glxp/udi/admin/controller/product/StackOrderController.java +++ b/src/main/java/com/glxp/udi/admin/controller/product/StackOrderController.java @@ -98,7 +98,46 @@ public class StackOrderController { return ResultVOUtils.success(); } + /** + * 网页建垛 + * + * @param stackUploadRequest + * @param bindingResult + * @return + */ + @AuthRuleAnnotation("") + @PostMapping("/udims/stack/order/uploadStackOrder") + public BaseResponse uploadStackOrder(@RequestBody StackUploadRequest stackUploadRequest, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage()); + } + StackOrder stackOrderEntity = stackUploadRequest.getStackOrderEntity(); + if (stackOrderEntity == null) { + return ResultVOUtils.error(500, "上传数据不能为空!"); + } + if (stackOrderService.isExit(stackOrderEntity.getOrderId())) { + return ResultVOUtils.error(500, "垛号已存在,请勿重复提交!"); + } + if (CollUtil.isEmpty(stackUploadRequest.getStackCodeEntityList())) { + return ResultVOUtils.error(500, "提交失败,该垛号未关联条码!"); + } + stackOrderEntity.setCustomerId(customerService.getCustomerId() + ""); + stackOrderEntity.setFromType(ConstantStatus.STACK_ORDER_FROM_TYPE_WEB); + StackOrder stackOrder = stackOrderService.insertOrder(stackOrderEntity); + //绑定垛号 + stackUploadRequest.getStackCodeEntityList().forEach(stackCode -> stackCode.setOrderIdFk(String.valueOf(stackOrder.getId()))); + stackCodeService.batchInsert(stackUploadRequest.getStackCodeEntityList()); + return ResultVOUtils.success(stackOrder.getId()); + } + + /** + * 手持终端建垛 + * + * @param stackUploadRequest + * @param bindingResult + * @return + */ @AuthRuleAnnotation("") @PostMapping("/udims/stack/order/upload") public BaseResponse uploadStack(@RequestBody StackUploadRequest stackUploadRequest, BindingResult bindingResult) { @@ -117,12 +156,12 @@ public class StackOrderController { return ResultVOUtils.error(500, "提交失败,该垛号未关联条码!"); } stackOrderEntity.setCustomerId(customerService.getCustomerId() + ""); - - String orderId = stackOrderService.insertOrder(stackOrderEntity); + stackOrderEntity.setFromType(ConstantStatus.STACK_ORDER_FROM_TYPE_PDA); + StackOrder stackOrder = stackOrderService.insertOrder(stackOrderEntity); //绑定垛号 - stackUploadRequest.getStackCodeEntityList().forEach(stackCode -> stackCode.setOrderIdFk(orderId)); + stackUploadRequest.getStackCodeEntityList().forEach(stackCode -> stackCode.setOrderIdFk(String.valueOf(stackOrder.getId()))); stackCodeService.batchInsert(stackUploadRequest.getStackCodeEntityList()); - return ResultVOUtils.success(orderId); + return ResultVOUtils.success(stackOrderEntity); } /** diff --git a/src/main/java/com/glxp/udi/admin/entity/product/StackOrder.java b/src/main/java/com/glxp/udi/admin/entity/product/StackOrder.java index 52d620a..e27e56f 100644 --- a/src/main/java/com/glxp/udi/admin/entity/product/StackOrder.java +++ b/src/main/java/com/glxp/udi/admin/entity/product/StackOrder.java @@ -81,4 +81,9 @@ public class StackOrder { */ private String nameCode; + /** + * 来源类型:0:手持终端 1:网页新增 2:导入建垛 + */ + private Integer fromType; + } diff --git a/src/main/java/com/glxp/udi/admin/res/basic/UdiRelevanceResponse.java b/src/main/java/com/glxp/udi/admin/res/basic/UdiRelevanceResponse.java index ecf6d2a..facb5a3 100644 --- a/src/main/java/com/glxp/udi/admin/res/basic/UdiRelevanceResponse.java +++ b/src/main/java/com/glxp/udi/admin/res/basic/UdiRelevanceResponse.java @@ -63,6 +63,12 @@ public class UdiRelevanceResponse { private String cpms; private String supName; + //是否包含批号 + private boolean allowNoBatch; + //是否包含失效日期 + private boolean allowNoExpire; + //是否包含生产日期 + private boolean allowNoProduct; public int getBhzxxsbzsl() { if (bhzxxsbzsl == null || bhzxxsbzsl == 0) { diff --git a/src/main/java/com/glxp/udi/admin/service/basic/StackRulesService.java b/src/main/java/com/glxp/udi/admin/service/basic/StackRulesService.java index 44adede..52d203e 100644 --- a/src/main/java/com/glxp/udi/admin/service/basic/StackRulesService.java +++ b/src/main/java/com/glxp/udi/admin/service/basic/StackRulesService.java @@ -4,6 +4,7 @@ import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.glxp.udi.admin.constant.ConstantStatus; import com.glxp.udi.admin.dao.basic.StackRulesDao; import com.glxp.udi.admin.entity.basic.StackRulesEntity; import com.glxp.udi.admin.req.basic.FilterStackRulesRequest; @@ -143,4 +144,33 @@ public class StackRulesService { .eq("customerId", customerId); return stackRulesDao.selectCount(wrapper); } + + /** + * 校验状态 + * + * @param stackRules + * @return true:可以修改 / 添加 false:不可修改 / 添加 + */ + public boolean verifyStatus(StackRulesEntity stackRules) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("status", 1) + .eq("customerId", stackRules.getCustomerId()); + List list = stackRulesDao.selectList(wrapper); + if (stackRules.getStatus().equals(ConstantStatus.STACK_RULES_ENABLE)) { + //当前规则为启用状态,判断此规则是否为当前的规则,且启用规则数量 <= 1 + if (list.size() == 0) { + return true; + } else if (list.size() == 1) { + for (StackRulesEntity stackRulesEntity : list) { + if (stackRulesEntity.getId().equals(stackRules.getId())) { + return true; + } + } + } + return false; + } else { + //当前规则为禁用状态,判断当前是否至少有一个启用的规则 + return list.size() > 1; + } + } } diff --git a/src/main/java/com/glxp/udi/admin/service/product/StackCodeService.java b/src/main/java/com/glxp/udi/admin/service/product/StackCodeService.java index 77deb43..36b3a3a 100644 --- a/src/main/java/com/glxp/udi/admin/service/product/StackCodeService.java +++ b/src/main/java/com/glxp/udi/admin/service/product/StackCodeService.java @@ -6,6 +6,7 @@ import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.glxp.udi.admin.constant.ConstantStatus; import com.glxp.udi.admin.dao.product.StackCodeDao; import com.glxp.udi.admin.dao.product.StackOrderDao; import com.glxp.udi.admin.entity.product.StackCode; @@ -98,6 +99,7 @@ public class StackCodeService { stackOrder.setCreateTime(new Date()); stackOrder.setExportStatus(0); stackOrder.setCustomerId(addStackCodeRequest.getCustomerId()); + stackOrder.setFromType(ConstantStatus.STACK_ORDER_FROM_TYPE_WEB); stackOrderDao.insert(stackOrder); stackCode.setOrderIdFk(String.valueOf(stackOrder.getId())); } else { diff --git a/src/main/java/com/glxp/udi/admin/service/product/StackOrderService.java b/src/main/java/com/glxp/udi/admin/service/product/StackOrderService.java index 960048f..a87d7ed 100644 --- a/src/main/java/com/glxp/udi/admin/service/product/StackOrderService.java +++ b/src/main/java/com/glxp/udi/admin/service/product/StackOrderService.java @@ -10,6 +10,7 @@ import com.alibaba.excel.EasyExcel; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.glxp.udi.admin.constant.ConstantStatus; import com.glxp.udi.admin.dao.product.StackCodeDao; import com.glxp.udi.admin.dao.product.StackOrderDao; import com.glxp.udi.admin.entity.product.StackCode; @@ -73,14 +74,14 @@ public class StackOrderService { return stackOrderDao.exists(new QueryWrapper().eq("orderId", orderId)); } - public String insertOrder(StackOrder stackOrderEntity) { + public StackOrder insertOrder(StackOrder stackOrderEntity) { String stackId = idUtil.getStackId(stackOrderEntity.getCustomerId()); stackOrderEntity.setOrderId(stackId); if (null == stackOrderEntity.getCreateTime()) { stackOrderEntity.setCreateTime(new Date()); } stackOrderDao.insert(stackOrderEntity); - return String.valueOf(stackOrderEntity.getId()); + return stackOrderEntity; } public void deleteById(Integer id) { @@ -180,6 +181,7 @@ public class StackOrderService { stackOrder.setCreateTime(new Date()); stackOrder.setExportStatus(0); stackOrder.setCustomerId(customerId); + stackOrder.setFromType(ConstantStatus.STACK_ORDER_FROM_TYPE_EXCEL); //插入垛数据 stackOrderDao.insert(stackOrder); List data = stacks.get(serialNum);