Browse Source

Merge remote-tracking branch 'origin/master'

master
刘忱 2 years ago
parent
commit
e31cc4f0dc
  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. 31
      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. 5
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/location/LocationService.java
  11. 16
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/location/LocationServiceImpl.java
  12. 2
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/production/ProductionMainServiceImpl.java
  13. 14
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionreceiptJob/ProductionreceiptJobMainServiceImpl.java
  14. 497
      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;

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

@ -1,6 +1,7 @@
package com.win.module.wms.controller.location;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.win.framework.common.exception.ErrorCode;
import com.win.framework.common.pojo.CommonResult;
import com.win.framework.common.pojo.PageResult;
import com.win.framework.dict.core.util.DictFrameworkUtils;
@ -9,11 +10,17 @@ 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.location.vo.*;
import com.win.module.wms.controller.rule.vo.RuleRespVO;
import com.win.module.wms.convert.location.LocationConvert;
import com.win.module.wms.dal.dataobject.balance.BalanceDO;
import com.win.module.wms.dal.dataobject.expectout.ExpectoutDO;
import com.win.module.wms.dal.dataobject.location.LocationDO;
import com.win.module.wms.dal.mysql.balance.BalanceMapper;
import com.win.module.wms.dal.mysql.expectout.ExpectoutMapper;
import com.win.module.wms.dal.mysql.location.LocationMapper;
import com.win.module.wms.enums.DictTypeConstants;
import com.win.module.wms.service.location.LocationService;
import com.win.module.wms.service.rule.RuleService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Parameters;
@ -27,6 +34,7 @@ import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.io.IOException;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.time.ZoneOffset;
import java.util.*;
@ -49,6 +57,14 @@ public class LocationController {
@Resource
private AdminUserApi userApi;
@Resource
private BalanceMapper balanceMapper;
@Resource
private ExpectoutMapper expectoutMapper ;
@Resource
private RuleService ruleService;
@PostMapping("/create")
@Operation(summary = "创建库位")
@PreAuthorize("@ss.hasPermission('wms:location:create')")
@ -120,6 +136,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);
@ -160,10 +182,7 @@ public class LocationController {
}
}
//库位号有效,状态正确
@GetMapping("/iii")
public LocationDO selectLocationExist(String locationCode) {
LocationDO locationDO = selectLocation(locationCode);
return locationDO;
}
}

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

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

5
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/location/LocationService.java

@ -3,9 +3,11 @@ package com.win.module.wms.service.location;
import com.win.framework.common.pojo.PageResult;
import com.win.module.wms.controller.location.vo.*;
import com.win.module.wms.controller.rule.vo.RuleRespVO;
import com.win.module.wms.dal.dataobject.balance.BalanceDO;
import com.win.module.wms.dal.dataobject.location.LocationDO;
import javax.validation.Valid;
import java.math.BigDecimal;
import java.util.Collection;
import java.util.List;
@ -97,5 +99,8 @@ public interface LocationService {
* @param pitemCode 物品代码
* @return 上架策略信息
*/
public RuleRespVO selectLocationAndModRelation(String pitemCode);
}

16
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/location/LocationServiceImpl.java

@ -4,21 +4,28 @@ import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.google.common.annotations.VisibleForTesting;
import com.win.framework.common.exception.ErrorCode;
import com.win.framework.common.exception.ServiceException;
import com.win.framework.common.pojo.PageResult;
import com.win.framework.datapermission.core.util.DataPermissionUtils;
import com.win.module.wms.controller.location.vo.*;
import com.win.module.wms.controller.rule.vo.RuleRespVO;
import com.win.module.wms.convert.location.LocationConvert;
import com.win.module.wms.dal.dataobject.balance.BalanceDO;
import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO;
import com.win.module.wms.dal.dataobject.location.LocationDO;
import com.win.module.wms.dal.dataobject.expectout.ExpectoutDO;
import com.win.module.wms.dal.mysql.balance.BalanceMapper;
import com.win.module.wms.dal.mysql.expectout.ExpectoutMapper;
import com.win.module.wms.dal.mysql.location.LocationMapper;
import com.win.module.wms.service.rule.RuleService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
@ -37,9 +44,16 @@ public class LocationServiceImpl implements LocationService {
@Resource
private LocationMapper locationMapper;
@Resource
private BalanceMapper balanceMapper;
@Resource
private ExpectoutMapper expectoutMapper ;
@Resource
private RuleService ruleService;
@Override
public Long createLocation(LocationCreateReqVO createReqVO) {
validateLocationForCreateOrUpdate(createReqVO.getId(),createReqVO.getCode(),createReqVO.getAreaCode(),createReqVO.getWarehouseCode()
@ -247,4 +261,6 @@ public class LocationServiceImpl implements LocationService {
throw exception(LOCATION_ITEMCODE_AND_LOCATIONCODE_NOT_EXISTS);
}
}
}

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);
}
}
}

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

@ -3,18 +3,52 @@ 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.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.win.framework.common.exception.ErrorCode;
import com.win.module.wms.controller.rule.vo.RuleRespVO;
import com.win.module.wms.dal.dataobject.balance.BalanceDO;
import com.win.module.wms.dal.dataobject.businesstype.BusinesstypeDO;
import com.win.module.wms.dal.dataobject.expectout.ExpectoutDO;
import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO;
import com.win.module.wms.dal.dataobject.location.LocationDO;
import com.win.module.wms.dal.mysql.balance.BalanceMapper;
import com.win.module.wms.dal.mysql.expectout.ExpectoutMapper;
import com.win.module.wms.dal.mysql.location.LocationMapper;
import com.win.module.wms.service.itembasic.ItembasicService;
import com.win.module.wms.service.location.LocationService;
import com.win.module.wms.service.rule.RuleService;
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;
@Resource
private LocationMapper locationMapper;
@Resource
private BalanceMapper balanceMapper;
@Resource
private ExpectoutMapper expectoutMapper ;
@Resource
private RuleService ruleService;
/**
* 解析JSON串,返回两个对象的集合
*
@ -87,5 +121,468 @@ 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);
}
}
//调用公共方法查询库位信息
public LocationDO selectLocation(String pcode) {
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.eq("code",pcode);
LocationDO locationDO = locationMapper.selectOne(queryWrapper);
if(locationDO != null && "TRUE".equals(locationDO.getAvailable())){
return locationDO;
}else {
throw exception(LOCATION_NOT_EXISTS);
}
}
public LocationDO selectLocationExist(String locationCode) {
LocationDO locationDO = selectLocation(locationCode);
return locationDO;
}
public RuleRespVO selectLocationStrategyRule(String warehouseCode, String areaCode, String locationGroupCode, String plocationCode) {
RuleRespVO ruleRespVO = ruleService.warehouseStorage(warehouseCode,areaCode,locationGroupCode,plocationCode);
return ruleRespVO;
}
public RuleRespVO selectLocationAndModRelation(String pitemCode) {
RuleRespVO grounding = ruleService.grounding(null, null, null, null, null, null, pitemCode, null, null, null, null, null, null);
if(grounding != null){
return grounding;
}else {
throw exception(LOCATION_ITEMCODE_AND_LOCATIONCODE_NOT_EXISTS);
}
}
//跟据管理模式查詢數量
//按數量查找 TB2-BY_QUANTITY
public List<BalanceDO> selectnumber(String itemcode, String inventorystatus, String locationcode){
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.eq("item_code",itemcode);
queryWrapper.eq("inventory_status",inventorystatus);
queryWrapper.eq("location_code",locationcode);
List<BalanceDO> balanceDO = balanceMapper.selectList(queryWrapper);
if(!balanceDO.isEmpty()){
return balanceDO;
}
else{
throw exception(new ErrorCode(123,"物料号" + itemcode + "庫存狀態" + inventorystatus + "在"+ locationcode +"庫位中未查找到库存记录" ));
}
}
//按批次查找 TB2-BY_BATCH
public List<BalanceDO> selectbatch(String itemcode, String batch ,String inventorystatus,String locationcode) {
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.eq("item_code",itemcode);
queryWrapper.eq("batch",batch);
queryWrapper.eq("inventory_status",inventorystatus);
queryWrapper.eq("location_code",locationcode);
List<BalanceDO> balanceDO = balanceMapper.selectList(queryWrapper);
if(!balanceDO.isEmpty()){
return balanceDO;
}
else{
throw exception(new ErrorCode(124,"物料号" + itemcode +"批次"+ batch + "庫存狀態" + inventorystatus + "在"+ locationcode +"庫位中未查找到库存记录" ));
}
}
//按包裝查找 TB2-BY_PACKGING
public List<BalanceDO> selectpackaging(String itemcode, String packingnumber, String batch ,String inventorystatus,String locationcode) {
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.eq("item_code",itemcode);
queryWrapper.eq("packing_number",packingnumber);
queryWrapper.eq("batch",batch);
queryWrapper.eq("inventory_status",inventorystatus);
queryWrapper.eq("location_code",locationcode);
List<BalanceDO> balanceDO = balanceMapper.selectList(queryWrapper);
if(!balanceDO.isEmpty()){
return balanceDO;
}
else{
throw exception(new ErrorCode(128,"物料号" + itemcode + "箱码" +packingnumber + "批次"+ batch + "庫存狀態" + inventorystatus + "在"+ locationcode +"庫位中未查找到库存记录" ));
}
}
//按唯一码查找 TB2-BY_UNIQUE_ID
public List<BalanceDO> selectuniqueid(String packingnumber,String locationcode , String inventorystatus){
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.eq("packing_number",packingnumber);
queryWrapper.eq("inventory_status",inventorystatus);
queryWrapper.eq("location_code",locationcode);
List<BalanceDO> balanceDO = balanceMapper.selectList(queryWrapper);
if(!balanceDO.isEmpty()){
return balanceDO;
}
else{
throw exception(new ErrorCode(129,"唯一码" + packingnumber + "庫存狀態" + inventorystatus + "在"+ locationcode +"庫位中未查找到库存记录" ));
}
}
// TB1 查询库存
public List<BalanceDO> selectlocation (String itemcode, String packingnumber, String batch, String locationcode, String status ){
RuleRespVO managementtRule = ruleService.management( null, null,null,null,null, null,itemcode,null,null,
null, locationcode,null,null);
List<BalanceDO> balanceDO = null;
if( "{\"ManagementPrecision\":\"BY_QUANTITY\"}".equals( managementtRule.getConfiguration())){
balanceDO = selectnumber(itemcode, status, locationcode );
}
else if("{\"ManagementPrecision\":\"BY_BATCH\"}".equals(managementtRule.getConfiguration())){
balanceDO = selectbatch(itemcode,batch,status,locationcode);
}
else if("{\"ManagementPrecision\":\"BY_PACKAGING\"}".equals(managementtRule.getConfiguration())) {
balanceDO = selectpackaging(itemcode,packingnumber, batch, status, locationcode);
}
else if("{\"ManagementPrecision\":\"BY_UNIQUE_ID\"}".equals(managementtRule.getConfiguration())) {
balanceDO = selectuniqueid(packingnumber, locationcode,status);
}
return balanceDO;
}
//按數量查找 BY_BATCH
public List<ExpectoutDO> selectnumbernew(String itemcode, String inventorystatus, String locationcode ){
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.eq("item_code",itemcode);
queryWrapper.eq("inventory_status",inventorystatus);
queryWrapper.eq("location_code",locationcode);
List<ExpectoutDO> expectoutDO = expectoutMapper.selectList(queryWrapper);
if(!expectoutDO.isEmpty()){
return expectoutDO;
}
else{
return null;
}
}
//按批次查詢 BY_BATCH
public List<ExpectoutDO> selectbatchnew(String itemcode,String batch ,String inventorystatus,String locationcode ){
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.eq("item_code",itemcode);
queryWrapper.eq("batch",batch);
queryWrapper.eq("inventory_status",inventorystatus);
queryWrapper.eq("location_code",locationcode);
List<ExpectoutDO> expectoutDO = expectoutMapper.selectList(queryWrapper);
if(!expectoutDO.isEmpty()){
return expectoutDO;
}
else{
return null;
}
}
//按包裝 BY_PACKAGING
public List<ExpectoutDO> selectpackingnew(String itemcode, String packingnumber ,String batch ,String inventorystatus,String locationcode ){
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.eq("item_code",itemcode);
queryWrapper.eq("batch",batch);
queryWrapper.eq("packing_number",packingnumber);
queryWrapper.eq("inventory_status",inventorystatus);
queryWrapper.eq("location_code",locationcode);
List<ExpectoutDO> expectoutDO = expectoutMapper.selectList(queryWrapper);
if(!expectoutDO.isEmpty()){
return expectoutDO;
}
else{
return null;
}
}
//按唯一码查詢 BY_UNIQUE_ID
public List<ExpectoutDO> selectuniqeidnew( String packingnumber ,String locationcode ,String inventorystatus ){
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.eq("packing_number",packingnumber);
queryWrapper.eq("inventory_status",inventorystatus);
queryWrapper.eq("location_code",locationcode);
List<ExpectoutDO> expectoutDO = expectoutMapper.selectList(queryWrapper);
if(!expectoutDO.isEmpty()){
return expectoutDO;
}
else{
return null;
}
}
//跟据管理模式查询预计库存 TEO1
public List<ExpectoutDO> selectlocationnew (String itemcode, String packingnumber, String batch, String locationcode, String status ){
RuleRespVO managementtRule = ruleService.management( null, null,null,null,null, null,itemcode,null,null,
null, locationcode,null,null);
List<ExpectoutDO> expectoutDO = null;
if( "{\"ManagementPrecision\":\"BY_QUANTITY\"}".equals( managementtRule.getConfiguration())){
expectoutDO = selectnumbernew(itemcode, status, locationcode );
}
else if("{\"ManagementPrecision\":\"BY_BATCH\"}".equals(managementtRule.getConfiguration())){
expectoutDO = selectbatchnew(itemcode,batch,status,locationcode);
}
else if("{\"ManagementPrecision\":\"BY_PACKAGING\"}".equals(managementtRule.getConfiguration())) {
expectoutDO = selectpackingnew(itemcode,packingnumber, batch, status, locationcode);
}
else if("{\"ManagementPrecision\":\"BY_UNIQUE_ID\"}".equals(managementtRule.getConfiguration())) {
expectoutDO = selectuniqeidnew(packingnumber, locationcode,status);
}
return expectoutDO;
}
//查询可用库存 TB3
public BigDecimal CountLocaltion(String itemcode,String packingnumber,String batch,String locationcode,String status ){
List<ExpectoutDO> expectoutDO = selectlocationnew(itemcode,packingnumber,batch,locationcode,status);
List<BalanceDO> balanceDO = selectlocation(itemcode,packingnumber,batch,locationcode,status);
//double sum = expectoutDO.stream().mapToDouble(ExpectoutDO::getQty).sum();
BigDecimal esum = BigDecimal.valueOf(expectoutDO.stream().mapToDouble(expectoutDO1 -> expectoutDO1.getQty().doubleValue()).sum());
BigDecimal bsum =BigDecimal.valueOf(balanceDO.stream().mapToDouble(balanceDO1 -> balanceDO1.getQty().doubleValue()).sum());
BigDecimal sum = bsum.subtract(esum);
return sum;
}
//有无库存效验
public String LocaltionExist(String itemcode, String packingnumber,String batch,String locationcode,String status,BigDecimal requstqty){
BigDecimal enableqty = CountLocaltion(itemcode,packingnumber,batch,locationcode,status);
if(requstqty.compareTo(enableqty) > 0){
throw exception(new ErrorCode(1256,"请求数量" + requstqty + "大于库存数量" + enableqty));
}
else{
return "成功";
}
}
//查询储存容量
public String selectlocationstrategy(String itemcode, String locationcode){
RuleRespVO storagecapacityrule = ruleService.storageCapacity(null,null,itemcode,null,null,null,locationcode);
String[] StorageQty = storagecapacityrule.getConfiguration().split(",");
String[] StorageQty1 = StorageQty[1].split(":");
String StorageQty2 = StorageQty1[1];
if("-1".equals(StorageQty2)){
return "不可以存放";
}
return "可以存放";
}
//库存不应该存在
public List<BalanceDO> locationNoExist(String itemcode,String packingnumber,String locationcode,String inventorystatus){
RuleRespVO managementtRule = ruleService.management( null, null,null,null,null, null,itemcode,null,null,
null, locationcode,null,null);
List<BalanceDO> balanceDO = null;
if("{\"ManagementPrecision\":\"BY_UNIQUE_ID\"}".equals(managementtRule.getConfiguration())){
balanceDO = selectuniqueid(packingnumber, locationcode,inventorystatus);
return balanceDO;
}
else{
throw exception(new ErrorCode(1256,"校验通过" ));
}
}
//查询库位BQ-QL
public String selectlocation(String code){
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.eq("code",code);
LocationDO locationDO = locationMapper.selectOne(queryWrapper);
if(locationDO==null&&"TRUE".equals(locationDO.getAvailable())){
return "TURE";
}
else{
return "FALSE";
}
}
//从库位未被其他任务占用,有可用库存
public String locationExistnew(String itemcode, String packingnumber,String batch,String fromlocationcode,String status,BigDecimal requstqty ){
if(fromlocationcode.isEmpty()){
return "不需要其他校验";
}
String Yesorno = selectlocation(fromlocationcode);
if("TURE".equals(Yesorno)){
String END = LocaltionExist(itemcode,packingnumber,batch,fromlocationcode,status,requstqty);
return END;
}
else{
return "效验通过";
}
}
}

Loading…
Cancel
Save