Browse Source

增加推荐库位接口。

master
刘忱 2 years ago
parent
commit
59f85e43bf
  1. 74
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereturnRequest/PurchasereturnRequestMainController.java
  2. 9
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereturnRequest/vo/PurchasereturnRequestImportVO.java
  3. 11
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereturnRequest/vo/PurchasereturnRequestMainBaseVO.java
  4. 13
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/purchasereturnRequest/PurchasereturnRequestDetailConvert.java
  5. 3
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/purchasereturnRequest/PurchasereturnRequestMainConvert.java
  6. 4
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inspectRequest/InspectRequestMainServiceImpl.java
  7. 14
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/location/LocationService.java
  8. 47
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/location/LocationServiceImpl.java
  9. 2
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereceiptRequest/PurchasereceiptRequestMainServiceImpl.java
  10. 4
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereturnRequest/PurchasereturnRequestMainServiceImpl.java
  11. 8
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/putawayRequest/PutawayRequestMainServiceImpl.java

74
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereturnRequest/PurchasereturnRequestMainController.java

@ -150,20 +150,14 @@ public class PurchasereturnRequestMainController {
// 手动创建导出 demo
List<PurchasereturnRequestImportVO> list = new ArrayList<>();
Map<Integer, String[]> mapDropDown = new HashMap<>();
String[] transferMode = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.TRANSFER_MODE);
mapDropDown.put(4, transferMode);
String[] locationType = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.LOCATION_TYPE);
mapDropDown.put(7, locationType);
mapDropDown.put(8, locationType);
String[] requestStatus = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.REQUEST_STATUS);
mapDropDown.put(18, requestStatus);
String[] inventoryStatus = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.INVENTORY_STATUS);
mapDropDown.put(31, inventoryStatus);
String[] packUnit = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.PACK_UNIT);
mapDropDown.put(36, packUnit);
String[] uom = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.UOM);
mapDropDown.put(38, uom);
mapDropDown.put(47, uom);
mapDropDown.put(9, uom);
String[] inventoryStatus = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.INVENTORY_STATUS);
mapDropDown.put(10, inventoryStatus);
String[] reason = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.PURCHASE_RETURN_REASON);
mapDropDown.put(12, reason);
String[] transferMode = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.PURCHASE_RETURN_REASON);
mapDropDown.put(14, transferMode);
ExcelUtils.write(response, "采购退货信息导入模板.xlsx", "采购退货信息列表", PurchasereturnRequestImportVO.class, list, mapDropDown);
}
@ -208,4 +202,58 @@ public class PurchasereturnRequestMainController {
return success(result);
}
@PutMapping("/close")
@Operation(summary = "关闭采购收货申请主")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('wms:purchasereturn-request-main:close')")
public CommonResult<Boolean> closePurchasereturnRequestMain(@RequestParam("id") Long id) {
Integer count = purchasereturnRequestMainService.closePurchasereturnRequestMain(id);
return success(count > 0);
}
@PutMapping("/reAdd")
@Operation(summary = "重新添加采购收货申请主")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('wms:purchasereturn-request-main:reAdd')")
public CommonResult<Boolean> openPurchasereturnRequestMain(@RequestParam("id") Long id) {
Integer count = purchasereturnRequestMainService.reAddPurchasereturnRequestMain(id);
return success(count > 0);
}
@PutMapping("/submit")
@Operation(summary = "提交采购退货申请主")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('wms:purchasereturn-request-main:submit')")
public CommonResult<Boolean> submitPurchasereturnRequestMain(@RequestParam("id") Long id) {
Integer count = purchasereturnRequestMainService.submitPurchasereturnRequestMain(id);
return success(count > 0);
}
@PutMapping("/agree")
@Operation(summary = "审批通过采购退货申请主")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('wms:purchasereturn-request-main:agree')")
public CommonResult<Boolean> agreePurchasereturnRequestMain(@RequestParam("id") Long id) {
Integer count = purchasereturnRequestMainService.agreePurchasereturnRequestMain(id);
return success(count > 0);
}
@PutMapping("/handle")
@Operation(summary = "处理采购退货申请主")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('wms:purchasereturn-request-main:handle')")
public CommonResult<Boolean> handlePurchasereturnRequestMain(@RequestParam("id") Long id) {
Integer count = purchasereturnRequestMainService.handlePurchasereturnRequestMain(id);
return success(count > 0);
}
@PutMapping("/refused")
@Operation(summary = "审批拒绝采购退货申请主")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('wms:purchasereturn-request-main:refused')")
public CommonResult<Boolean> abortPurchasereturnRequestMain(@RequestParam("id") Long id) {
Integer count = purchasereturnRequestMainService.refusedPurchasereturnRequestMain(id);
return success(count > 0);
}
}

9
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereturnRequest/vo/PurchasereturnRequestImportVO.java

@ -4,13 +4,13 @@ import com.alibaba.excel.annotation.ExcelProperty;
import com.win.framework.excel.core.annotations.DictFormat;
import com.win.framework.excel.core.convert.DictConvert;
import com.win.module.wms.enums.DictTypeConstants;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/**
@ -24,9 +24,6 @@ import java.math.BigDecimal;
@Accessors(chain = false) // 设置 chain = false,避免用户导入有问题
public class PurchasereturnRequestImportVO {
@ExcelProperty("单据号")
private String number;
@ExcelProperty("采购收货记录单号")
private String purchaseReceiptRecordNumber;
@ -78,4 +75,8 @@ public class PurchasereturnRequestImportVO {
@ExcelProperty("车牌号")
private String vehiclePlateNumber;
@ExcelProperty("截至时间")
private LocalDateTime dueTime;
}

11
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasereturnRequest/vo/PurchasereturnRequestMainBaseVO.java

@ -2,11 +2,12 @@ package com.win.module.wms.controller.purchasereturnRequest.vo;
import com.win.framework.excel.core.annotations.OnlyOne;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.time.LocalDateTime;
import javax.validation.constraints.*;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.constraints.NotNull;
import java.time.LocalDateTime;
import static com.win.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
/**
@ -15,9 +16,11 @@ import static com.win.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY
*/
@Data
public class PurchasereturnRequestMainBaseVO {
@Schema(description = "id", example = "id")
private Long id;
@OnlyOne
@Schema(description = "采购收货记录单号")
private String purchaseReceiptRecordNumber;
@ -46,7 +49,6 @@ public class PurchasereturnRequestMainBaseVO {
@Schema(description = "到仓库代码")
private String toWarehouseCode;
@OnlyOne
@Schema(description = "单据号")
private String number;
@ -69,6 +71,7 @@ public class PurchasereturnRequestMainBaseVO {
@Schema(description = "截止时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
@NotNull(message = "截止时间不能为空")
private LocalDateTime dueTime;
@Schema(description = "部门")

13
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/purchasereturnRequest/PurchasereturnRequestDetailConvert.java

@ -1,18 +1,15 @@
package com.win.module.wms.convert.purchasereturnRequest;
import java.util.*;
import com.win.framework.common.pojo.PageResult;
import com.win.module.wms.controller.purchaseclaimRequest.vo.PurchaseclaimRequestDetailCreateReqVO;
import com.win.module.wms.controller.purchasereturnRequest.vo.*;
import com.win.module.wms.dal.dataobject.purchaseclaimRequest.PurchaseclaimRequestDetailDO;
import com.win.module.wms.dal.dataobject.purchasereturnRequest.PurchasereturnRequestDetailDO;
import com.win.module.wms.dal.dataobject.purchasereturnRequest.PurchasereturnRequestMainDO;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.Mappings;
import org.mapstruct.factory.Mappers;
import com.win.module.wms.dal.dataobject.purchasereturnRequest.PurchasereturnRequestDetailDO;
import java.util.List;
/**
* 采购退货申请子 Convert
@ -52,10 +49,6 @@ public interface PurchasereturnRequestDetailConvert {
})
PurchasereturnRequestDetailExcelVO convert(PurchasereturnRequestMainDO mainDO, PurchasereturnRequestDetailDO detailDO);
@Mappings({
@Mapping(source = "mainVo.number", target = "number"),
})
PurchasereturnRequestImportErrorVO convert(PurchasereturnRequestMainCreateReqVO mainVo, PurchasereturnRequestDetailCreateReqVO detailVo);
}

3
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/purchasereturnRequest/PurchasereturnRequestMainConvert.java

@ -33,9 +33,6 @@ public interface PurchasereturnRequestMainConvert {
List<PurchasereturnRequestMainExcelVO> convertList02(List<PurchasereturnRequestMainDO> list);
@Mappings({
@Mapping(source = "mainVo.number", target = "number"),
})
PurchasereturnRequestImportErrorVO convert(PurchasereturnRequestMainCreateReqVO mainVo, PurchasereturnRequestDetailDO detailDo);
@Mappings({

4
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inspectRequest/InspectRequestMainServiceImpl.java

@ -467,9 +467,9 @@ public class InspectRequestMainServiceImpl implements InspectRequestMainService
if (inspect == null) {
throw new UtilException("未找到该策略");
}
JSONArray configuration = JSONUtil.parseArray(inspect.getConfiguration());
JSONArray condition = JSONUtil.parseArray(inspect.getCondition());
HashMap<String, String> mapRule = new HashMap<>();
for (Object o : configuration) {
for (Object o : condition) {
JSONObject entries = JSONUtil.parseObj(o);
mapRule.put(entries.get("ParamCode").toString(), entries.get("Value").toString());
}

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

@ -3,10 +3,10 @@ package com.win.module.wms.service.location;
import com.win.framework.common.pojo.CustomConditions;
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.location.LocationDO;
import javax.validation.Valid;
import java.util.Collection;
import java.util.List;
/**
@ -87,5 +87,15 @@ public interface LocationService {
* @param pcode
* @return
*/
public LocationDO selectLocation(String pcode);
LocationDO selectLocation(String pcode);
/**
* 上架推荐策略
* @param ruleRespVO 上架策略
* @param packingNumber 包装号
* @param itemCode 物料编码
* @param batch 批次
* @return
*/
LocationDO inspectLocation(RuleRespVO ruleRespVO, String packingNumber, String itemCode, String batch);
}

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

@ -2,6 +2,8 @@ package com.win.module.wms.service.location;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.google.common.annotations.VisibleForTesting;
import com.win.framework.common.exception.ServiceException;
@ -9,6 +11,7 @@ import com.win.framework.common.pojo.CustomConditions;
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.location.LocationDO;
import com.win.module.wms.dal.mysql.balance.BalanceMapper;
@ -20,9 +23,7 @@ import org.springframework.transaction.interceptor.TransactionAspectSupport;
import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception;
@ -287,13 +288,51 @@ public class LocationServiceImpl implements LocationService {
//调用公共方法查询库位信息
@Override
public LocationDO selectLocation(String pcode) {
QueryWrapper queryWrapper = new QueryWrapper();
QueryWrapper<LocationDO> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("code",pcode);
LocationDO locationDO = locationMapper.selectOne(queryWrapper);
if(locationDO != null && "TRUE".equals(locationDO.getAvailable())){
return locationDO;
}else {
} else {
throw exception(LOCATION_NOT_EXISTS);
}
}
//{"WarehouseCode":"W1","AreaCode":"A1","LocationGroupCode":"LG1","LocationCode":"H01","EmptyLocationFirst":"FALSE","NotEmptyLocationFirst":"FALSE",
// "EnableMixItem":"TRUE","EnableMixLot":"TRUE","EnableMixStatus":"TRUE"}
@Override
public LocationDO inspectLocation(RuleRespVO ruleRespVO, String packingNumber, String itemCode, String batch) {
JSONObject jsonObject = JSONUtil.parseObj(ruleRespVO.getConfiguration());
Object locationCode = jsonObject.get("LocationCode");
//设置了库位直接返回
if(locationCode != null) {
return this.selectLocation(String.valueOf(locationCode));
}
QueryWrapper<LocationDO> queryWrapper = new QueryWrapper<>();
List<String> locationTypeList = new ArrayList<>();
locationTypeList.add("RAW");
locationTypeList.add("SEMI");
locationTypeList.add("FG");
queryWrapper.in("`type`", locationTypeList);
Object warehouseCode = jsonObject.get("WarehouseCode");
if(warehouseCode != null) {
queryWrapper.eq("warehouse_code", warehouseCode);
}
Object areaCode = jsonObject.get("AreaCode");
if(areaCode != null) {
queryWrapper.eq("area_code", areaCode);
}
Object locationGroupCode = jsonObject.get("LocationGroupCode");
if(locationGroupCode != null) {
queryWrapper.eq("location_group_code", locationGroupCode);
}
String emptyLocationFirst = String.valueOf(jsonObject.get("EmptyLocationFirst"));
if("TRUE".equals(emptyLocationFirst)) {
queryWrapper.notExists("SELECT id FROM transaction_balance WHERE packing_number=? AND item_code=? AND batch=? AND QTY > 0", packingNumber, itemCode,batch);
} else {
queryWrapper.exists("SELECT id FROM transaction_balance WHERE packing_number=? AND item_code=? AND batch=?", packingNumber, itemCode,batch);
}
queryWrapper.last("LIMIT 1");
return locationMapper.selectOne(queryWrapper);
}
}

2
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereceiptRequest/PurchasereceiptRequestMainServiceImpl.java

@ -609,7 +609,7 @@ public class PurchasereceiptRequestMainServiceImpl implements PurchasereceiptReq
private void validateSupplier(PurchasereceiptRequestMainDO mainDo) {
supplierService.selectSupplier(mainDo.getSupplierCode());
RuleRespVO ruleRespVO = ruleService.deliverGoods(null, mainDo.getSupplierCode(), null);
JSONArray conditionArray = JSONUtil.parseArray(ruleRespVO.getConfiguration());
JSONArray conditionArray = JSONUtil.parseArray(ruleRespVO.getCondition());
for (int i = 0; i < conditionArray.size(); i++) {
JSONObject conditionObject = conditionArray.getJSONObject(i);
if ("WarehouseCode".equals(conditionObject.get("ParamCode"))) {

4
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereturnRequest/PurchasereturnRequestMainServiceImpl.java

@ -343,6 +343,7 @@ public class PurchasereturnRequestMainServiceImpl implements PurchasereturnReque
purchasereturnJobMainDO.setStatus(JobStatusEnum.PENDING.getCode());
String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_RECEIPT_JOB.getCode());
purchasereturnJobMainDO.setNumber(number);
purchasereturnJobMainDO.setRequestDueTime(mainDO.getRequestTime());
purchasereturnJobMainDO.setId(null);
purchasereturnJobMainMapper.insert(purchasereturnJobMainDO);
List<ExpectoutCreateReqVO> expectoutCreateReqVOList = new ArrayList<>();
@ -353,6 +354,9 @@ public class PurchasereturnRequestMainServiceImpl implements PurchasereturnReque
purchasereturnJobDetailDO.setNumber(number);
purchasereturnJobDetailDO.setId(null);
purchasereturnJobDetailDO.setMasterId(purchasereturnJobMainDO.getId());
purchasereturnJobDetailDO.setFromLocationCode(purchasereturnRequestDetailDO.getFromLocationCode());
purchasereturnJobDetailDO.setToOwnerCode(purchasereturnRequestDetailDO.getToOwnerCode());
purchasereturnJobDetailDO.setToLocationCode(purchasereturnRequestDetailDO.getToLocationCode());
purchasereturnJobDetailDOList.add(purchasereturnJobDetailDO);
//预计出
ExpectoutCreateReqVO expectoutCreateReqVO = new ExpectoutCreateReqVO();

8
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/putawayRequest/PutawayRequestMainServiceImpl.java

@ -14,6 +14,7 @@ import com.win.module.wms.controller.expectout.vo.ExpectoutCreateReqVO;
import com.win.module.wms.controller.putawayRecord.vo.PutawayRecordDetailCreateReqVO;
import com.win.module.wms.controller.putawayRecord.vo.PutawayRecordMainCreateReqVO;
import com.win.module.wms.controller.putawayRequest.vo.*;
import com.win.module.wms.controller.rule.vo.RuleRespVO;
import com.win.module.wms.convert.putawayJob.PutawayJobDetailConvert;
import com.win.module.wms.convert.putawayJob.PutawayJobMainConvert;
import com.win.module.wms.convert.putawayRecord.PutawayRecordDetailConvert;
@ -45,6 +46,7 @@ import com.win.module.wms.service.itembasic.ItembasicService;
import com.win.module.wms.service.location.LocationService;
import com.win.module.wms.service.purchase.PurchaseMainService;
import com.win.module.wms.service.requestsetting.RequestsettingService;
import com.win.module.wms.service.rule.RuleService;
import com.win.module.wms.util.JobUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
@ -101,6 +103,8 @@ public class PutawayRequestMainServiceImpl implements PutawayRequestMainService
private PutawayRecordDetailMapper putawayRecordDetailMapper;
@Resource
private ExpectoutService expectoutService;
@Resource
private RuleService ruleService;
@Override
@Transactional
@ -342,6 +346,10 @@ public class PutawayRequestMainServiceImpl implements PutawayRequestMainService
List<PutawayJobDetailDO> putawayJobDetailDOList = new ArrayList<>();
for(PutawayRequestDetailDO putawayRequestDetailDO : detailDOList) {
PutawayJobDetailDO putawayJobDetailDO = PutawayJobDetailConvert.INSTANCE.convert(putawayRequestDetailDO);
RuleRespVO ruleRespVO = ruleService.grounding(null, null, null, null, null, null,
putawayJobDetailDO.getItemCode(), putawayJobDetailDO.getInventoryStatus(), null, null, null, null, null);
LocationDO locationDO = locationService.inspectLocation(ruleRespVO, putawayJobDetailDO.getPackingNumber(), putawayJobDetailDO.getItemCode(), putawayJobDetailDO.getItemCode());
putawayJobDetailDO.setToLocationCode(locationDO.getCode());
putawayJobDetailDO.setNumber(number);
putawayJobDetailDO.setMasterId(putawayJobDetailDO.getId());
putawayJobDetailDOList.add(putawayJobDetailDO);

Loading…
Cancel
Save