|  |  |  | @ -11,15 +11,20 @@ import com.glxp.sale.admin.entity.auth.AuthLicense; | 
			
		
	
		
			
				
					|  |  |  |  | import com.glxp.sale.admin.entity.basic.BasicUnitMaintainEntity; | 
			
		
	
		
			
				
					|  |  |  |  | import com.glxp.sale.admin.entity.basic.BussinessTypeEntity; | 
			
		
	
		
			
				
					|  |  |  |  | import com.glxp.sale.admin.entity.info.CompanyEntity; | 
			
		
	
		
			
				
					|  |  |  |  | import com.glxp.sale.admin.entity.info.CompanyProductRelevanceEntity; | 
			
		
	
		
			
				
					|  |  |  |  | import com.glxp.sale.admin.entity.inout.ErpOrderEntity; | 
			
		
	
		
			
				
					|  |  |  |  | import com.glxp.sale.admin.entity.inout.OrderEntity; | 
			
		
	
		
			
				
					|  |  |  |  | import com.glxp.sale.admin.entity.inout.WarehouseEntity; | 
			
		
	
		
			
				
					|  |  |  |  | import com.glxp.sale.admin.entity.param.SystemParamConfigEntity; | 
			
		
	
		
			
				
					|  |  |  |  | import com.glxp.sale.admin.entity.udid.UdiEntity; | 
			
		
	
		
			
				
					|  |  |  |  | import com.glxp.sale.admin.exception.JsonException; | 
			
		
	
		
			
				
					|  |  |  |  | import com.glxp.sale.admin.req.basic.CompanyProductRelevanceRequest; | 
			
		
	
		
			
				
					|  |  |  |  | import com.glxp.sale.admin.req.basic.FilterUdiInfoRequest; | 
			
		
	
		
			
				
					|  |  |  |  | import com.glxp.sale.admin.req.info.FilterCompanyProductRelevanceRequest; | 
			
		
	
		
			
				
					|  |  |  |  | import com.glxp.sale.admin.req.inout.*; | 
			
		
	
		
			
				
					|  |  |  |  | import com.glxp.sale.admin.res.PageSimpleResponse; | 
			
		
	
		
			
				
					|  |  |  |  | import com.glxp.sale.admin.res.basic.BussinessTypResponse; | 
			
		
	
		
			
				
					|  |  |  |  | import com.glxp.sale.admin.res.basic.CompanyProductRelevanceResponse; | 
			
		
	
		
			
				
					|  |  |  |  | import com.glxp.sale.admin.res.basic.UdiRelevanceResponse; | 
			
		
	
		
			
				
					|  |  |  |  | import com.glxp.sale.admin.res.inout.WarehouseResponse; | 
			
		
	
		
			
				
					|  |  |  |  | import com.glxp.sale.admin.service.auth.AuthAdminService; | 
			
		
	
	
		
			
				
					|  |  |  | @ -27,15 +32,20 @@ import com.glxp.sale.admin.service.auth.CustomerService; | 
			
		
	
		
			
				
					|  |  |  |  | import com.glxp.sale.admin.service.basic.BasicUnitMaintainService; | 
			
		
	
		
			
				
					|  |  |  |  | import com.glxp.sale.admin.service.basic.BussinessTypeService; | 
			
		
	
		
			
				
					|  |  |  |  | import com.glxp.sale.admin.service.basic.UdiRelevanceService; | 
			
		
	
		
			
				
					|  |  |  |  | import com.glxp.sale.admin.service.info.CompanyProductRelevanceService; | 
			
		
	
		
			
				
					|  |  |  |  | import com.glxp.sale.admin.service.info.CompanyService; | 
			
		
	
		
			
				
					|  |  |  |  | import com.glxp.sale.admin.service.inout.*; | 
			
		
	
		
			
				
					|  |  |  |  | import com.glxp.sale.admin.service.param.SystemParamConfigService; | 
			
		
	
		
			
				
					|  |  |  |  | import com.glxp.sale.admin.thread.IoTransInoutService; | 
			
		
	
		
			
				
					|  |  |  |  | import com.glxp.sale.admin.util.CustomUtil; | 
			
		
	
		
			
				
					|  |  |  |  | import com.glxp.sale.admin.util.DateUtil; | 
			
		
	
		
			
				
					|  |  |  |  | import com.glxp.sale.admin.util.FilterUdiUtils; | 
			
		
	
		
			
				
					|  |  |  |  | import com.glxp.sale.common.enums.ResultEnum; | 
			
		
	
		
			
				
					|  |  |  |  | import com.glxp.sale.common.res.BaseResponse; | 
			
		
	
		
			
				
					|  |  |  |  | import com.glxp.sale.common.util.ResultVOUtils; | 
			
		
	
		
			
				
					|  |  |  |  | import org.apache.commons.lang3.StringUtils; | 
			
		
	
		
			
				
					|  |  |  |  | import org.slf4j.Logger; | 
			
		
	
		
			
				
					|  |  |  |  | import org.slf4j.LoggerFactory; | 
			
		
	
		
			
				
					|  |  |  |  | import org.springframework.beans.BeanUtils; | 
			
		
	
		
			
				
					|  |  |  |  | import org.springframework.validation.BindingResult; | 
			
		
	
		
			
				
					|  |  |  |  | import org.springframework.web.bind.annotation.*; | 
			
		
	
	
		
			
				
					|  |  |  | @ -82,6 +92,11 @@ public class WareHouseController { | 
			
		
	
		
			
				
					|  |  |  |  |     CustomerService customerService; | 
			
		
	
		
			
				
					|  |  |  |  |     @Resource | 
			
		
	
		
			
				
					|  |  |  |  |     UdiRelevanceService udiRelevanceService; | 
			
		
	
		
			
				
					|  |  |  |  |     @Resource | 
			
		
	
		
			
				
					|  |  |  |  |     CompanyProductRelevanceService companyProductRelevanceService; | 
			
		
	
		
			
				
					|  |  |  |  |     @Resource | 
			
		
	
		
			
				
					|  |  |  |  |     SystemParamConfigService systemParamConfigService; | 
			
		
	
		
			
				
					|  |  |  |  |     Logger logger = LoggerFactory.getLogger(StockOrderController.class); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     @AuthRuleAnnotation("") | 
			
		
	
		
			
				
					|  |  |  |  |     @GetMapping("admin/warehouse/inout/list") | 
			
		
	
	
		
			
				
					|  |  |  | @ -246,7 +261,7 @@ public class WareHouseController { | 
			
		
	
		
			
				
					|  |  |  |  |         warehouseEntity.setOrderId(addOrderRequest.getOrderId()); | 
			
		
	
		
			
				
					|  |  |  |  |         warehouseEntity.setAction(addOrderRequest.getAction()); | 
			
		
	
		
			
				
					|  |  |  |  |         warehouseEntity.setMainAction(addOrderRequest.getMainAction()); | 
			
		
	
		
			
				
					|  |  |  |  |         warehouseEntity.setFromCorp(addOrderRequest.getAction()); | 
			
		
	
		
			
				
					|  |  |  |  |         warehouseEntity.setFromCorp(addOrderRequest.getFromCorp()); | 
			
		
	
		
			
				
					|  |  |  |  |         warehouseEntity.setFromCorpId(addOrderRequest.getFromCorpId()); | 
			
		
	
		
			
				
					|  |  |  |  |         warehouseEntity.setLocStorageCode(addOrderRequest.getLocStorageCode()); | 
			
		
	
		
			
				
					|  |  |  |  |         codesTempService.updateByOrderId(warehouseEntity); | 
			
		
	
	
		
			
				
					|  |  |  | @ -263,8 +278,13 @@ public class WareHouseController { | 
			
		
	
		
			
				
					|  |  |  |  |             codesTempService.updateById(warehouseEntity); | 
			
		
	
		
			
				
					|  |  |  |  |         } else { | 
			
		
	
		
			
				
					|  |  |  |  |             codesTempService.deleteCodesTempById(warehouseEntity); | 
			
		
	
		
			
				
					|  |  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         List<WarehouseEntity> temps = codesTempService.findByOrderId(warehouseEntity.getOrderId()); | 
			
		
	
		
			
				
					|  |  |  |  |         if (temps.size() <= 0) { | 
			
		
	
		
			
				
					|  |  |  |  |             orderService.deleteById(warehouseEntity.getOrderId()); | 
			
		
	
		
			
				
					|  |  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         return ResultVOUtils.success(); | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
	
		
			
				
					|  |  |  | @ -304,7 +324,8 @@ public class WareHouseController { | 
			
		
	
		
			
				
					|  |  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         //先生产扫码单据
 | 
			
		
	
		
			
				
					|  |  |  |  |         if (StringUtils.isBlank(orderId)) { | 
			
		
	
		
			
				
					|  |  |  |  |         OrderEntity orderEntity = orderService.findById(orderId); | 
			
		
	
		
			
				
					|  |  |  |  |         if (StringUtils.isBlank(orderId) || orderEntity == null) { | 
			
		
	
		
			
				
					|  |  |  |  |             orderId = "SM" + CustomUtil.getId(); | 
			
		
	
		
			
				
					|  |  |  |  |             OrderEntity orderSaveRequest = new OrderEntity(); | 
			
		
	
		
			
				
					|  |  |  |  |             orderSaveRequest.setId(orderId); | 
			
		
	
	
		
			
				
					|  |  |  | @ -366,6 +387,43 @@ public class WareHouseController { | 
			
		
	
		
			
				
					|  |  |  |  |             List<WarehouseEntity> warehouseEntityList = new ArrayList<>(); | 
			
		
	
		
			
				
					|  |  |  |  |             warehouseEntityList.add(warehouseEntity); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |             //校验往来单位
 | 
			
		
	
		
			
				
					|  |  |  |  |             BaseResponse corpResponse = checkCorp(warehouseEntity, bussinessTypeEntity); | 
			
		
	
		
			
				
					|  |  |  |  |             if (corpResponse != null) { | 
			
		
	
		
			
				
					|  |  |  |  |                 return corpResponse; | 
			
		
	
		
			
				
					|  |  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |             //过期提醒:
 | 
			
		
	
		
			
				
					|  |  |  |  |             SystemParamConfigEntity expireParamConfigEntity = systemParamConfigService.selectByParamKey("expire_date_tip"); | 
			
		
	
		
			
				
					|  |  |  |  |             if (!"0".equals(expireParamConfigEntity.getParamValue())) { | 
			
		
	
		
			
				
					|  |  |  |  |                 if (udiEntity.getExpireDate() != null) { | 
			
		
	
		
			
				
					|  |  |  |  |                     String expireDate = "20" + udiEntity.getExpireDate(); | 
			
		
	
		
			
				
					|  |  |  |  |                     long expireTime = DateUtil.parseDateExpire(expireDate); | 
			
		
	
		
			
				
					|  |  |  |  |                     if (expireTime - System.currentTimeMillis() < 0) { | 
			
		
	
		
			
				
					|  |  |  |  |                         return ResultVOUtils.error(500, "udi码:" + warehouseEntity.getCode() + "已经过期!"); | 
			
		
	
		
			
				
					|  |  |  |  |                     } | 
			
		
	
		
			
				
					|  |  |  |  |                 } | 
			
		
	
		
			
				
					|  |  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |             //近效期提醒:
 | 
			
		
	
		
			
				
					|  |  |  |  |             SystemParamConfigEntity recentParamConfigEntity = systemParamConfigService.selectByParamKey("recent_date_tip"); | 
			
		
	
		
			
				
					|  |  |  |  |             long recent = Long.parseLong(recentParamConfigEntity.getParamValue()); | 
			
		
	
		
			
				
					|  |  |  |  |             if (recent > 0) { | 
			
		
	
		
			
				
					|  |  |  |  |                 if (udiEntity.getExpireDate() != null) { | 
			
		
	
		
			
				
					|  |  |  |  |                     String expireDate = "20" + udiEntity.getExpireDate(); | 
			
		
	
		
			
				
					|  |  |  |  |                     long expireTime = DateUtil.parseDateExpire(expireDate); | 
			
		
	
		
			
				
					|  |  |  |  |                     long recentTieme = recent * 24 * 60 * 60 * 1000; | 
			
		
	
		
			
				
					|  |  |  |  |                     logger.error("recentTieme = " + recentTieme); | 
			
		
	
		
			
				
					|  |  |  |  |                     if (expireTime - System.currentTimeMillis() < recentTieme) { | 
			
		
	
		
			
				
					|  |  |  |  |                         return ResultVOUtils.error(500, "udi码:" + warehouseEntity.getCode() + "临近过期!"); | 
			
		
	
		
			
				
					|  |  |  |  |                     } | 
			
		
	
		
			
				
					|  |  |  |  |                 } | 
			
		
	
		
			
				
					|  |  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |             BaseResponse baseResponse = checkRelId(warehouseEntity); | 
			
		
	
		
			
				
					|  |  |  |  |             warehouseEntity = codesTempService.findByUnique(warehouseEntity.getOrderId(), warehouseEntity.getCode()); | 
			
		
	
		
			
				
					|  |  |  |  |             if (baseResponse == null) { | 
			
		
	
	
		
			
				
					|  |  |  | @ -380,11 +438,39 @@ public class WareHouseController { | 
			
		
	
		
			
				
					|  |  |  |  |                 return baseResponse; | 
			
		
	
		
			
				
					|  |  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |             //产品是否可以以使用单元入库
 | 
			
		
	
		
			
				
					|  |  |  |  |             List<UdiRelevanceResponse> udiRelevanceResponses = udiRelevanceService.selectAllByNameCode(warehouseEntity.getNameCode()); | 
			
		
	
		
			
				
					|  |  |  |  |             if (udiRelevanceResponses.size() == 1) { | 
			
		
	
		
			
				
					|  |  |  |  |                 UdiRelevanceResponse udiRelevanceResponse = udiRelevanceResponses.get(0); | 
			
		
	
		
			
				
					|  |  |  |  |                 if (udiRelevanceResponse == null) { | 
			
		
	
		
			
				
					|  |  |  |  |                     return ResultVOUtils.error(500, "udi码:" + warehouseEntity.getCode() + "该产品信息未维护!"); | 
			
		
	
		
			
				
					|  |  |  |  |                 } else if (udiRelevanceResponse.getIsUseDy() == 0 && udiRelevanceResponse.getDiType() == ConstantStatus.DITYPE_SYDY) { | 
			
		
	
		
			
				
					|  |  |  |  |                     return ResultVOUtils.error(500, "udi码:" + warehouseEntity.getCode() + "该产品不允许以使用单元入库!"); | 
			
		
	
		
			
				
					|  |  |  |  |                 } | 
			
		
	
		
			
				
					|  |  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |  |         return ResultVOUtils.success(orderId); | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     //校验往来单位是否已维护
 | 
			
		
	
		
			
				
					|  |  |  |  |     public BaseResponse checkCorp(WarehouseEntity warehouseEntity, BussinessTypeEntity bussinessTypeEntity) { | 
			
		
	
		
			
				
					|  |  |  |  |         if (bussinessTypeEntity.getCorpType() == ConstantStatus.CORP_TYPE_OUT) { | 
			
		
	
		
			
				
					|  |  |  |  |             CompanyProductRelevanceRequest companyProductRelevanceRequest = new CompanyProductRelevanceRequest(); | 
			
		
	
		
			
				
					|  |  |  |  |             companyProductRelevanceRequest.setUnitFk(warehouseEntity.getFromCorpId()); | 
			
		
	
		
			
				
					|  |  |  |  |             UdiEntity udiEntity = FilterUdiUtils.getUdi(warehouseEntity.getCode()); | 
			
		
	
		
			
				
					|  |  |  |  |             companyProductRelevanceRequest.setNameCode(udiEntity.getUdi()); | 
			
		
	
		
			
				
					|  |  |  |  |             List<CompanyProductRelevanceResponse> datas = companyProductRelevanceService.filterUdiGp(companyProductRelevanceRequest); | 
			
		
	
		
			
				
					|  |  |  |  |             if (datas.size() <= 0) { | 
			
		
	
		
			
				
					|  |  |  |  |                 return ResultVOUtils.error(500, "当前供应商不存在此配送产品!"); | 
			
		
	
		
			
				
					|  |  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |  |         return null; | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     public BaseResponse checkRelId(WarehouseEntity warehouseEntity) { | 
			
		
	
		
			
				
					|  |  |  |  |         List<UdiRelevanceResponse> udiRelevanceEntities = udiRelevanceService.selectAllByNameCode(warehouseEntity.getNameCode()); | 
			
		
	
		
			
				
					|  |  |  |  |         if (udiRelevanceEntities != null && udiRelevanceEntities.size() > 1 && warehouseEntity.getRelId() == null) {//同一个DI绑定多个产品西信息
 | 
			
		
	
	
		
			
				
					|  |  |  | @ -413,10 +499,19 @@ public class WareHouseController { | 
			
		
	
		
			
				
					|  |  |  |  |         if (originSupId != null) { | 
			
		
	
		
			
				
					|  |  |  |  |             warehouseEntity.setSupId(originSupId); | 
			
		
	
		
			
				
					|  |  |  |  |         } else { | 
			
		
	
		
			
				
					|  |  |  |  |             String supId = ioTransInoutService.checkExitSup(warehouseEntity.getRelId()); | 
			
		
	
		
			
				
					|  |  |  |  |             if (supId == null || "MUTI".equals(supId)) { | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |             String supId = ioTransInoutService.checkInvExitSup(warehouseEntity); | 
			
		
	
		
			
				
					|  |  |  |  |             if (supId == null) { | 
			
		
	
		
			
				
					|  |  |  |  |                 supId = ioTransInoutService.checkExitSup(warehouseEntity.getRelId()); | 
			
		
	
		
			
				
					|  |  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  |  |             if (supId == null) { | 
			
		
	
		
			
				
					|  |  |  |  |                 warehouseEntity.setSupId(null); | 
			
		
	
		
			
				
					|  |  |  |  |                 BaseResponse baseResponse = ResultVOUtils.error(503, "该产品未绑定供应商,请指定对应的供应商"); | 
			
		
	
		
			
				
					|  |  |  |  |                 baseResponse.setData(warehouseEntity); | 
			
		
	
		
			
				
					|  |  |  |  |                 return baseResponse; | 
			
		
	
		
			
				
					|  |  |  |  |             } else if ("MUTI".equals(supId)) { | 
			
		
	
		
			
				
					|  |  |  |  |                 warehouseEntity.setSupId(null); | 
			
		
	
		
			
				
					|  |  |  |  |                 BaseResponse baseResponse = ResultVOUtils.error(503, "该产品未绑定供应商或绑定多个供应商,请指定对应的供应商"); | 
			
		
	
		
			
				
					|  |  |  |  |                 BaseResponse baseResponse = ResultVOUtils.error(503, "该产品绑定多个供应商,请指定对应的供应商"); | 
			
		
	
		
			
				
					|  |  |  |  |                 baseResponse.setData(warehouseEntity); | 
			
		
	
		
			
				
					|  |  |  |  |                 return baseResponse; | 
			
		
	
		
			
				
					|  |  |  |  |             } else { | 
			
		
	
	
		
			
				
					|  |  |  | 
 |