feat(wms): 新增普通物料收货功能
- 新增 NormalPGIController 和 NormalPGIControllerService 类实现普通物料收货相关功能 - 添加 PDAOrderVO、PDAOrderItemVO等数据传输对象 - 实现送货单列表、送货单详情、PDA 扫码收货等功能接口 - 新增 SAPCommonService 类处理与 SAP 系统的交互 - 修改 WmsSrmOrder 和 WmsSrmOrderItem 实体类,增加相关字段- 更新 WmsSrmOrderItemMapper 和 XML 文件,添加获取送货单详情的 SQL 查询
This commit is contained in:
parent
7f4e760772
commit
8352b38351
|
|
@ -32,3 +32,4 @@ build/
|
||||||
### VS Code ###
|
### VS Code ###
|
||||||
.vscode/
|
.vscode/
|
||||||
/dev_jco_rfc.log
|
/dev_jco_rfc.log
|
||||||
|
logs
|
||||||
|
|
|
||||||
|
|
@ -2,27 +2,84 @@ package com.nflg.wms.admin.controller;
|
||||||
|
|
||||||
/* * 普通物料收货单*/
|
/* * 普通物料收货单*/
|
||||||
|
|
||||||
|
import com.nflg.wms.admin.service.NormalPGIControllerService;
|
||||||
|
import com.nflg.wms.common.constant.STATE;
|
||||||
|
import com.nflg.wms.common.pojo.ApiResult;
|
||||||
|
import com.nflg.wms.common.pojo.PageData;
|
||||||
|
import com.nflg.wms.common.pojo.qo.SRMOrderSearchQO;
|
||||||
|
import com.nflg.wms.common.pojo.qo.SrmMaterialReceiptQO;
|
||||||
|
import com.nflg.wms.common.pojo.vo.*;
|
||||||
|
import com.nflg.wms.common.util.UserUtil;
|
||||||
|
import com.nflg.wms.repository.entity.WmsSrmMaterialReceiptItem;
|
||||||
|
import com.nflg.wms.repository.service.IWmsSrmMaterialReceiptItemService;
|
||||||
|
import com.nflg.wms.repository.service.IWmsSrmOrderItemService;
|
||||||
|
import com.nflg.wms.repository.service.IWmsSrmOrderService;
|
||||||
import com.nflg.wms.starter.BaseController;
|
import com.nflg.wms.starter.BaseController;
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import com.nflg.wms.starter.annotation.ApiMark;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import jakarta.annotation.Resource;
|
||||||
|
import jakarta.validation.Valid;
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
@RestController
|
@RestController
|
||||||
@RequestMapping("/pgi/normal")
|
@RequestMapping("/pgi/normal")
|
||||||
public class NormalPGIController extends BaseController {
|
public class NormalPGIController extends BaseController {
|
||||||
|
@Resource
|
||||||
|
private IWmsSrmOrderService wmsSrmOrderService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private IWmsSrmOrderItemService wmsSrmOrderItemService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private NormalPGIControllerService normalPGIControllerService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private IWmsSrmMaterialReceiptItemService wmsSrmMaterialReceiptItemService;
|
||||||
|
|
||||||
// @RequestMapping("search")
|
|
||||||
|
|
||||||
//收货单分页
|
//收货单分页
|
||||||
|
@PostMapping("search")
|
||||||
|
@ApiMark(moduleName = "送货单管理", apiName = "送货单列表")
|
||||||
|
public ApiResult<PageData<SrmOrderVO>> search(@Valid @RequestBody SRMOrderSearchQO request) {
|
||||||
|
return ApiResult.success(wmsSrmOrderService.search(request));
|
||||||
|
}
|
||||||
|
|
||||||
//收货单详情
|
//收货单详情
|
||||||
|
@GetMapping("getOrderItem")
|
||||||
|
@ApiMark(moduleName = "送货单管理", apiName = "获取送货单详情")
|
||||||
|
public ApiResult<SRMOrderItemVO> getOrderItem(@RequestParam Long orderId) {
|
||||||
|
return ApiResult.success(wmsSrmOrderItemService.getOrderItem(orderId));
|
||||||
|
}
|
||||||
|
|
||||||
//一键收货
|
|
||||||
|
|
||||||
//PDA 扫码收货
|
//PDA 扫码获取收货信息
|
||||||
|
@GetMapping("getOrderItemByOrderNo")
|
||||||
|
@ApiMark(moduleName = "送货单管理", apiName = "PDA扫描送货单号获取送货单详情")
|
||||||
|
public ApiResult<PDAOrderVO> getOrderItemByOrderNo(@RequestParam String orderNo) {
|
||||||
|
try {
|
||||||
|
PDAOrderVO pdaOrderVO = normalPGIControllerService.getOrderItemByOrderNo(orderNo);
|
||||||
|
return ApiResult.success(pdaOrderVO);
|
||||||
|
} catch (Exception e) {
|
||||||
|
return ApiResult.error(STATE.NoOrderData, "获取送货单详情失败", null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// 查看扫码记录
|
// 查看扫码记录
|
||||||
|
@GetMapping("getScanCodes")
|
||||||
|
@ApiMark(moduleName = "送货单管理", apiName = "获取扫码的详情信息")
|
||||||
|
public ApiResult<List<WmsSrmMaterialReceiptItem>> getScanCodes(@RequestParam String orderItemId) {
|
||||||
|
return ApiResult.success(wmsSrmMaterialReceiptItemService.lambdaQuery().eq(WmsSrmMaterialReceiptItem::getOrderItemId, orderItemId).list());
|
||||||
|
}
|
||||||
|
|
||||||
//收货确认
|
//收货确认
|
||||||
|
@PostMapping("takeDelivery")
|
||||||
|
@ApiMark(moduleName = "送货单管理", apiName = "收货确认")
|
||||||
|
public ApiResult<Void> takeDelivery(@Valid @RequestBody SrmMaterialReceiptQO request) {
|
||||||
|
//UserUtil
|
||||||
|
// return ApiResult.success(wmsSrmMaterialReceiptService.takeDelivery(request));
|
||||||
|
}
|
||||||
|
|
||||||
|
//一键收货
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -21,6 +21,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
|
import java.time.format.DateTimeFormatter;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
@ -57,6 +58,8 @@ public class SRMController extends BaseController {
|
||||||
srmOrderService.removeById(order);
|
srmOrderService.removeById(order);
|
||||||
srmOrderItemService.remove(new LambdaQueryWrapper<WmsSrmOrderItem>().eq(WmsSrmOrderItem::getOrderId, order.getId()));
|
srmOrderItemService.remove(new LambdaQueryWrapper<WmsSrmOrderItem>().eq(WmsSrmOrderItem::getOrderId, order.getId()));
|
||||||
} else {
|
} else {
|
||||||
|
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
||||||
|
LocalDateTime deliveryDate = LocalDateTime.parse(request.getDeliveryNoteDate(), formatter);
|
||||||
order = new WmsSrmOrder()
|
order = new WmsSrmOrder()
|
||||||
.setId(IdUtil.getSnowflakeNextId())
|
.setId(IdUtil.getSnowflakeNextId())
|
||||||
.setIuCode(request.getIuCode())
|
.setIuCode(request.getIuCode())
|
||||||
|
|
@ -65,6 +68,8 @@ public class SRMController extends BaseController {
|
||||||
.setNoteNum(request.getNoteNum())
|
.setNoteNum(request.getNoteNum())
|
||||||
.setWaybillNum(request.getWaybillNum())
|
.setWaybillNum(request.getWaybillNum())
|
||||||
.setPurchaseGroup(request.getPurchaseGroup())
|
.setPurchaseGroup(request.getPurchaseGroup())
|
||||||
|
.setOuCode(request.getOuCode())
|
||||||
|
.setDeliveryNoteDate(deliveryDate)
|
||||||
.setCreateTime(LocalDateTime.now());
|
.setCreateTime(LocalDateTime.now());
|
||||||
srmOrderService.save(order);
|
srmOrderService.save(order);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -18,4 +18,95 @@ public class SAPMaterialInfoInOrderDTO {
|
||||||
* 仓库编号
|
* 仓库编号
|
||||||
*/
|
*/
|
||||||
private String warehouseNo;
|
private String warehouseNo;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 采购凭证号
|
||||||
|
*/
|
||||||
|
private String ebeln;
|
||||||
|
/**
|
||||||
|
* 采购凭证行项目
|
||||||
|
*/
|
||||||
|
private String ebelp;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 物料号
|
||||||
|
*/
|
||||||
|
private String matnr;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 物料描述
|
||||||
|
*/
|
||||||
|
private String maktx;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 标志:关键部件
|
||||||
|
*/
|
||||||
|
private String kzkri;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 采购订单数量
|
||||||
|
*/
|
||||||
|
private BigDecimal menge;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 收货数量
|
||||||
|
*/
|
||||||
|
|
||||||
|
private BigDecimal wemng;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 单位
|
||||||
|
*/
|
||||||
|
private String meins;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 物料组
|
||||||
|
*/
|
||||||
|
private String matkl;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 物料描述描述
|
||||||
|
*/
|
||||||
|
private String wgbez;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 工厂
|
||||||
|
*/
|
||||||
|
private String werks;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 标识:基于收获的发票验证
|
||||||
|
*/
|
||||||
|
private String webre;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 打印参数
|
||||||
|
*/
|
||||||
|
private String lbprt;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 特性值
|
||||||
|
*/
|
||||||
|
private String atwrt;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 采购组
|
||||||
|
*/
|
||||||
|
private String ekgrp;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 订单类型
|
||||||
|
*/
|
||||||
|
private String bsart;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 供应商账号
|
||||||
|
*/
|
||||||
|
private String lifnr;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,127 @@
|
||||||
|
package com.nflg.wms.admin.service;
|
||||||
|
|
||||||
|
import cn.hutool.core.collection.CollectionUtil;
|
||||||
|
import cn.hutool.core.util.StrUtil;
|
||||||
|
import com.nflg.wms.admin.pojo.dto.SAPMaterialInfoInOrderDTO;
|
||||||
|
import com.nflg.wms.common.constant.STATE;
|
||||||
|
import com.nflg.wms.common.pojo.ApiResult;
|
||||||
|
import com.nflg.wms.common.pojo.dto.SAPSyncParamsDTO;
|
||||||
|
import com.nflg.wms.common.pojo.qo.SrmMaterialReceiptQO;
|
||||||
|
import com.nflg.wms.common.pojo.vo.PDAOrderItemVO;
|
||||||
|
import com.nflg.wms.common.pojo.vo.PDAOrderVO;
|
||||||
|
import com.nflg.wms.common.pojo.vo.SRMOrderItemVO;
|
||||||
|
import com.nflg.wms.common.util.VUtil;
|
||||||
|
import com.nflg.wms.repository.entity.WmsSrmOrder;
|
||||||
|
import com.nflg.wms.repository.entity.WmsSrmOrderItem;
|
||||||
|
import com.nflg.wms.repository.service.IWmsSrmOrderItemService;
|
||||||
|
import com.nflg.wms.repository.service.IWmsSrmOrderService;
|
||||||
|
import jakarta.annotation.Resource;
|
||||||
|
import jakarta.validation.Valid;
|
||||||
|
import org.apache.poi.ss.formula.functions.Forecast;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
|
import org.springframework.web.bind.annotation.RequestParam;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
|
public class NormalPGIControllerService {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private IWmsSrmOrderItemService wmsSrmOrderItemService;
|
||||||
|
@Resource
|
||||||
|
private IWmsSrmOrderService wmsSrmOrderService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private SAPCommonService sapCommonService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private SapService sapService;
|
||||||
|
|
||||||
|
public PDAOrderVO getOrderItemByOrderNo(@RequestParam String orderNo) throws Exception {
|
||||||
|
//return ApiResult.success(wmsSrmOrderItemService.getOrderItem(orderId));
|
||||||
|
PDAOrderVO pdaOrderVO = null;
|
||||||
|
|
||||||
|
WmsSrmOrder order = wmsSrmOrderService.lambdaQuery().eq(WmsSrmOrder::getNoteNum, orderNo).one();
|
||||||
|
if (Objects.isNull(order))
|
||||||
|
return null;
|
||||||
|
|
||||||
|
pdaOrderVO.setNoteNum(order.getNoteNum());
|
||||||
|
pdaOrderVO.setSupplierNum(order.getSupplierNum());
|
||||||
|
pdaOrderVO.setSupplierName(order.getSupplierName());
|
||||||
|
|
||||||
|
List<WmsSrmOrderItem> orderItemList = wmsSrmOrderItemService.lambdaQuery().eq(WmsSrmOrderItem::getOrderId, order.getId()).list();
|
||||||
|
if (CollectionUtil.isNotEmpty(orderItemList)) {
|
||||||
|
List<PDAOrderItemVO> orderItemVOList = new ArrayList<>();
|
||||||
|
|
||||||
|
for (WmsSrmOrderItem item : orderItemList) {
|
||||||
|
PDAOrderItemVO itemVO = new PDAOrderItemVO();
|
||||||
|
itemVO.setId(item.getId());
|
||||||
|
itemVO.setPoLineNumber(item.getPoLineNumber());
|
||||||
|
itemVO.setPoNum(item.getPoNum());
|
||||||
|
itemVO.setItemCode(item.getItemCode());
|
||||||
|
itemVO.setItemName(item.getItemName());
|
||||||
|
itemVO.setIsQuality(item.getIsQuality());
|
||||||
|
itemVO.setOrderQty(item.getOrderQty());
|
||||||
|
itemVO.setUomCode(item.getUomCode());
|
||||||
|
itemVO.setDeliveryQty(item.getDeliveryQty());
|
||||||
|
|
||||||
|
|
||||||
|
SAPSyncParamsDTO syncParamsDTO = sapCommonService.getMaterialInfoInOrder(item.getPoNum(), order.getSupplierNum(), item.getItemCode());
|
||||||
|
if (Objects.nonNull(syncParamsDTO)) {
|
||||||
|
itemVO.setItemName(syncParamsDTO.getMaktx());
|
||||||
|
itemVO.setUomCode(syncParamsDTO.getMeins());
|
||||||
|
itemVO.setOrderQty(syncParamsDTO.getMenge());
|
||||||
|
itemVO.setReceivedWarehouse(syncParamsDTO.getWarehouseNo());
|
||||||
|
itemVO.setBinNos(syncParamsDTO.getBinNos());
|
||||||
|
itemVO.setLbprt(syncParamsDTO.getLbprt());
|
||||||
|
itemVO.setTransportNum(syncParamsDTO.getTransportNum());
|
||||||
|
boolean isQuality = false;
|
||||||
|
if (syncParamsDTO.getKzkri().equals("0"))
|
||||||
|
isQuality = true;
|
||||||
|
else
|
||||||
|
isQuality = false;
|
||||||
|
|
||||||
|
itemVO.setIsQuality(isQuality);
|
||||||
|
|
||||||
|
orderItemVOList.add(itemVO);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
pdaOrderVO.setOrderItemVOList(orderItemVOList);
|
||||||
|
}
|
||||||
|
return pdaOrderVO;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Transactional
|
||||||
|
public void takeDelivery(List<SrmMaterialReceiptQO> request) {
|
||||||
|
VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(request)).throwMessage("收货参数为空");
|
||||||
|
request.forEach(item -> {
|
||||||
|
SAPMaterialInfoInOrderDTO materialInfoInOrder = sapService.getMaterialInfoInOrder(item.getPoNum(), item.getSupplierNum(), item.getItemCode());
|
||||||
|
VUtil.trueThrowBusinessError(Objects.isNull(materialInfoInOrder)).throwMessage("无法获取到有效订单信息" + item.getPoNum());
|
||||||
|
//判断收货数量是否大于了未收数量
|
||||||
|
VUtil.trueThrowBusinessError(item.getReceiptNum().add(item.getCrossNumber()).compareTo(materialInfoInOrder.getTransportNum()) > 0).throwMessage("无法获取到有效订单信息" + item.getPoNum());
|
||||||
|
//判断序列号、批次号是否规范
|
||||||
|
// 1 - 批次号为空,序列号为空
|
||||||
|
// 2 - 批次号必填,序列号为空
|
||||||
|
// 3 - 批次号为空,序列号必填
|
||||||
|
// 4 - 批次号必填,序列号必填
|
||||||
|
|
||||||
|
//批次號必填
|
||||||
|
if (materialInfoInOrder.getLbprt().equals("2") || materialInfoInOrder.getLbprt().equals("4")) {
|
||||||
|
VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(item.getScanCodes()) || item.getScanCodes().stream().anyMatch(code -> StrUtil.isBlank(code.getBatchNumber()))).throwMessage("此物料[" + item.getItemCode() + "]必须填写批次号" + item.getPoNum());
|
||||||
|
}
|
||||||
|
|
||||||
|
//序列號必填
|
||||||
|
if (materialInfoInOrder.getLbprt().equals("3") || materialInfoInOrder.getLbprt().equals("4")) {
|
||||||
|
VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(item.getScanCodes()) || item.getScanCodes().stream().anyMatch(code -> StrUtil.isBlank(code.getSerialNumber()))).throwMessage("此物料[" + item.getItemCode() + "]必须填写序列号" + item.getPoNum());
|
||||||
|
}
|
||||||
|
// 保存收货信息
|
||||||
|
//质检物料发送到质检单
|
||||||
|
//生成上架任务
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,60 @@
|
||||||
|
package com.nflg.wms.admin.service;
|
||||||
|
|
||||||
|
import cn.hutool.core.collection.CollectionUtil;
|
||||||
|
import cn.hutool.core.util.StrUtil;
|
||||||
|
import com.nflg.wms.admin.pojo.dto.SAPMaterialInfoInOrderDTO;
|
||||||
|
import com.nflg.wms.common.pojo.dto.SAPSyncFromDTO;
|
||||||
|
import com.nflg.wms.common.pojo.dto.SAPSyncParamsDTO;
|
||||||
|
import jakarta.annotation.Resource;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
|
@Slf4j
|
||||||
|
@Component
|
||||||
|
public class SAPCommonService {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private SapService sapService;
|
||||||
|
|
||||||
|
public SAPSyncParamsDTO getMaterialInfoInOrder(String orderNo, String supplierNo, String materialNo) throws Exception {
|
||||||
|
//获取订单信息
|
||||||
|
SAPMaterialInfoInOrderDTO materialInfoInOrder = sapService.getMaterialInfoInOrder(orderNo, supplierNo, materialNo);
|
||||||
|
if (Objects.isNull(materialInfoInOrder))
|
||||||
|
throw (new Exception("无法获取到有效订单信息" + orderNo));
|
||||||
|
|
||||||
|
SAPSyncParamsDTO syncParams = new SAPSyncParamsDTO();
|
||||||
|
syncParams.setMaktx(materialInfoInOrder.getMaktx());
|
||||||
|
syncParams.setEbelp(materialInfoInOrder.getEbelp());
|
||||||
|
syncParams.setMatnr(materialInfoInOrder.getMatnr());
|
||||||
|
syncParams.setMenge(materialInfoInOrder.getMenge());
|
||||||
|
syncParams.setWemng(materialInfoInOrder.getWemng());
|
||||||
|
syncParams.setMeins(materialInfoInOrder.getMeins());
|
||||||
|
syncParams.setEbeln(materialInfoInOrder.getEbeln());
|
||||||
|
syncParams.setTransportNum(materialInfoInOrder.getTransportNum());
|
||||||
|
syncParams.setMatkl(materialInfoInOrder.getMatkl());
|
||||||
|
syncParams.setWgbez(materialInfoInOrder.getWgbez());
|
||||||
|
syncParams.setWerks(materialInfoInOrder.getWerks());
|
||||||
|
syncParams.setLbprt(materialInfoInOrder.getLbprt());
|
||||||
|
syncParams.setKzkri(materialInfoInOrder.getKzkri());
|
||||||
|
|
||||||
|
//获取仓库信息
|
||||||
|
List<String> warehouseNos = new ArrayList<>();
|
||||||
|
warehouseNos.add(materialInfoInOrder.getWarehouseNo());
|
||||||
|
List<String> materialNos=new ArrayList<>();
|
||||||
|
materialNos.add(materialInfoInOrder.getMatnr());
|
||||||
|
List<SAPSyncFromDTO> list = sapService.getStorage(materialInfoInOrder.getWerks(), warehouseNos, materialNos, null, null);
|
||||||
|
if (!CollectionUtil.isEmpty(list)) {
|
||||||
|
//同步仓库信息
|
||||||
|
SAPSyncFromDTO dbWarehouse = list.get(0);
|
||||||
|
syncParams.setWarehouseNo(dbWarehouse.getWarehouseNo());
|
||||||
|
syncParams.setBinNos(dbWarehouse.getBinNos());
|
||||||
|
}
|
||||||
|
|
||||||
|
return syncParams;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -26,12 +26,13 @@ public class SapService {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取库存信息
|
* 获取库存信息
|
||||||
* @param factory 工厂编号
|
*
|
||||||
|
* @param factory 工厂编号
|
||||||
* @param warehouseNos 仓库编号列表
|
* @param warehouseNos 仓库编号列表
|
||||||
* @param beginTime 开始时间,格式yyyyMMdd
|
* @param beginTime 开始时间,格式yyyyMMdd
|
||||||
* @param endTime 结束时间,格式yyyyMMdd
|
* @param endTime 结束时间,格式yyyyMMdd
|
||||||
*/
|
*/
|
||||||
public List<SAPSyncFromDTO> getStorage(String factory, List<String> warehouseNos,List<String> materialNos, String beginTime, String endTime) {
|
public List<SAPSyncFromDTO> getStorage(String factory, List<String> warehouseNos, List<String> materialNos, String beginTime, String endTime) {
|
||||||
Map<String, Object> parameters = new HashMap<>();
|
Map<String, Object> parameters = new HashMap<>();
|
||||||
parameters.put("I_WERKS", factory);
|
parameters.put("I_WERKS", factory);
|
||||||
parameters.put("I_TYPE", Objects.nonNull(beginTime) || Objects.nonNull(endTime) ? "I" : "A");
|
parameters.put("I_TYPE", Objects.nonNull(beginTime) || Objects.nonNull(endTime) ? "I" : "A");
|
||||||
|
|
@ -74,11 +75,12 @@ public class SapService {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取订单中物料的信息
|
* 获取订单中物料的信息
|
||||||
* @param orderNo 采购单号
|
*
|
||||||
|
* @param orderNo 采购单号
|
||||||
* @param supplierNo 供应商编号
|
* @param supplierNo 供应商编号
|
||||||
* @param materialNo 物料编号
|
* @param materialNo 物料编号
|
||||||
*/
|
*/
|
||||||
public SAPMaterialInfoInOrderDTO getMaterialInfoInOrder(String orderNo, String supplierNo, String materialNo){
|
public SAPMaterialInfoInOrderDTO getMaterialInfoInOrder(String orderNo, String supplierNo, String materialNo) {
|
||||||
Map<String, Object> parameters = new HashMap<>();
|
Map<String, Object> parameters = new HashMap<>();
|
||||||
parameters.put("I_EBELN", orderNo);
|
parameters.put("I_EBELN", orderNo);
|
||||||
parameters.put("I_LIFNR", supplierNo);
|
parameters.put("I_LIFNR", supplierNo);
|
||||||
|
|
@ -89,19 +91,37 @@ public class SapService {
|
||||||
tOut.setRow(0);
|
tOut.setRow(0);
|
||||||
return new SAPMaterialInfoInOrderDTO()
|
return new SAPMaterialInfoInOrderDTO()
|
||||||
.setTransportNum(tOut.getBigDecimal("WSHSL"))
|
.setTransportNum(tOut.getBigDecimal("WSHSL"))
|
||||||
.setWarehouseNo(tOut.getString("LGORT"));
|
.setWarehouseNo(tOut.getString("LGORT"))
|
||||||
|
.setAtwrt(tOut.getString("ATWRT"))
|
||||||
|
.setBsart(tOut.getString("BSART"))
|
||||||
|
.setEbeln(tOut.getString("EBELN"))
|
||||||
|
.setEbelp(tOut.getString("EBELP"))
|
||||||
|
.setMatnr(tOut.getString("MATNR"))
|
||||||
|
.setMaktx(tOut.getString("MAKTX"))
|
||||||
|
.setKzkri(tOut.getString("KZKRI"))
|
||||||
|
.setMeins(tOut.getString("MEINS"))
|
||||||
|
.setMenge(tOut.getBigDecimal("MENGE"))
|
||||||
|
.setMatkl(tOut.getString("MATKL"))
|
||||||
|
.setWgbez(tOut.getString("WGBEZ"))
|
||||||
|
.setWerks(tOut.getString("WERKS"))
|
||||||
|
.setWebre(tOut.getString("WEBRE"))
|
||||||
|
.setLbprt(tOut.getString("LBPRZ"))
|
||||||
|
.setEkgrp(tOut.getString("EKGRP"))
|
||||||
|
.setBsart(tOut.getString("BSART"))
|
||||||
|
.setLifnr(tOut.getString("LIFNR"))
|
||||||
|
;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 搜索订单
|
* 搜索订单
|
||||||
|
*
|
||||||
* @param supplierNo 供应商编码
|
* @param supplierNo 供应商编码
|
||||||
*/
|
*/
|
||||||
public List<SAPOrderDTO> searchOrder(String supplierNo) {
|
public List<SAPOrderDTO> searchOrder(String supplierNo) {
|
||||||
Map<String, Object> parameters = new HashMap<>();
|
Map<String, Object> parameters = new HashMap<>();
|
||||||
parameters.put("I_LIFNR", supplierNo);
|
parameters.put("I_LIFNR", supplierNo);
|
||||||
|
|
||||||
JCoTable tOut = exec("ZRFC_MM_SMXT", parameters,null,"T_SMXTOUT");
|
JCoTable tOut = exec("ZRFC_MM_SMXT", parameters, null, "T_SMXTOUT");
|
||||||
|
|
||||||
List<SAPOrderDTO> result = new ArrayList<>();
|
List<SAPOrderDTO> result = new ArrayList<>();
|
||||||
for (int i = 0; i < tOut.getNumRows(); i++) {
|
for (int i = 0; i < tOut.getNumRows(); i++) {
|
||||||
tOut.setRow(i);
|
tOut.setRow(i);
|
||||||
|
|
@ -121,16 +141,16 @@ public class SapService {
|
||||||
}
|
}
|
||||||
|
|
||||||
private JCoTable exec(String functionName, Map<String, Object> parameters) {
|
private JCoTable exec(String functionName, Map<String, Object> parameters) {
|
||||||
return exec(functionName, parameters, null,"T_OUT");
|
return exec(functionName, parameters, null, "T_OUT");
|
||||||
}
|
}
|
||||||
|
|
||||||
private JCoTable exec(String functionName, Map<String, Object> parameters, Map<String, List<Map<String, Object>>> tables) {
|
private JCoTable exec(String functionName, Map<String, Object> parameters, Map<String, List<Map<String, Object>>> tables) {
|
||||||
return exec(functionName, parameters, tables,"T_OUT");
|
return exec(functionName, parameters, tables, "T_OUT");
|
||||||
}
|
}
|
||||||
|
|
||||||
private JCoTable exec(String functionName, Map<String, Object> parameters, Map<String, List<Map<String, Object>>> tables,String outName) {
|
private JCoTable exec(String functionName, Map<String, Object> parameters, Map<String, List<Map<String, Object>>> tables, String outName) {
|
||||||
try {
|
try {
|
||||||
log.info("SAP functionName:{}",functionName);
|
log.info("SAP functionName:{}", functionName);
|
||||||
JCoFunction function = repository.getFunction(functionName);
|
JCoFunction function = repository.getFunction(functionName);
|
||||||
log.info("SAP ImportParameter:{}", JSONUtil.toJsonStr(parameters));
|
log.info("SAP ImportParameter:{}", JSONUtil.toJsonStr(parameters));
|
||||||
if (CollectionUtil.isNotEmpty(parameters)) {
|
if (CollectionUtil.isNotEmpty(parameters)) {
|
||||||
|
|
@ -151,7 +171,7 @@ public class SapService {
|
||||||
JCoTable out = function.getTableParameterList().getTable(outName);
|
JCoTable out = function.getTableParameterList().getTable(outName);
|
||||||
log.info("SAP返回: {}", out);
|
log.info("SAP返回: {}", out);
|
||||||
return out;
|
return out;
|
||||||
}catch (JCoException ex){
|
} catch (JCoException ex) {
|
||||||
log.error("SAP错误", ex);
|
log.error("SAP错误", ex);
|
||||||
throw new NflgException(STATE.BusinessError, "SAP错误");
|
throw new NflgException(STATE.BusinessError, "SAP错误");
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -24,8 +24,8 @@ public enum STATE {
|
||||||
PageError(114, "页面异常"),
|
PageError(114, "页面异常"),
|
||||||
BusinessError(115, "业务异常"),
|
BusinessError(115, "业务异常"),
|
||||||
RequestMethodError(116, "请求方式错误"),
|
RequestMethodError(116, "请求方式错误"),
|
||||||
InconsistentDataError(117, "需要用户确认")
|
InconsistentDataError(117, "需要用户确认"),
|
||||||
;
|
NoOrderData(118, "订单不存在");
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
private final Integer state;
|
private final Integer state;
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,86 @@
|
||||||
|
package com.nflg.wms.common.pojo.dto;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class SAPSyncParamsDTO {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 未收货数量
|
||||||
|
*/
|
||||||
|
private BigDecimal transportNum;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 仓库编号
|
||||||
|
*/
|
||||||
|
private String warehouseNo;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 货位编号
|
||||||
|
*/
|
||||||
|
private String binNos;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 采购凭证号
|
||||||
|
*/
|
||||||
|
private String ebeln;
|
||||||
|
/**
|
||||||
|
* 采购凭证行项目
|
||||||
|
*/
|
||||||
|
private String ebelp;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 物料号
|
||||||
|
*/
|
||||||
|
private String matnr;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 物料描述
|
||||||
|
*/
|
||||||
|
private String maktx;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 采购订单数量
|
||||||
|
*/
|
||||||
|
private BigDecimal menge;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 收货数量
|
||||||
|
*/
|
||||||
|
|
||||||
|
private BigDecimal wemng;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 单位
|
||||||
|
*/
|
||||||
|
private String meins;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 物料组
|
||||||
|
*/
|
||||||
|
private String matkl;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 物料描述描述
|
||||||
|
*/
|
||||||
|
private String wgbez;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 工厂
|
||||||
|
*/
|
||||||
|
private String werks;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 打印参数
|
||||||
|
*/
|
||||||
|
private String lbprt;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 是否质检
|
||||||
|
*/
|
||||||
|
private String kzkri;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,40 @@
|
||||||
|
package com.nflg.wms.common.pojo.qo;
|
||||||
|
|
||||||
|
import jakarta.validation.constraints.NotEmpty;
|
||||||
|
import jakarta.validation.constraints.NotNull;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class PDAScanCodeQO {
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 二维码编号
|
||||||
|
*/
|
||||||
|
private String codeId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 数量
|
||||||
|
*/
|
||||||
|
@NotNull
|
||||||
|
private BigDecimal codeNum;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批次号
|
||||||
|
*/
|
||||||
|
private String batchNumber;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 序列号,多个序列号使用;号隔开
|
||||||
|
*/
|
||||||
|
private String serialNumber;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 二维码内容
|
||||||
|
*/
|
||||||
|
private String codeContent;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,28 @@
|
||||||
|
package com.nflg.wms.common.pojo.qo;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class SRMOrderSearchQO extends SearchBaseQO {
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 送货单号
|
||||||
|
*/
|
||||||
|
private String noteNum;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 供应商编号
|
||||||
|
*/
|
||||||
|
private String supplierNum;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 订单号
|
||||||
|
*/
|
||||||
|
private String poNum;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 物料编号
|
||||||
|
*/
|
||||||
|
private String itemCode;
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,70 @@
|
||||||
|
package com.nflg.wms.common.pojo.qo;
|
||||||
|
|
||||||
|
import jakarta.validation.constraints.NotEmpty;
|
||||||
|
import jakarta.validation.constraints.NotNull;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 送货单收货参数
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class SrmMaterialReceiptQO {
|
||||||
|
/**
|
||||||
|
* 订单编号
|
||||||
|
*/
|
||||||
|
private String noteNum;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 送货单行号
|
||||||
|
* */
|
||||||
|
public String lineNumber;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 供应商编号
|
||||||
|
*/
|
||||||
|
private String supplierNum;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 采购订单号
|
||||||
|
*/
|
||||||
|
private String poNum;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 采购订单行号
|
||||||
|
*/
|
||||||
|
private String poLineNumber;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 物料编码
|
||||||
|
*/
|
||||||
|
private String itemCode;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 普通物料送货单的详情ID
|
||||||
|
*/
|
||||||
|
@NotNull
|
||||||
|
private Long orderItemId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 收货数量,如果是需要质检的,数量为0
|
||||||
|
*/
|
||||||
|
@NotNull
|
||||||
|
private BigDecimal receiptNum;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 越库数量
|
||||||
|
*/
|
||||||
|
@NotNull
|
||||||
|
private BigDecimal crossNumber;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 扫码记录
|
||||||
|
*/
|
||||||
|
@NotEmpty
|
||||||
|
private List<PDAScanCodeQO> scanCodes;
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,81 @@
|
||||||
|
package com.nflg.wms.common.pojo.vo;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class PDAOrderItemVO {
|
||||||
|
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 送货单行号
|
||||||
|
* */
|
||||||
|
public String lineNumber;
|
||||||
|
/**
|
||||||
|
* 采购订单号
|
||||||
|
*/
|
||||||
|
private String poNum;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 采购订单行号
|
||||||
|
*/
|
||||||
|
private String poLineNumber;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 物料编码
|
||||||
|
*/
|
||||||
|
private String itemCode;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 物料描述
|
||||||
|
*/
|
||||||
|
private String itemName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 订单数量
|
||||||
|
*/
|
||||||
|
private BigDecimal orderQty;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 单位
|
||||||
|
*/
|
||||||
|
private String uomCode;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 送货数量
|
||||||
|
*/
|
||||||
|
private BigDecimal deliveryQty;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 收货仓库
|
||||||
|
*/
|
||||||
|
private String receivedWarehouse;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 货位编号
|
||||||
|
*/
|
||||||
|
private String binNos;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 是否质检
|
||||||
|
*/
|
||||||
|
private Boolean isQuality;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 打印参数
|
||||||
|
* 1-批次号为空,序列号为空
|
||||||
|
* 2-批次号必填,序列号为空
|
||||||
|
* 3-批次号为空,序列号必填
|
||||||
|
* 4-批次号必填,序列号必填
|
||||||
|
*/
|
||||||
|
private String lbprt;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 未收货数量,如果收货数量大于了未收数量,需要抛出异常
|
||||||
|
*/
|
||||||
|
private BigDecimal transportNum;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,30 @@
|
||||||
|
package com.nflg.wms.common.pojo.vo;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class PDAOrderVO {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 订单编号
|
||||||
|
*/
|
||||||
|
private String noteNum;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 供应商编号
|
||||||
|
*/
|
||||||
|
private String supplierNum;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 供应商名称
|
||||||
|
*/
|
||||||
|
private String supplierName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 订单项
|
||||||
|
*/
|
||||||
|
private List<PDAOrderItemVO> orderItemVOList;
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,118 @@
|
||||||
|
package com.nflg.wms.common.pojo.vo;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.IdType;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class SRMOrderItemVO {
|
||||||
|
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 送货单行号
|
||||||
|
*/
|
||||||
|
private String lineNumber;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 订单编号
|
||||||
|
*/
|
||||||
|
private String noteNum;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 采购订单号
|
||||||
|
*/
|
||||||
|
private String poNum;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 采购订单行号
|
||||||
|
*/
|
||||||
|
private String poLineNumber;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 送货单行号
|
||||||
|
*/
|
||||||
|
private String lineNumber;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 物料编码
|
||||||
|
*/
|
||||||
|
private String itemCode;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 物料描述
|
||||||
|
*/
|
||||||
|
private String itemName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 订单数量
|
||||||
|
*/
|
||||||
|
private BigDecimal orderQty;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 单位
|
||||||
|
*/
|
||||||
|
private String uomCode;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 送货数量
|
||||||
|
*/
|
||||||
|
private BigDecimal deliveryQty;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 不合格数量
|
||||||
|
*/
|
||||||
|
private BigDecimal unqualifiedQty;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 合格数量
|
||||||
|
*/
|
||||||
|
private BigDecimal qualifiedQty;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 越库数量
|
||||||
|
*/
|
||||||
|
private BigDecimal crossNumber;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 收货数量
|
||||||
|
*/
|
||||||
|
private BigDecimal receiptNum;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 收货仓库
|
||||||
|
*/
|
||||||
|
private String receivedWarehouse;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 订单需求日期
|
||||||
|
*/
|
||||||
|
private String demandDate;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 实际送货时间
|
||||||
|
*/
|
||||||
|
private String deliveryNoteDate;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 采购订单类型
|
||||||
|
*/
|
||||||
|
private String orderType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 是否质检
|
||||||
|
*/
|
||||||
|
private Boolean isQuality;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 上架状态
|
||||||
|
*/
|
||||||
|
private Integer dataStatus;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 扫描码数量
|
||||||
|
*/
|
||||||
|
private Integer scanCodeNum;
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,48 @@
|
||||||
|
package com.nflg.wms.common.pojo.vo;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class SrmOrderVO {
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 送货单号
|
||||||
|
*/
|
||||||
|
private String noteNum;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 公司
|
||||||
|
*/
|
||||||
|
private String ouCode;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 工厂
|
||||||
|
*/
|
||||||
|
private String iuCode;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 采购组
|
||||||
|
*/
|
||||||
|
private String purchaseGroup;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 发货时间
|
||||||
|
*/
|
||||||
|
private String deliveryNoteDate;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 运单号
|
||||||
|
*/
|
||||||
|
private String waybillNum;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 供应商编号
|
||||||
|
*/
|
||||||
|
private String supplierNum;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 供应商名称
|
||||||
|
*/
|
||||||
|
private String supplierName;
|
||||||
|
}
|
||||||
|
|
@ -65,4 +65,14 @@ public class WmsSrmOrder implements Serializable {
|
||||||
* 创建时间
|
* 创建时间
|
||||||
*/
|
*/
|
||||||
private LocalDateTime createTime;
|
private LocalDateTime createTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 公司
|
||||||
|
*/
|
||||||
|
private String ouCode;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 发货时间
|
||||||
|
*/
|
||||||
|
private LocalDateTime deliveryNoteDate;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -95,14 +95,4 @@ public class WmsSrmOrderItem implements Serializable {
|
||||||
* 是否质检
|
* 是否质检
|
||||||
*/
|
*/
|
||||||
private Boolean isQuality;
|
private Boolean isQuality;
|
||||||
|
|
||||||
/**
|
|
||||||
* 发货时间
|
|
||||||
*/
|
|
||||||
private String deliveryNoteDate;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 公司
|
|
||||||
*/
|
|
||||||
private String ouCode;
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
package com.nflg.wms.repository.mapper;
|
package com.nflg.wms.repository.mapper;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
|
import com.nflg.wms.common.pojo.vo.SRMOrderItemVO;
|
||||||
import com.nflg.wms.repository.entity.WmsSrmOrderItem;
|
import com.nflg.wms.repository.entity.WmsSrmOrderItem;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -12,5 +13,5 @@ import com.nflg.wms.repository.entity.WmsSrmOrderItem;
|
||||||
* @since 2025
|
* @since 2025
|
||||||
*/
|
*/
|
||||||
public interface WmsSrmOrderItemMapper extends BaseMapper<WmsSrmOrderItem> {
|
public interface WmsSrmOrderItemMapper extends BaseMapper<WmsSrmOrderItem> {
|
||||||
|
SRMOrderItemVO getOrderItem(Long orderId);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,16 +1,20 @@
|
||||||
package com.nflg.wms.repository.mapper;
|
package com.nflg.wms.repository.mapper;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
|
import com.nflg.wms.common.pojo.qo.SRMOrderSearchQO;
|
||||||
|
import com.nflg.wms.common.pojo.vo.SrmOrderVO;
|
||||||
import com.nflg.wms.repository.entity.WmsSrmOrder;
|
import com.nflg.wms.repository.entity.WmsSrmOrder;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>
|
* <p>
|
||||||
* Mapper 接口
|
* Mapper 接口
|
||||||
* </p>
|
* </p>
|
||||||
*
|
*
|
||||||
* @author 代码生成器生成
|
* @author 代码生成器生成
|
||||||
* @since 2025
|
* @since 2025
|
||||||
*/
|
*/
|
||||||
public interface WmsSrmOrderMapper extends BaseMapper<WmsSrmOrder> {
|
public interface WmsSrmOrderMapper extends BaseMapper<WmsSrmOrder> {
|
||||||
|
IPage<SrmOrderVO> search(SRMOrderSearchQO request, Page<?> objectPage);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,16 +1,17 @@
|
||||||
package com.nflg.wms.repository.service;
|
package com.nflg.wms.repository.service;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
|
import com.nflg.wms.common.pojo.vo.SRMOrderItemVO;
|
||||||
import com.nflg.wms.repository.entity.WmsSrmOrderItem;
|
import com.nflg.wms.repository.entity.WmsSrmOrderItem;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>
|
* <p>
|
||||||
* 服务类
|
* 服务类
|
||||||
* </p>
|
* </p>
|
||||||
*
|
*
|
||||||
* @author 代码生成器生成
|
* @author 代码生成器生成
|
||||||
* @since 2025
|
* @since 2025
|
||||||
*/
|
*/
|
||||||
public interface IWmsSrmOrderItemService extends IService<WmsSrmOrderItem> {
|
public interface IWmsSrmOrderItemService extends IService<WmsSrmOrderItem> {
|
||||||
|
SRMOrderItemVO getOrderItem(Long orderId);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,12 @@
|
||||||
package com.nflg.wms.repository.service;
|
package com.nflg.wms.repository.service;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
|
import com.nflg.wms.common.pojo.PageData;
|
||||||
|
import com.nflg.wms.common.pojo.qo.SRMOrderSearchQO;
|
||||||
|
import com.nflg.wms.common.pojo.vo.SrmOrderVO;
|
||||||
import com.nflg.wms.repository.entity.WmsSrmOrder;
|
import com.nflg.wms.repository.entity.WmsSrmOrder;
|
||||||
|
import jakarta.validation.Valid;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>
|
* <p>
|
||||||
|
|
@ -13,4 +18,5 @@ import com.nflg.wms.repository.entity.WmsSrmOrder;
|
||||||
*/
|
*/
|
||||||
public interface IWmsSrmOrderService extends IService<WmsSrmOrder> {
|
public interface IWmsSrmOrderService extends IService<WmsSrmOrder> {
|
||||||
|
|
||||||
|
IPage<SrmOrderVO> search(@Valid SRMOrderSearchQO request);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -39,8 +39,8 @@ public class WmsInTaskServiceImpl extends ServiceImpl<WmsInTaskMapper, WmsInTask
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
List<WmsInTask> newTaskList = new ArrayList<WmsInTask>();
|
List<WmsInTask> newTaskList = new ArrayList<>();
|
||||||
List<WmsInTask> oldTaskList = new ArrayList<WmsInTask>();
|
List<WmsInTask> oldTaskList = new ArrayList<>();
|
||||||
|
|
||||||
tasks.forEach(task -> {
|
tasks.forEach(task -> {
|
||||||
String taskNumber = "SJ-" + task.getNoteNum();
|
String taskNumber = "SJ-" + task.getNoteNum();
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
package com.nflg.wms.repository.service.impl;
|
package com.nflg.wms.repository.service.impl;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
|
import com.nflg.wms.common.pojo.vo.SRMOrderItemVO;
|
||||||
import com.nflg.wms.repository.entity.WmsSrmOrderItem;
|
import com.nflg.wms.repository.entity.WmsSrmOrderItem;
|
||||||
import com.nflg.wms.repository.mapper.WmsSrmOrderItemMapper;
|
import com.nflg.wms.repository.mapper.WmsSrmOrderItemMapper;
|
||||||
import com.nflg.wms.repository.service.IWmsSrmOrderItemService;
|
import com.nflg.wms.repository.service.IWmsSrmOrderItemService;
|
||||||
|
|
@ -17,4 +18,8 @@ import org.springframework.stereotype.Service;
|
||||||
@Service
|
@Service
|
||||||
public class WmsSrmOrderItemServiceImpl extends ServiceImpl<WmsSrmOrderItemMapper, WmsSrmOrderItem> implements IWmsSrmOrderItemService {
|
public class WmsSrmOrderItemServiceImpl extends ServiceImpl<WmsSrmOrderItemMapper, WmsSrmOrderItem> implements IWmsSrmOrderItemService {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SRMOrderItemVO getOrderItem(Long orderId) {
|
||||||
|
return baseMapper.getOrderItem(orderId);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,10 @@
|
||||||
package com.nflg.wms.repository.service.impl;
|
package com.nflg.wms.repository.service.impl;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
|
import com.nflg.wms.common.pojo.qo.SRMOrderSearchQO;
|
||||||
|
import com.nflg.wms.common.pojo.vo.SrmOrderVO;
|
||||||
import com.nflg.wms.repository.entity.WmsSrmOrder;
|
import com.nflg.wms.repository.entity.WmsSrmOrder;
|
||||||
import com.nflg.wms.repository.mapper.WmsSrmOrderMapper;
|
import com.nflg.wms.repository.mapper.WmsSrmOrderMapper;
|
||||||
import com.nflg.wms.repository.service.IWmsSrmOrderService;
|
import com.nflg.wms.repository.service.IWmsSrmOrderService;
|
||||||
|
|
@ -8,7 +12,7 @@ import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>
|
* <p>
|
||||||
* 服务实现类
|
* 服务实现类
|
||||||
* </p>
|
* </p>
|
||||||
*
|
*
|
||||||
* @author 代码生成器生成
|
* @author 代码生成器生成
|
||||||
|
|
@ -17,4 +21,8 @@ import org.springframework.stereotype.Service;
|
||||||
@Service
|
@Service
|
||||||
public class WmsSrmOrderServiceImpl extends ServiceImpl<WmsSrmOrderMapper, WmsSrmOrder> implements IWmsSrmOrderService {
|
public class WmsSrmOrderServiceImpl extends ServiceImpl<WmsSrmOrderMapper, WmsSrmOrder> implements IWmsSrmOrderService {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public IPage<SrmOrderVO> search(SRMOrderSearchQO request) {
|
||||||
|
return baseMapper.search(request, new Page<>(request.getPage(), request.getPageSize()));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,38 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||||
<mapper namespace="com.nflg.wms.repository.mapper.WmsSrmOrderItemMapper">
|
<mapper namespace="com.nflg.wms.repository.mapper.WmsSrmOrderItemMapper">
|
||||||
|
<select id="getOrderItem" resultType="com.nflg.wms.common.pojo.vo.SRMOrderItemVO">
|
||||||
|
SELECT a.id,
|
||||||
|
c.note_num,
|
||||||
|
a.line_number,
|
||||||
|
a.order_type,
|
||||||
|
a.po_num,
|
||||||
|
a.po_line_number,
|
||||||
|
a.item_code,
|
||||||
|
a.item_name,
|
||||||
|
a.uom_code,
|
||||||
|
a.order_qty,
|
||||||
|
a.delivery_qty,
|
||||||
|
sum(d.unqualified_qty) as unqualified_qty,
|
||||||
|
sum(d.qualified_qty) as qualified_qty,
|
||||||
|
sum(b.receipt_num) as receipt_num,
|
||||||
|
sum(b.cross_number) as cross_number,
|
||||||
|
b.received_warehouse,
|
||||||
|
a.demand_date,
|
||||||
|
c.delivery_note_date,
|
||||||
|
case when b.is_quality is null then a.is_quality else b.is_quality end,
|
||||||
|
COALESCE(d.data_status, 0) as data_status,
|
||||||
|
count(d.item_code) as scan_code_num
|
||||||
|
from wms_srm_order_item a left join wms_srm_material_receipt b on a.id = b.order_item_id
|
||||||
|
left join wms_srm_order c on a.order_id = c.id
|
||||||
|
left join wms_in_task_item d on c.note_num = d.note_num and a.line_number = d.line_number
|
||||||
|
left join wms_srm_material_receipt_item e on b.id=e.receipt_id
|
||||||
|
where a.id = #{orderId}
|
||||||
|
GROUP BY a.id,
|
||||||
|
c.note_num, a.line_number, a.order_type,
|
||||||
|
a.po_num, a.po_line_number,
|
||||||
|
a.item_code, a.item_name, a.uom_code,
|
||||||
|
a.order_qty, a.delivery_qty, b.received_warehouse,
|
||||||
|
a.demand_date, c.delivery_note_date, d.data_status, b.is_quality, a.is_quality
|
||||||
|
</select>
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,35 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||||
<mapper namespace="com.nflg.wms.repository.mapper.WmsSrmOrderMapper">
|
<mapper namespace="com.nflg.wms.repository.mapper.WmsSrmOrderMapper">
|
||||||
|
<select id="search" resultType="com.nflg.wms.common.pojo.vo.SrmOrderVO">
|
||||||
|
select a.iu_code,a.note_num,a.purchase_group,a.waybill_num,a.supplier_num,a.create_time, a.delivery_note_date
|
||||||
|
,a.ou_code,
|
||||||
|
b.supplier_name from wms_srm_order a left join user_supplier b on a.supplier_num=b.supplier_code
|
||||||
|
|
||||||
|
<if test="request.noteNum !=null and request.noteNum !='' ">
|
||||||
|
and a.note_num like concat('%', #{request.noteNum}, '%')
|
||||||
|
</if>
|
||||||
|
|
||||||
|
<if test="request.supplierNum !=null and request.supplierNum !='' ">
|
||||||
|
and a.supplier_num =#{request.supplierNum}
|
||||||
|
</if>
|
||||||
|
|
||||||
|
<if test="request.poNum !=null and request.poNum !='' ">
|
||||||
|
and EXISTS (select 1 from wms_srm_order_item where a.id=wms_srm_order_item.order_id and
|
||||||
|
wms_srm_order_item.po_num like concat('%', #{request.poNum}, '%')
|
||||||
|
</if>
|
||||||
|
|
||||||
|
<if test="request.itemCode !=null and request.itemCode !='' ">
|
||||||
|
and EXISTS (select 1 from wms_srm_order_item where a.id=wms_srm_order_item.order_id and
|
||||||
|
wms_srm_order_item.item_code like concat('%', #{request.itemCode}, '%')
|
||||||
|
</if>
|
||||||
|
<if test="request.startDate !=null and request.startDate !='' ">
|
||||||
|
and a.delivery_note_date >= #{request.startDate}
|
||||||
|
</if>
|
||||||
|
|
||||||
|
<if test="request.endDate !=null and request.endDate !='' ">
|
||||||
|
and a.delivery_note_date <= #{request.endDate}
|
||||||
|
</if>
|
||||||
|
order by a.delivery_note_date desc
|
||||||
|
</select>
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|
|
||||||
|
|
@ -46,6 +46,8 @@
|
||||||
<if test="request.itemCode !=null and request.itemCode !='' ">
|
<if test="request.itemCode !=null and request.itemCode !='' ">
|
||||||
and a.item_code like =#{request.itemCode}
|
and a.item_code like =#{request.itemCode}
|
||||||
</if>
|
</if>
|
||||||
|
|
||||||
|
order by a.create_time desc
|
||||||
</where>
|
</where>
|
||||||
</select>
|
</select>
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|
|
||||||
|
|
@ -33,7 +33,7 @@ public class CodeGeneratorTest {
|
||||||
)
|
)
|
||||||
.strategyConfig(builder -> {
|
.strategyConfig(builder -> {
|
||||||
builder
|
builder
|
||||||
.addInclude("wms_srm_material_receipt") //只生成指定表
|
.addInclude("wms_srm_material_receipt_item") //只生成指定表
|
||||||
.entityBuilder().idType(IdType.ASSIGN_ID)
|
.entityBuilder().idType(IdType.ASSIGN_ID)
|
||||||
.enableLombok()
|
.enableLombok()
|
||||||
.enableChainModel()
|
.enableChainModel()
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue