Browse Source

到库位与任务库位是否一致

master
chenfang 2 years ago
parent
commit
3218c1222c
  1. 10
      win-module-wms/win-module-wms-api/src/main/java/com/win/module/wms/enums/ErrorCodeConstants.java
  2. 4
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/accountcalendar/AccountcalendarController.java
  3. 6
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/carrier/CarrierController.java
  4. 3
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/carrier/vo/CarrierImportExcelVo.java
  5. 6
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/location/LocationController.java
  6. 9
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/location/vo/LocationImportExcelVO.java
  7. 4
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/locationgroup/LocationgroupController.java
  8. 6
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/locationgroup/vo/LocationGroupImportExcelVO.java
  9. 7
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/itembasic/ItembasicService.java
  10. 2
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/production/ProductionMainServiceImpl.java
  11. 14
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreceiptJob/ProductionreceiptJobMainServiceImpl.java
  12. 134
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/until/job/JobUtils.java

10
win-module-wms/win-module-wms-api/src/main/java/com/win/module/wms/enums/ErrorCodeConstants.java

@ -25,6 +25,12 @@ public interface ErrorCodeConstants {
ErrorCode ITEMBASIC_VALIDITY_DAYS_NOT_EXISTS = new ErrorCode(1_000_020_013, "有效天数不存在");
ErrorCode ITEMBASIC_AVAIABLE_NOT_EXISTS = new ErrorCode(1_000_020_014, "是否可用不存在");
ErrorCode ITEMBASIC_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_000_020_015, "导入物品基础信息不能为空");
ErrorCode ITEMBASIC_TYPE_AND_BUSINESSTYPE_NOT_EQUALS = new ErrorCode(1_000_020_016, "物料类型与业务类型的物料类型不一致");
ErrorCode ITEMBASIC_STATUS_AND_BUSINESSSTATUS_NOT_EQUALS = new ErrorCode(1_000_020_017, "物料状态与业务类型的物料状态不一致");
ErrorCode FROM_LOCATION_TYPE_AND_BUSINESSTYPE_INLOCATION_TYPE_NOT_EQUALS = new ErrorCode(1_000_020_018, "从库位类型与业务类型的从库位类型不一致");
ErrorCode TO_LOCATION_TYPE_AND_BUSINESSTYPE_OUTLOCATION_TYPE_NOT_EQUALS = new ErrorCode(1_000_020_019, "到库位类型与业务类型的到库位类型不一致");
ErrorCode INVENTORY_STATUS_AND_BUSINESS_IN_INVENTORY_STATUS_NOT_EQUALS_OR_NULL = new ErrorCode(1_000_020_020, "入库库存状态与业务类型的入库库存状态不一致或者为空");
ErrorCode INVENTORY_STATUS_AND_BUSINESS_OUT_INVENTORY_STATUS_NOT_EQUALS_OR_NULL = new ErrorCode(1_000_020_020, "出库库存状态与业务类型的出库库存状态不一致或者为空");
//物品包装信息ErrorCode
ErrorCode ITEMPACKAGING_NOT_EXISTS = new ErrorCode(1_000_021_000, "物品包装信息 不存在");
ErrorCode ITEMPACKAGING_ITEM_CODE_NOT_EXISTS = new ErrorCode(1_000_021_001, "code不存在");
@ -167,7 +173,8 @@ public interface ErrorCodeConstants {
ErrorCode LOCATION_USER_GROUP_CODE_NOT_EXISTS = new ErrorCode(1_000_037_009, "用户组代码不存在");
ErrorCode LOCATION_AVAILABLE_NOT_EXISTS = new ErrorCode(1_000_037_010, "是否可用不存在");
ErrorCode LOCATION_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_000_037_011, "导入库位不能为空");
ErrorCode LOCATION_ITEMCODE_AND_LOCATIONCODE_NOT_EXISTS = new ErrorCode(1_000_037_011, "未查找到零件item_code库位location_code对应的上架策略");
ErrorCode LOCATION_ITEMCODE_AND_LOCATIONCODE_NOT_EXISTS = new ErrorCode(1_000_037_012, "未查找到零件item_code库位location_code对应的上架策略");
ErrorCode LOCATION_HANDLE_TOLOCATIONCODE_AND_RECOMMEND_TOLOCATIONCODECODE_INCONFORMITY = new ErrorCode(1_000_037_013, "实际库位与任务推荐的目标库位不一致");
//车间ErrorCode
ErrorCode WORKSHOP_NOT_EXISTS = new ErrorCode(1_038_000_000, "车间不存在");
ErrorCode WORKSHOP_CODE_EXISTS = new ErrorCode(1_039_000_001, "code已存在");
@ -561,6 +568,7 @@ public interface ErrorCodeConstants {
ErrorCode PRODUCTION_MAIN_MASSAGE_EXISTS = new ErrorCode(1_001_101_002, "生产计明细:订单号pline_number、零件号pitem_code无效");
ErrorCode PRODUCTION_MAIN_NUMBER_CLOSE_EXISTS = new ErrorCode(1_001_101_003, "生产计划number已经关闭");
ErrorCode PRODUCTION_MAIN_NUMBER_NOT_EXISTS = new ErrorCode(1_001_101_004, "生产计划number无效");
ErrorCode PRODUCTION_DETAIL_VOID_STATUS_ERROR = new ErrorCode(1_001_101_005, "生产计划明细无效,状态错误");
//制品收货申请主ErrorCode
ErrorCode PRODUCTRECEIPT_REQUEST_MAIN_NOT_EXISTS = new ErrorCode(1_000_102_000, "制品收货申请主不存在");

4
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/accountcalendar/AccountcalendarController.java

@ -1,6 +1,5 @@
package com.win.module.wms.controller.accountcalendar;
import com.alibaba.druid.sql.ast.statement.SQLCreateDatabaseStatement;
import com.win.framework.common.pojo.CommonResult;
import com.win.framework.common.pojo.PageResult;
import com.win.framework.dict.core.util.DictFrameworkUtils;
@ -9,10 +8,7 @@ import com.win.framework.operatelog.core.annotations.OperateLog;
import com.win.module.system.api.user.AdminUserApi;
import com.win.module.system.api.user.dto.AdminUserRespDTO;
import com.win.module.wms.controller.accountcalendar.vo.*;
import com.win.module.system.api.user.dto.AdminUserRespDTO;
import com.win.module.wms.controller.itembasic.vo.ItembasicExcelVO;
import com.win.module.wms.convert.accountcalendar.AccountcalendarConvert;
import com.win.module.wms.convert.itembasic.ItembasicConvert;
import com.win.module.wms.dal.dataobject.accountcalendar.AccountcalendarDO;
import com.win.module.wms.enums.DictTypeConstants;
import com.win.module.wms.service.accountcalendar.AccountcalendarService;

6
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/carrier/CarrierController.java

@ -119,11 +119,11 @@ public class CarrierController {
List<CarrierImportExcelVo> list = Arrays.asList();
Map<Integer, String[]> mapDropDown = new HashMap<>();
String[] currency = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.CURRENCY);
mapDropDown.put(10, currency);
mapDropDown.put(11, currency);
String[] type = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.CARRIER_TYPE);
mapDropDown.put(12, type);
mapDropDown.put(13, type);
String[] available = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.TRUE_FALSE);
mapDropDown.put(13, available);
mapDropDown.put(14, available);
// 输出
ExcelUtils.write(response, "承运商导入模板.xls", "承运商列表", CarrierImportExcelVo.class, list,mapDropDown);
}

3
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/carrier/vo/CarrierImportExcelVo.java

@ -25,6 +25,9 @@ public class CarrierImportExcelVo {
@ExcelProperty("代码")
private String code;
@ExcelProperty("名称")
private String name;
@ExcelProperty("简称")
private String shortName;

6
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/location/LocationController.java

@ -120,6 +120,12 @@ public class LocationController {
// 手动创建导出 demo
List<LocationImportExcelVO> list = Arrays.asList();
Map<Integer, String[]> mapDropDown = new HashMap<>();
String[] warehouseCode = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.WAREHOUSE_TYPE);
mapDropDown.put(3, warehouseCode);
String[] areaCode = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.AREA_TYPE);
mapDropDown.put(4, areaCode);
String[] erpLocationCode = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.ERP_LOCATION);
mapDropDown.put(6, erpLocationCode);
String[] type = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.LOCATION_TYPE);
mapDropDown.put(7, type);
String[] available = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.TRUE_FALSE);

9
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/location/vo/LocationImportExcelVO.java

@ -29,16 +29,19 @@ public class LocationImportExcelVO {
@ExcelProperty("描述")
private String description;
@ExcelProperty("仓库代码")
@ExcelProperty(value = "仓库代码", converter = DictConvert.class)
@DictFormat(DictTypeConstants.WAREHOUSE_TYPE)
private String warehouseCode;
@ExcelProperty("区域代码")
@ExcelProperty(value = "区域代码", converter = DictConvert.class)
@DictFormat(DictTypeConstants.AREA_TYPE)
private String areaCode;
@ExcelProperty("库位组代码")
private String locationGroupCode;
@ExcelProperty("ERP库位代码")
@ExcelProperty(value = "ERP库位代码", converter = DictConvert.class)
@DictFormat(DictTypeConstants.ERP_LOCATION)
private String erpLocationCode;
@ExcelProperty(value = "类型", converter = DictConvert.class)

4
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/locationgroup/LocationgroupController.java

@ -115,6 +115,10 @@ public class LocationgroupController {
// 手动创建导出 demo
List<LocationGroupImportExcelVO> list = Arrays.asList();
Map<Integer, String[]> mapDropDown = new HashMap<>();
String[] warehouseCode = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.WAREHOUSE_TYPE);
mapDropDown.put(3, warehouseCode);
String[] areaCode = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.AREA_TYPE);
mapDropDown.put(4, areaCode);
String[] available = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.PACK_UNIT);
mapDropDown.put(5, available);;
// 输出

6
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/locationgroup/vo/LocationGroupImportExcelVO.java

@ -29,10 +29,12 @@ public class LocationGroupImportExcelVO {
@ExcelProperty("描述")
private String description;
@ExcelProperty("仓库代码")
@ExcelProperty(value = "仓库代码", converter = DictConvert.class)
@DictFormat(DictTypeConstants.WAREHOUSE_TYPE)
private String warehouseCode;
@ExcelProperty("区域代码")
@ExcelProperty(value = "区域代码", converter = DictConvert.class)
@DictFormat(DictTypeConstants.AREA_TYPE)
private String areaCode;
@ExcelProperty(value = "是否可用", converter = DictConvert.class)

7
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/itembasic/ItembasicService.java

@ -84,7 +84,12 @@ public interface ItembasicService {
* @return 导入结果
*/
List<ItembasicImportExcelVo> importItembasicList(List<ItembasicImportExcelVo> importItembasics, Integer mode,boolean updatePart);
/**
* 获得物品基本信息
*
* @param code 物品代码
* @return 物品基本信息
*/
public ItembasicDO selectItembasic(String code);
/**
* 校验物料有效状态正确

2
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/production/ProductionMainServiceImpl.java

@ -96,7 +96,7 @@ public class ProductionMainServiceImpl implements ProductionMainService {
public List<ProductionMainDO> getProductionMainList(ProductionMainExportReqVO exportReqVO) {
return productionMainMapper.selectList(exportReqVO);
}
//公共方法 校验生产计划
//公共方法 校验生产计划 Plan---VPod
@Override
public ProductionDetailDO planProductionDetailDoExist(String pnumber, String pitemCode) {
QueryWrapper queryWrapper = new QueryWrapper();

14
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreceiptJob/ProductionreceiptJobMainServiceImpl.java

@ -6,6 +6,8 @@ import com.win.module.wms.controller.productionreceiptJob.vo.ProductionreceiptJo
import com.win.module.wms.controller.productionreceiptJob.vo.ProductionreceiptJobMainPageReqVO;
import com.win.module.wms.controller.productionreceiptJob.vo.ProductionreceiptJobMainUpdateReqVO;
import com.win.module.wms.dal.dataobject.customerreturnJob.CustomerreturnJobMainDO;
import com.win.module.wms.dal.dataobject.production.ProductionDetailDO;
import com.win.module.wms.service.production.ProductionMainService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
@ -33,6 +35,9 @@ public class ProductionreceiptJobMainServiceImpl implements ProductionreceiptJob
@Resource
private ProductionreceiptJobMainMapper productionreceiptJobMainMapper;
@Resource
private ProductionMainService productionMainService;
@Override
public Long createProductionreceiptJobMain(ProductionreceiptJobMainCreateReqVO createReqVO) {
// 插入
@ -97,4 +102,13 @@ public class ProductionreceiptJobMainServiceImpl implements ProductionreceiptJob
throw exception(CUSTOMERRETURN_JOB_MAIN_STATUS_ERROR);
}
}
public ProductionDetailDO productionreceiptJobMainDoStatusRi13ght(String pnumber, String pitemCode) {
ProductionDetailDO productionDetailDO = productionMainService.planProductionDetailDoExist(pnumber, pitemCode);
if(productionDetailDO != null){
return productionDetailDO;
}else {
throw exception(PRODUCTION_DETAIL_VOID_STATUS_ERROR);
}
}
}

134
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/until/job/JobUtils.java

@ -3,18 +3,32 @@ package com.win.module.wms.until.job;
import cn.hutool.core.exceptions.UtilException;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.win.module.wms.dal.dataobject.businesstype.BusinesstypeDO;
import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO;
import com.win.module.wms.dal.dataobject.location.LocationDO;
import com.win.module.wms.service.itembasic.ItembasicService;
import com.win.module.wms.service.location.LocationService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception;
import static com.win.module.wms.enums.ErrorCodeConstants.*;
@Slf4j
@Component
public class JobUtils {
@Resource
private ItembasicService itembasicService;
@Resource
private LocationService locationService;
/**
* 解析JSON串,返回两个对象的集合
*
@ -87,5 +101,125 @@ public class JobUtils {
}
return result;
}
//到库位与任务库位是否一致(可配置)
public boolean jobToLocationCodeAndRecordToLocationCodeAccord(String jobToLocationCode, String recordToLocationCode, String allowModifyLocation){
if(jobToLocationCode != null || !"".equals(jobToLocationCode)){
if(!jobToLocationCode.equals(recordToLocationCode)){
if("TRUE".equals(allowModifyLocation)){
return true;
}else {
throw exception(LOCATION_HANDLE_TOLOCATIONCODE_AND_RECOMMEND_TOLOCATIONCODECODE_INCONFORMITY);
}
}else {
return true;
}
}else {
return true;
}
}
//DBT---DBT2---IT 物料类型检验是否一致
public boolean ifInType(String pitemCode, BusinesstypeDO businesstypeDO){
ItembasicDO itembasicDO = itembasicService.selectItembasic(pitemCode);
boolean ifInType = false;
if(itembasicDO != null){
String[] itemType = businesstypeDO.getItemTypes().split(",");
for (int i = 0; i < itemType.length; i++) {
if(itembasicDO.getType().equals(itemType[i])){
ifInType = true;
}
}
}
if(ifInType == true){
return true;
}else{
throw exception(ITEMBASIC_TYPE_AND_BUSINESSTYPE_NOT_EQUALS);
}
}
//DBT---DBT2---IS 物料状态检验是否一致
public boolean ifInStatus(String pitemCode, BusinesstypeDO businesstypeDO){
ItembasicDO itembasicDO = itembasicService.selectItembasic(pitemCode);
boolean ifInStatus = false;
if(itembasicDO != null){
String[] itemStatus = businesstypeDO.getItemStatuses().split(",");
for (int i = 0; i < itemStatus.length; i++) {
if(itembasicDO.getStatus().equals(itemStatus[i])){
ifInStatus = true;
}
}
}
if(ifInStatus == true){
return true;
}else {
throw exception(ITEMBASIC_STATUS_AND_BUSINESSSTATUS_NOT_EQUALS);
}
}
//DBT---DBT2---LI 校验入库库位类型是否一致
public boolean ifInFromLocationType(String plocationCode, BusinesstypeDO businesstypeDO){
LocationDO locationDO = locationService.selectLocationExist(plocationCode);
boolean ifInLocationType = false;
if(locationDO != null){
String[] itemInLocationTypes = businesstypeDO.getInLocationTypes().split(",");
for (int i = 0; i < itemInLocationTypes.length; i++) {
if(locationDO.getType().equals(itemInLocationTypes[i])){
ifInLocationType = true;
}
}
}
if(ifInLocationType == true){
return true;
}else {
throw exception(FROM_LOCATION_TYPE_AND_BUSINESSTYPE_INLOCATION_TYPE_NOT_EQUALS);
}
}
//DBT---DBT2---LO 校验出库库位类型是否一致
public boolean ifInToLocationType(String plocationCode, BusinesstypeDO businesstypeDO){
LocationDO locationDO = locationService.selectLocationExist(plocationCode);
boolean ifOutLocationType = false;
if(locationDO != null){
String[] itemOutLocationTypes = businesstypeDO.getOutLocationTypes().split(",");
for (int i = 0; i < itemOutLocationTypes.length; i++) {
if(locationDO.getType().equals(itemOutLocationTypes[i])){
ifOutLocationType = true;
}
}
}
if(ifOutLocationType ==true){
return true;
}else {
throw exception(TO_LOCATION_TYPE_AND_BUSINESSTYPE_OUTLOCATION_TYPE_NOT_EQUALS);
}
}
//DBT---DBT2---ISI 校验入库状态是否一致
public boolean ifInInventoryStatuses(String pinventoryStatus, BusinesstypeDO businesstypeDO){
boolean ifInInventoryStatuses = false;
if(pinventoryStatus != null){
String[] inventoryStatuses = businesstypeDO.getInInventoryStatuses().split(",");
for (int i = 0; i < inventoryStatuses.length; i++) {
if(pinventoryStatus.equals(inventoryStatuses[i])){
ifInInventoryStatuses = true;
}
}
}if(ifInInventoryStatuses == true){
return true;
}else {
throw exception(INVENTORY_STATUS_AND_BUSINESS_IN_INVENTORY_STATUS_NOT_EQUALS_OR_NULL);
}
}
//DBT---DBT2---ISO 校验出库状态是否一致
public boolean ifOutInventoryStatuses(String pinventoryStatus, BusinesstypeDO businesstypeDO){
boolean ifOutInventoryStatuses = false;
if(pinventoryStatus != null){
String[] inventoryStatuses = businesstypeDO.getOutInventoryStatuses().split(",");
for (int i = 0; i < inventoryStatuses.length; i++) {
if(pinventoryStatus.equals(inventoryStatuses[i])){
ifOutInventoryStatuses = true;
}
}
}if(ifOutInventoryStatuses == true){
return true;
}else {
throw exception(INVENTORY_STATUS_AND_BUSINESS_OUT_INVENTORY_STATUS_NOT_EQUALS_OR_NULL);
}
}
}

Loading…
Cancel
Save