diff --git a/api-admin/src/main/java/com/glxp/api/admin/controller/basic/BasicThirdSysController.java b/api-admin/src/main/java/com/glxp/api/admin/controller/basic/BasicThirdSysController.java index 9530d3de..8b5d31ce 100644 --- a/api-admin/src/main/java/com/glxp/api/admin/controller/basic/BasicThirdSysController.java +++ b/api-admin/src/main/java/com/glxp/api/admin/controller/basic/BasicThirdSysController.java @@ -119,6 +119,9 @@ public class BasicThirdSysController { if (exists) { return ResultVOUtils.error(500, "第三方系统名称重复"); } + + BasicThirdSysEntity temp = basicThirdSysService.selectByThirdId(basicThirdSysEntity.getThirdId()); + if (!basicThirdSysEntity.getEnabled()) { //如操作为禁用第三方系统,则需要判断是否是最后一个启用的第三方系统,需要保留至少启用一个第三方系统 FilterBasicThirdSysRequest filterBasicThirdSysRequest = new FilterBasicThirdSysRequest(); @@ -129,7 +132,12 @@ public class BasicThirdSysController { } } - BasicThirdSysEntity temp = basicThirdSysService.selectByThirdId(basicThirdSysEntity.getThirdId()); + + if (temp.getMainSys() && !temp.getEnabled()) { + return ResultVOUtils.error(500, "主系统必须启用"); + } + + if (!temp.getMainSys().equals(basicThirdSysEntity.getMainSys())) { if (udiRelevanceService.isExit() || unitMaintainService.isExit()) { return ResultVOUtils.error(999, "产品信息已经关联,无法取消主系统!"); diff --git a/api-admin/src/main/java/com/glxp/api/admin/controller/basic/BussinessOriginTypeController.java b/api-admin/src/main/java/com/glxp/api/admin/controller/basic/BussinessOriginTypeController.java index 68afba28..61384b53 100644 --- a/api-admin/src/main/java/com/glxp/api/admin/controller/basic/BussinessOriginTypeController.java +++ b/api-admin/src/main/java/com/glxp/api/admin/controller/basic/BussinessOriginTypeController.java @@ -113,6 +113,13 @@ public class BussinessOriginTypeController { } if (bussinessTypeEntity != null) { bussinessTypeEntity.setUpdateTime(new Date()); + + + BussinessOriginTypeEntity bussinessOriginTypeEntity = bussinessOriginTypeService.findByAction(bussinessTypeEntity.getAction()); + if (bussinessOriginTypeEntity != null) { + return ResultVOUtils.error(500, "单据类型已存在!"); + } + bussinessOriginTypeService.insertBusOriginType(bussinessTypeEntity); } else { return ResultVOUtils.error(999, "参数错误"); diff --git a/api-admin/src/main/java/com/glxp/api/admin/controller/business/StockOrderController.java b/api-admin/src/main/java/com/glxp/api/admin/controller/business/StockOrderController.java index 9b1fabb1..b7f6d1d1 100644 --- a/api-admin/src/main/java/com/glxp/api/admin/controller/business/StockOrderController.java +++ b/api-admin/src/main/java/com/glxp/api/admin/controller/business/StockOrderController.java @@ -66,10 +66,7 @@ import org.springframework.web.context.request.ServletRequestAttributes; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; -import java.util.ArrayList; -import java.util.Collections; -import java.util.Date; -import java.util.List; +import java.util.*; @RestController public class StockOrderController { @@ -182,6 +179,28 @@ public class StockOrderController { stockOrderEntity.setStatus("202");//已配货 } } + + + if (CollUtil.isNotEmpty(stockOrderPostRequest.getSubErpOrders())) { + boolean verifyResult = stockOrderDetailService.verifyCount(stockOrderPostRequest.getSubErpOrders()); + if (!verifyResult) { + return ResultVOUtils.error(500, "实际数量不能高于订单数量"); + } + List filterList = new ArrayList(); + for (StockOrderDetailEntity stockOrderDetailEntity : stockOrderPostRequest.getSubErpOrders()) { + + filterList.add(StrUtil.trimToEmpty(stockOrderDetailEntity.getRelId()) + StrUtil.trimToEmpty(stockOrderDetailEntity.getBatchNo())); + + } + HashSet set = new HashSet<>(filterList); + Boolean result = set.size() == filterList.size() ? true : false; + if (!result) { + return ResultVOUtils.error(500, "存在相同批次产品,提交失败!"); + } + + } + + if (StringUtils.isBlank(stockOrderEntity.getId())) { BussinessLocalTypeEntity bussinessLocalTypeEntity = bussinessLocalTypeService.findBTByAction(stockOrderEntity.getBillType()); if (StrUtil.isEmpty(stockOrderPostRequest.getBillNo())) { diff --git a/api-admin/src/main/java/com/glxp/api/admin/controller/inout/OrderController.java b/api-admin/src/main/java/com/glxp/api/admin/controller/inout/OrderController.java index 19234647..77be0fc7 100644 --- a/api-admin/src/main/java/com/glxp/api/admin/controller/inout/OrderController.java +++ b/api-admin/src/main/java/com/glxp/api/admin/controller/inout/OrderController.java @@ -75,8 +75,6 @@ public class OrderController { BussinessTypeService bussinessTypeService; @Resource SystemParamConfigService systemParamConfigService; - @Resource - CompanyService companyService; @Value("${file_path}") private String filePath; @Resource @@ -263,8 +261,8 @@ public class OrderController { if (stockOrderEntity == null || stockOrderEntity.getOrderIdFk() == null) { - SystemParamConfigEntity systemParamConfigEntity = systemParamConfigService.selectByParamKey("sps_sync_review_order"); -// if (systemParamConfigEntity.getParamValue().equals("1")) { +// SystemParamConfigEntity systemParamConfigEntity = systemParamConfigService.selectByParamKey("sps_sync_review_order"); + if (bussinessTypeEntity.isEntrutSpms()) { BaseResponse baseResponse = spsDirectClient.downloadOrder(orderFilterRequest.getOrderId(), userId + "", orderFilterRequest.getAction()); return baseResponse; @@ -274,9 +272,7 @@ public class OrderController { return ResultVOUtils.error(500, "非" + bussinessTypeEntity.getName() + "类型单据!"); } else if (stockOrderEntity.getStatus().equals(ConstantStatus.SORDER_CHECKED)) { if (StrUtil.isNotEmpty(stockOrderEntity.getLocStorageCode())) { - InvWarehouseEntity invWarehouseEntity = invWarehouseService.selectByCode(stockOrderEntity.getLocStorageCode()); List warehouseUserEntities = new ArrayList<>(); - List invWarehouseEntities = new ArrayList<>(); if (StrUtil.isNotEmpty(stockOrderEntity.getInvWarehouseCode())) { FilterInvUserRequest filterInvUserRequest = new FilterInvUserRequest(); filterInvUserRequest.setCode(stockOrderEntity.getInvWarehouseCode()); @@ -286,7 +282,6 @@ public class OrderController { FilterInvWarehouseRequest filterInvWarehouseRequest = new FilterInvWarehouseRequest(); filterInvWarehouseRequest.setCode(stockOrderEntity.getLocStorageCode()); filterInvWarehouseRequest.setUserId(userId); - invWarehouseEntities = invWarehouseService.filterAllByUser(filterInvWarehouseRequest); } diff --git a/api-admin/src/main/java/com/glxp/api/admin/controller/inout/UdiTraceController.java b/api-admin/src/main/java/com/glxp/api/admin/controller/inout/UdiTraceController.java index a0e62518..bd8dba34 100644 --- a/api-admin/src/main/java/com/glxp/api/admin/controller/inout/UdiTraceController.java +++ b/api-admin/src/main/java/com/glxp/api/admin/controller/inout/UdiTraceController.java @@ -104,6 +104,11 @@ public class UdiTraceController { udiTraceResponse.setCpmctymc(finalUdiRelevance.getCpmctymc()); udiTraceResponse.setGgxh(finalUdiRelevance.getGgxh()); udiTraceResponse.setOrderId(item.getId()); + InvProductDetailEntity invProductDetailEntity = invProductDetailEntities.get(0); + udiTraceResponse.setBatchNo(invProductDetailEntity.getBatchNo()); + udiTraceResponse.setProduceDate(invProductDetailEntity.getProductionDate()); + udiTraceResponse.setExpireDate(invProductDetailEntity.getExpireDate()); + udiTraceResponse.setCount(invProductDetailEntity.getCount()); } return udiTraceResponse; }).collect(Collectors.toList()); diff --git a/api-admin/src/main/java/com/glxp/api/admin/controller/inout/WareHouseController.java b/api-admin/src/main/java/com/glxp/api/admin/controller/inout/WareHouseController.java index 106ffd1c..baee3c50 100644 --- a/api-admin/src/main/java/com/glxp/api/admin/controller/inout/WareHouseController.java +++ b/api-admin/src/main/java/com/glxp/api/admin/controller/inout/WareHouseController.java @@ -63,10 +63,7 @@ import org.springframework.web.context.request.ServletRequestAttributes; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.validation.Valid; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; @RestController @@ -317,6 +314,31 @@ public class WareHouseController { @AuthRuleAnnotation("") @PostMapping("warehouse/inout/saveTempCode") public BaseResponse saveCode(@RequestBody WarehouseEntity warehouseEntity) { + + + if (StrUtil.isNotEmpty(warehouseEntity.getSerialNo()) && warehouseEntity.getSerialNo().length() > 20) { + return ResultVOUtils.error(500, "无效条码!序列号超出最大范围"); + } + + if (StrUtil.isNotEmpty(warehouseEntity.getBatchNo()) && warehouseEntity.getBatchNo().length() > 20) { + return ResultVOUtils.error(500, "无效条码!批次号超出最大范围"); + } + + if (StrUtil.isEmpty(warehouseEntity.getSerialNo()) && StrUtil.isEmpty(warehouseEntity.getBatchNo())) { + return ResultVOUtils.error(500, "批次号不能为空!"); + } + + + if (StrUtil.isNotEmpty(warehouseEntity.getSerialNo())) { + List warehouseEntityList = codesTempService.findByOrderId(warehouseEntity.getOrderId()); + for (WarehouseEntity object : warehouseEntityList) { + if (object.getId() != warehouseEntity.getId() && object.getCode().equals(warehouseEntity.getCode()) && StrUtil.nullToEmpty(object.getCode()).equals(warehouseEntity.getSerialNo())) { + return ResultVOUtils.error(500, "条码重复!"); + } + } + } + + boolean b = codesTempService.update(warehouseEntity); if (b) return ResultVOUtils.success("修改成功"); @@ -577,6 +599,11 @@ public class WareHouseController { return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage()); } AddCodeResult addCodeResult = new AddCodeResult(); + + if (addOrderRequest.getAction() == null) { + addOrderRequest.setAction(addOrderRequest.getBillType()); + } + BussinessTypeEntity bussinessTypeEntity = bussinessTypeService.findBTByAction(addOrderRequest.getAction()); String code = addOrderRequest.getCode(); if (StringUtils.isBlank(code)) return ResultVOUtils.error(ResultEnum.DATA_ERROR); @@ -893,7 +920,7 @@ public class WareHouseController { if (!StrUtil.emptyIfNull(originUdiEntity.getUdi()).equals(StrUtil.emptyIfNull(udiEntity.getUdi()))) { continue; } - if (!StrUtil.emptyIfNull(originUdiEntity.getBatchNo()).equals(StrUtil.emptyIfNull(udiEntity.getBatchNo()))) { + if (!StrUtil.emptyIfNull(originUdiEntity.getBatchNo()).toUpperCase(Locale.ROOT).equals(StrUtil.emptyIfNull(udiEntity.getBatchNo()).toUpperCase(Locale.ROOT))) { continue; } if (!StrUtil.emptyIfNull(originUdiEntity.getProduceDate()).equals(StrUtil.emptyIfNull(udiEntity.getProduceDate()))) { diff --git a/api-admin/src/main/java/com/glxp/api/admin/dao/basic/BussinessLocalTypeDao.java b/api-admin/src/main/java/com/glxp/api/admin/dao/basic/BussinessLocalTypeDao.java index 31d029f4..861e7546 100644 --- a/api-admin/src/main/java/com/glxp/api/admin/dao/basic/BussinessLocalTypeDao.java +++ b/api-admin/src/main/java/com/glxp/api/admin/dao/basic/BussinessLocalTypeDao.java @@ -44,5 +44,5 @@ public interface BussinessLocalTypeDao { * * @param action */ - boolean selectPreInByOrderType(String action); + Boolean selectPreInByOrderType(String action); } diff --git a/api-admin/src/main/java/com/glxp/api/admin/dao/inventory/InvPreProductDetailDao.java b/api-admin/src/main/java/com/glxp/api/admin/dao/inventory/InvPreProductDetailDao.java index fd1950e5..03df4ae9 100644 --- a/api-admin/src/main/java/com/glxp/api/admin/dao/inventory/InvPreProductDetailDao.java +++ b/api-admin/src/main/java/com/glxp/api/admin/dao/inventory/InvPreProductDetailDao.java @@ -26,4 +26,13 @@ public interface InvPreProductDetailDao { boolean deleteByProductId(FilterInvProductDetailRequest filterInvProductDetailRequest); int statCount(FilterInvProductDetailRequest filterInvProductDetailRequest); + + + /** + * 根据orderId删除预验收库存详情 + * + * @param orderIdFk 扫码单据ID + */ + boolean deleteByOrderId(String orderIdFk); + } diff --git a/api-admin/src/main/java/com/glxp/api/admin/service/business/StockOrderDetailService.java b/api-admin/src/main/java/com/glxp/api/admin/service/business/StockOrderDetailService.java index fabdeb64..9b867998 100644 --- a/api-admin/src/main/java/com/glxp/api/admin/service/business/StockOrderDetailService.java +++ b/api-admin/src/main/java/com/glxp/api/admin/service/business/StockOrderDetailService.java @@ -25,4 +25,7 @@ public interface StockOrderDetailService { StockOrderDetailEntity findOne(@Param("id") String id); + boolean verifyCount(List subErpOrders); + + } diff --git a/api-admin/src/main/java/com/glxp/api/admin/service/business/impl/StockOrderDetailServiceImpl.java b/api-admin/src/main/java/com/glxp/api/admin/service/business/impl/StockOrderDetailServiceImpl.java index 697fa987..7b8a8380 100644 --- a/api-admin/src/main/java/com/glxp/api/admin/service/business/impl/StockOrderDetailServiceImpl.java +++ b/api-admin/src/main/java/com/glxp/api/admin/service/business/impl/StockOrderDetailServiceImpl.java @@ -1,8 +1,11 @@ package com.glxp.api.admin.service.business.impl; +import cn.hutool.core.util.StrUtil; import com.github.pagehelper.PageHelper; import com.glxp.api.admin.dao.business.StockOrderDetailDao; +import com.glxp.api.admin.dao.schedule.SystemParamConfigDao; import com.glxp.api.admin.entity.business.StockOrderDetailEntity; +import com.glxp.api.admin.entity.info.SystemParamConfigEntity; import com.glxp.api.admin.req.business.StockOrderDetailFilterRequest; import com.glxp.api.admin.res.business.StockOrderDetailResponse; import com.glxp.api.admin.service.business.StockOrderDetailService; @@ -17,6 +20,8 @@ public class StockOrderDetailServiceImpl implements StockOrderDetailService { @Resource StockOrderDetailDao stockOrderDetailDao; + @Resource + private SystemParamConfigDao systemParamConfigDao; @Override public List filterStockOrderDetail(StockOrderDetailFilterRequest stockOrderDetailFilterRequest) { @@ -61,6 +66,7 @@ public class StockOrderDetailServiceImpl implements StockOrderDetailService { public boolean deleteById(String id) { return stockOrderDetailDao.deleteById(id); } + @Override public boolean deleteByOrderIdFk(String id) { return stockOrderDetailDao.deleteByOrderIdFk(id); @@ -71,4 +77,22 @@ public class StockOrderDetailServiceImpl implements StockOrderDetailService { return stockOrderDetailDao.findOne(id); } + @Override + public boolean verifyCount(List subErpOrders) { + //查询配置的系统运行参数 + SystemParamConfigEntity config = systemParamConfigDao.selectByParamKey("stock_order_detail_count_max"); + if (null != config) { + //0:允许;1:不允许,允许时不做判断 + if ("1".equals(config.getParamValue())) { + for (StockOrderDetailEntity subErpOrder : subErpOrders) { + if (subErpOrder.getReCount() > subErpOrder.getCount()) { + return false; + } + } + } + return true; + } + return true; + } + } diff --git a/api-admin/src/main/java/com/glxp/api/admin/service/inout/impl/OrderServiceImpl.java b/api-admin/src/main/java/com/glxp/api/admin/service/inout/impl/OrderServiceImpl.java index 5c05ae22..f1b70c0a 100644 --- a/api-admin/src/main/java/com/glxp/api/admin/service/inout/impl/OrderServiceImpl.java +++ b/api-admin/src/main/java/com/glxp/api/admin/service/inout/impl/OrderServiceImpl.java @@ -338,7 +338,8 @@ public class OrderServiceImpl implements OrderService { stockOrderEntityList.forEach(stockOrderEntity -> { StockOrderResponse response = new StockOrderResponse(); BeanUtil.copyProperties(stockOrderEntity, response); - if (stockOrderEntity.getStatus().equals(ConstantStatus.SORDER_DELIVER) && checkBusTypeSupplementOrder(stockOrderEntity.getBillNo())) { + if (stockOrderEntity.getStatus().equals(ConstantStatus.SORDER_DELIVER) && checkBusTypeSupplementOrder(stockOrderEntity.getBillNo()) + && StrUtil.isEmpty(stockOrderEntity.getSupplementNo())) { response.setEnableSupplementOrder(true); } result.add(response); @@ -671,7 +672,10 @@ public class OrderServiceImpl implements OrderService { * @return */ private boolean isPreInOrder(OrderEntity orderEntity) { - return bussinessLocalTypeDao.selectPreInByOrderType(orderEntity.getAction()); + Boolean isTrue = bussinessLocalTypeDao.selectPreInByOrderType(orderEntity.getAction()); + if (isTrue == null) + return false; + return isTrue; } @Override diff --git a/api-admin/src/main/java/com/glxp/api/admin/thread/InvProductsTrService.java b/api-admin/src/main/java/com/glxp/api/admin/thread/InvProductsTrService.java index 3b3bfca9..eb366c92 100644 --- a/api-admin/src/main/java/com/glxp/api/admin/thread/InvProductsTrService.java +++ b/api-admin/src/main/java/com/glxp/api/admin/thread/InvProductsTrService.java @@ -593,6 +593,7 @@ public class InvProductsTrService { outOrder.setFromCorp(basicUnitMaintainEntity.getName()); outOrder.setFromCorpId(corpName); outOrder.setLocStorageCode(orderEntity.getLocStorageCode()); + outOrder.setInvStorageCode(orderEntity.getInvStorageCode()); outOrder.setCorpOrderId(CustomUtil.getId() + "x"); //互填单号 orderEntity.setUllageSupNo(outOrder.getId()); @@ -639,6 +640,7 @@ public class InvProductsTrService { outOrder.setCustomerId(Constant.SYSTEM_CUSTOMER_ID); outOrder.setFromCorpId(null); outOrder.setLocStorageCode(orderEntity.getLocStorageCode()); + outOrder.setInvStorageCode(orderEntity.getInvStorageCode()); //互填单号 orderEntity.setUllageSupNo(outOrder.getId()); @@ -713,7 +715,7 @@ public class InvProductsTrService { outOrder.setCorpOrderId(CustomUtil.getId() + "x"); outOrder.setLocStorageCode(orderEntity.getLocStorageCode()); - + outOrder.setInvStorageCode(orderEntity.getInvStorageCode()); SystemParamConfigEntity systemParamConfigEntity = systemParamConfigService.selectByParamKey("additional_auto_submit"); if ("1".equals(systemParamConfigEntity.getParamValue())) { @@ -793,6 +795,7 @@ public class InvProductsTrService { outOrder.setFromCorpId(temps.get(0).getFromCorpId()); outOrder.setCorpOrderId(CustomUtil.getId() + "x"); outOrder.setLocStorageCode(orderEntity.getLocStorageCode()); + outOrder.setInvStorageCode(orderEntity.getInvStorageCode()); outOrder.setErpFk(null); outOrder.setFromType(ConstantStatus.FROM_CHANGE); outOrder.setReceiveStatus(0); diff --git a/api-admin/src/main/resources/application.properties b/api-admin/src/main/resources/application.properties index e487e916..0f5d7b4c 100644 --- a/api-admin/src/main/resources/application.properties +++ b/api-admin/src/main/resources/application.properties @@ -1,4 +1,4 @@ -spring.profiles.active=dev +spring.profiles.active=pro spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver diff --git a/api-admin/src/main/resources/mybatis/mapper/inventory/InvPreInProductDetailDao.xml b/api-admin/src/main/resources/mybatis/mapper/inventory/InvPreInProductDetailDao.xml index 0964a297..be263ac9 100644 --- a/api-admin/src/main/resources/mybatis/mapper/inventory/InvPreInProductDetailDao.xml +++ b/api-admin/src/main/resources/mybatis/mapper/inventory/InvPreInProductDetailDao.xml @@ -229,7 +229,8 @@ - delete from inv_prein_product_detail + delete + from inv_prein_product_detail where orderIdFk = #{orderIdFk} @@ -289,4 +290,6 @@ + + \ No newline at end of file diff --git a/api-admin/src/main/resources/mybatis/mapper/inventory/InvPreProductDetailDao.xml b/api-admin/src/main/resources/mybatis/mapper/inventory/InvPreProductDetailDao.xml index a79fdada..b0477125 100644 --- a/api-admin/src/main/resources/mybatis/mapper/inventory/InvPreProductDetailDao.xml +++ b/api-admin/src/main/resources/mybatis/mapper/inventory/InvPreProductDetailDao.xml @@ -230,4 +230,13 @@ + + + + delete + from inv_product_detail + where orderIdFk = #{orderIdFk} + + + \ No newline at end of file