一些优化

This commit is contained in:
曹鹏飞 2025-09-02 18:25:14 +08:00
parent d350079342
commit 7e9dc3e702
24 changed files with 152 additions and 58 deletions

View File

@ -73,6 +73,9 @@ public class InCostCenterBackController extends BaseController {
@Resource @Resource
private InMaterialScanRecordRespository inMaterialScanRecordRespository; private InMaterialScanRecordRespository inMaterialScanRecordRespository;
@Resource
private IWmsStorageService storageService;
/** /**
* 查询SAP领料订单数据 * 查询SAP领料订单数据
*/ */
@ -162,12 +165,25 @@ public class InCostCenterBackController extends BaseController {
.setRsnum(order.getRsnum()) .setRsnum(order.getRsnum())
.setItems(datas.stream() .setItems(datas.stream()
.filter(item -> item.getLeft().compareTo(BigDecimal.ZERO) > 0) .filter(item -> item.getLeft().compareTo(BigDecimal.ZERO) > 0)
.map(item -> new OutProduceItemVO() .map(item -> {
.setLgort2(item.getLgort()) OutProduceItemVO vo = new OutProduceItemVO()
.setLgpbe(item.getLgpbe()) .setLgort2(item.getLgort())
.setMaktx2(item.getMaktx()) .setLgpbe(item.getLgpbe())
.setMatnr(item.getMatnr()) .setMaktx2(item.getMaktx())
.setNum(item.getLeft())).toList() .setMatnr(item.getMatnr())
.setNum(item.getLeft());
if (StrUtil.isBlank(vo.getLgort2())) {
String warehouseNo = storageService.getWarehouseNo(order.getWerks(), item.getMatnr());
if (StrUtil.isBlank(warehouseNo)) {
warehouseNo = order.getLgort();
}
vo.setLgort2(warehouseNo);
}
if (StrUtil.isNotBlank(vo.getLgort2()) && StrUtil.isBlank(vo.getLgpbe())) {
vo.setLgpbe(StrUtil.join("/", storageService.getBinNos(item.getMatnr(), order.getWerks(), vo.getLgort2())));
}
return vo;
}).toList()
) )
); );
} }
@ -182,6 +198,7 @@ public class InCostCenterBackController extends BaseController {
VUtil.trueThrowBusinessError(Objects.isNull(order)).throwMessage("订单不存在"); VUtil.trueThrowBusinessError(Objects.isNull(order)).throwMessage("订单不存在");
VUtil.trueThrowBusinessError(Objects.equals(order.getState(), 2)).throwMessage("该订单已完成"); VUtil.trueThrowBusinessError(Objects.equals(order.getState(), 2)).throwMessage("该订单已完成");
WmsInCostcenterBackTicket ticket = new WmsInCostcenterBackTicket() WmsInCostcenterBackTicket ticket = new WmsInCostcenterBackTicket()
.setId(IdUtil.getSnowflakeNextId())
.setNo(NoUtil.getOutProduceTicketNo()) .setNo(NoUtil.getOutProduceTicketNo())
.setOrderId(order.getId()) .setOrderId(order.getId())
.setCreateBy(UserUtil.getUserName()) .setCreateBy(UserUtil.getUserName())
@ -247,7 +264,7 @@ public class InCostCenterBackController extends BaseController {
.setItems(dmaps.values().stream().map(its -> { .setItems(dmaps.values().stream().map(its -> {
WmsInCostcenterBackItem item = datas.stream().filter(d -> StrUtil.equals(d.getMatnr(), its.get(0).getMaterialNo())).findFirst().get(); WmsInCostcenterBackItem item = datas.stream().filter(d -> StrUtil.equals(d.getMatnr(), its.get(0).getMaterialNo())).findFirst().get();
return new C_MaterialReturnItemQO() return new C_MaterialReturnItemQO()
.setResbRspos(order.getRsnum()) .setResbRspos(item.getRspos())
.setResbMatnr(item.getMatnr()) .setResbMatnr(item.getMatnr())
.setMaktx(item.getMaktx()) .setMaktx(item.getMaktx())
.setResbLgort(order.getLgort()) .setResbLgort(order.getLgort())

View File

@ -4,6 +4,8 @@ import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.convert.Convert; import cn.hutool.core.convert.Convert;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.Multimap;
import com.nflg.wms.admin.pojo.document.InMaterialScanRecord; import com.nflg.wms.admin.pojo.document.InMaterialScanRecord;
import com.nflg.wms.admin.pojo.dto.PdfPageDTO; import com.nflg.wms.admin.pojo.dto.PdfPageDTO;
import com.nflg.wms.admin.repository.InMaterialScanRecordRespository; import com.nflg.wms.admin.repository.InMaterialScanRecordRespository;
@ -14,8 +16,7 @@ import com.nflg.wms.admin.util.QRCodeUtil;
import com.nflg.wms.admin.util.ThymeleafUtil; import com.nflg.wms.admin.util.ThymeleafUtil;
import com.nflg.wms.common.pojo.ApiResult; import com.nflg.wms.common.pojo.ApiResult;
import com.nflg.wms.common.pojo.PageData; import com.nflg.wms.common.pojo.PageData;
import com.nflg.wms.common.pojo.dto.InventoryDTO; import com.nflg.wms.common.pojo.dto.*;
import com.nflg.wms.common.pojo.dto.MaterialQRCodeContentDTO;
import com.nflg.wms.common.pojo.qo.*; import com.nflg.wms.common.pojo.qo.*;
import com.nflg.wms.common.pojo.vo.*; import com.nflg.wms.common.pojo.vo.*;
import com.nflg.wms.common.util.UserUtil; import com.nflg.wms.common.util.UserUtil;
@ -115,7 +116,7 @@ public class InProduceBackController extends BaseController {
} }
/** /**
* 保存领料订单 * 保存订单
*/ */
@Transactional @Transactional
@PostMapping("save") @PostMapping("save")
@ -139,6 +140,13 @@ public class InProduceBackController extends BaseController {
items.forEach(item -> { items.forEach(item -> {
WmsInProduceBackItem data = Convert.convert(WmsInProduceBackItem.class, item); WmsInProduceBackItem data = Convert.convert(WmsInProduceBackItem.class, item);
data.setOrderId(order.getId()); data.setOrderId(order.getId());
ZWM3A21ResultDTO dto = CollectionUtil.get(sapService.zwm3a21(new ZWM3A21QueryDTO()
.setI_werks(item.getDwerk())
.setIt_matnr(List.of(new ZWM3A21MatnrItemDTO().setMatnr(item.getMatnr())))
.setIt_lgort(List.of(new ZWM3A21LgortItemDTO().setLgort(item.getLgort2())))
), 0);
VUtil.trueThrowBusinessError(Objects.isNull(dto)).throwMessage("未查到" + item.getMatnr() + "的标识信息");
data.setLbprt(dto.getXchpf());
inProduceBackItemService.save(data); inProduceBackItemService.save(data);
}); });
}); });
@ -215,7 +223,7 @@ public class InProduceBackController extends BaseController {
} }
/** /**
* 提交领料物料列表PDA使用 * 提交物料列表PDA使用
*/ */
@Transactional @Transactional
@PostMapping("pda/submit") @PostMapping("pda/submit")
@ -232,12 +240,19 @@ public class InProduceBackController extends BaseController {
List<InMaterialScanRecord> records = new ArrayList<>(); List<InMaterialScanRecord> records = new ArrayList<>();
List<MaterialQRCodeContentDTO> dtos = new ArrayList<>(); List<MaterialQRCodeContentDTO> dtos = new ArrayList<>();
List<WmsInProduceBackTicketItem> ticketItems = new ArrayList<>(); List<WmsInProduceBackTicketItem> ticketItems = new ArrayList<>();
Multimap<String, String> input2 = ArrayListMultimap.create();
request.getQrCodes().forEach(qrCode -> { request.getQrCodes().forEach(qrCode -> {
MaterialQRCodeContentDTO qrCodeContent = NoUtil.getMaterialQRCodeContent(qrCode); MaterialQRCodeContentDTO qrCodeContent = NoUtil.getMaterialQRCodeContent(qrCode);
dtos.add(qrCodeContent); dtos.add(qrCodeContent);
String materialNo = qrCodeContent.getMaterialNo(); String materialNo = qrCodeContent.getMaterialNo();
WmsInProduceBackItem item = datas.stream().filter(d -> StrUtil.equals(d.getMatnr(), materialNo)).findFirst().orElse(null); WmsInProduceBackItem item = datas.stream().filter(d -> StrUtil.equals(d.getMatnr(), materialNo)).findFirst().orElse(null);
VUtil.trueThrowBusinessError(Objects.isNull(item)).throwMessage("物料" + materialNo + "不需要退料"); VUtil.trueThrowBusinessError(Objects.isNull(item)).throwMessage("物料" + materialNo + "不需要退料");
// VUtil.trueThrowBusinessError(List.of("3","4").contains(item.getLbprt()) && StrUtil.isBlank(qrCodeContent.getSerialNo()))
// .throwMessage("物料" + materialNo + "必须有序列号");
// if (List.of("3","4").contains(item.getLbprt())){
// input2.put(item.getRspos(),qrCodeContent.getSerialNo());
// }
input2.put(item.getRspos(), qrCodeContent.getSerialNo());
WmsInProduceBackTicketItem pti = ticketItems.stream() WmsInProduceBackTicketItem pti = ticketItems.stream()
.filter(ti -> Objects.equals(ti.getProduceBackItemId(), item.getId())) .filter(ti -> Objects.equals(ti.getProduceBackItemId(), item.getId()))
.findFirst() .findFirst()
@ -295,10 +310,14 @@ public class InProduceBackController extends BaseController {
.setWerks(order.getDwerk()) .setWerks(order.getDwerk())
.setLgort(order.getLgort2()) .setLgort(order.getLgort2())
.setMenge(its.stream().map(MaterialQRCodeContentDTO::getNum).reduce(BigDecimal.ZERO, BigDecimal::add)) .setMenge(its.stream().map(MaterialQRCodeContentDTO::getNum).reduce(BigDecimal.ZERO, BigDecimal::add))
.setMenge_T(BigDecimal.ZERO) .setMenge_T(item.getEnmng())
.setMeins(item.getMeins()); .setMeins(item.getMeins());
}).toList() }).toList()
) )
.setInput2(input2.entries().stream().map(it -> new Zwm3a11Input2QO()
.setRspos(it.getKey())
.setSernr(it.getValue())).toList()
)
); );
BigDecimal totalNum = datas.stream().map(WmsInProduceBackItem::getSqsl).reduce(BigDecimal.ZERO, BigDecimal::add); BigDecimal totalNum = datas.stream().map(WmsInProduceBackItem::getSqsl).reduce(BigDecimal.ZERO, BigDecimal::add);
BigDecimal inNum = datas.stream().map(WmsInProduceBackItem::getNum).reduce(BigDecimal.ZERO, BigDecimal::add); BigDecimal inNum = datas.stream().map(WmsInProduceBackItem::getNum).reduce(BigDecimal.ZERO, BigDecimal::add);
@ -348,6 +367,7 @@ public class InProduceBackController extends BaseController {
// for (int i = 0, count = RandomUtil.randomInt(1, 100); i < count; i++) { // for (int i = 0, count = RandomUtil.randomInt(1, 100); i < count; i++) {
// list.add(new WmsInProduceBackItem().setMatnr(RandomUtil.randomNumbers(10))); // list.add(new WmsInProduceBackItem().setMatnr(RandomUtil.randomNumbers(10)));
// } // }
list.forEach(it -> it.setNum(null));
Map<String, String> base = new HashMap<>(); Map<String, String> base = new HashMap<>();
base.put("date", DateUtil.format(LocalDateTime.now(), "yyyy-MM-dd")); base.put("date", DateUtil.format(LocalDateTime.now(), "yyyy-MM-dd"));
base.put("qrcode", QRCodeUtil.generateQRCodeBase64(order.getNo(), 100, 100)); base.put("qrcode", QRCodeUtil.generateQRCodeBase64(order.getNo(), 100, 100));

View File

@ -225,6 +225,7 @@ public class InventoryController extends BaseController {
.batchNo(qrCodeContent.getBatchNo()) .batchNo(qrCodeContent.getBatchNo())
.serialNo(qrCodeContent.getSerialNo()) .serialNo(qrCodeContent.getSerialNo())
.num(qrCodeContent.getNum()) .num(qrCodeContent.getNum())
.content(qrCode)
.createBy(UserUtil.getUserName()) .createBy(UserUtil.getUserName())
.createTime(Instant.now()) .createTime(Instant.now())
.build() .build()
@ -241,15 +242,15 @@ public class InventoryController extends BaseController {
return ApiResult.success("保存" + newRecords.size() + "条数据成功"); return ApiResult.success("保存" + newRecords.size() + "条数据成功");
} }
/** // /**
* 完成盘点任务PDA使用 // * 完成盘点任务PDA使用
* @param taskId 任务ID // * @param taskId 任务ID
*/ // */
@PostMapping("check/complete") // @PostMapping("check/complete")
public ApiResult<Void> complete(@Valid @RequestParam @NotNull Long taskId) { // public ApiResult<Void> complete(@Valid @RequestParam @NotNull Long taskId) {
inventoryCheckTaskService.complete(taskId); // inventoryCheckTaskService.complete(taskId);
return ApiResult.success(); // return ApiResult.success();
} // }
/** /**
* 查看盘点结果 * 查看盘点结果

View File

@ -18,12 +18,13 @@ import com.nflg.wms.common.pojo.qo.SearchDeliverOrderQO;
import com.nflg.wms.common.pojo.vo.DeliverNormalOrderVO; import com.nflg.wms.common.pojo.vo.DeliverNormalOrderVO;
import com.nflg.wms.common.util.UserUtil; import com.nflg.wms.common.util.UserUtil;
import com.nflg.wms.common.util.VUtil; import com.nflg.wms.common.util.VUtil;
import com.nflg.wms.repository.entity.UserSupplier;
import com.nflg.wms.repository.entity.WmsNormalPrintOrder; import com.nflg.wms.repository.entity.WmsNormalPrintOrder;
import com.nflg.wms.repository.entity.WmsSrmOrder; import com.nflg.wms.repository.entity.WmsSrmOrder;
import com.nflg.wms.repository.entity.WmsSrmOrderItem; import com.nflg.wms.repository.entity.WmsSrmOrderItem;
import com.nflg.wms.repository.service.IUserSupplierService;
import com.nflg.wms.repository.service.IWmsSrmOrderItemService; import com.nflg.wms.repository.service.IWmsSrmOrderItemService;
import com.nflg.wms.repository.service.IWmsSrmOrderService; import com.nflg.wms.repository.service.IWmsSrmOrderService;
import com.nflg.wms.repository.service.IWmsWorkbenchService;
import com.nflg.wms.repository.service.WmsNormalPrintOrderService; import com.nflg.wms.repository.service.WmsNormalPrintOrderService;
import com.nflg.wms.starter.BaseController; import com.nflg.wms.starter.BaseController;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
@ -53,7 +54,7 @@ public class NormalOrderController extends BaseController {
private WmsNormalPrintOrderService deliverNormalOrderService; private WmsNormalPrintOrderService deliverNormalOrderService;
@Resource @Resource
private IWmsWorkbenchService workbenchService; private IUserSupplierService userSupplierService;
private static final DecimalFormat DF = new DecimalFormat("0.00"); private static final DecimalFormat DF = new DecimalFormat("0.00");
@ -69,8 +70,8 @@ public class NormalOrderController extends BaseController {
@Transactional @Transactional
@PostMapping("save") @PostMapping("save")
public ApiResult<Void> save(@Valid @RequestBody DeliverNormalOrderSaveQO request) { public ApiResult<Void> save(@Valid @RequestBody DeliverNormalOrderSaveQO request) {
VUtil.trueThrowBusinessError(!Objects.equals(UserUtil.getType(), UserType.Supplier)) // VUtil.trueThrowBusinessError(!Objects.equals(UserUtil.getType(), UserType.Supplier))
.throwMessage("您不是供应商"); // .throwMessage("您不是供应商");
// Set<String> workbenchNos = request.getItems().stream().map(DeliverNormalOrderSaveItemQO::getWorkbenchNo).collect(Collectors.toSet()); // Set<String> workbenchNos = request.getItems().stream().map(DeliverNormalOrderSaveItemQO::getWorkbenchNo).collect(Collectors.toSet());
// List<WmsWorkbench> workbenches = workbenchService.getBatch(workbenchNos); // List<WmsWorkbench> workbenches = workbenchService.getBatch(workbenchNos);
// Set<String> difference = Sets.difference( // Set<String> difference = Sets.difference(
@ -98,9 +99,11 @@ public class NormalOrderController extends BaseController {
request.getItems().forEach(it -> { request.getItems().forEach(it -> {
WmsNormalPrintOrder item = Convert.convert(WmsNormalPrintOrder.class, it); WmsNormalPrintOrder item = Convert.convert(WmsNormalPrintOrder.class, it);
// item.setWorkbenchId(workbenches.stream().filter(w->Objects.equals(w.getNo(),it.getWorkbenchNo())).findFirst().get().getId()); // item.setWorkbenchId(workbenches.stream().filter(w->Objects.equals(w.getNo(),it.getWorkbenchNo())).findFirst().get().getId());
UserSupplier supplier = userSupplierService.getByCode(it.getSupplierNo());
VUtil.trueThrowBusinessError(Objects.isNull(supplier)).throwMessage("供应商不存在");
if (Objects.isNull(item.getId())) { if (Objects.isNull(item.getId())) {
item.setOrderNo(orderNo); item.setOrderNo(orderNo);
item.setSupplierId(UserUtil.getUserId()); item.setSupplierId(supplier.getUserId());
item.setCreateBy(UserUtil.getUserName()); item.setCreateBy(UserUtil.getUserName());
item.setCreateTime(LocalDateTime.now()); item.setCreateTime(LocalDateTime.now());
forAdd.add(item); forAdd.add(item);

View File

@ -133,6 +133,7 @@ public class StructuralPackageOrderController extends BaseController {
.map(order -> new SAPOrderDTO() .map(order -> new SAPOrderDTO()
.setIndex(IdUtil.getSnowflakeNextId()) .setIndex(IdUtil.getSnowflakeNextId())
.setOrderNo(order.getEbeln()) .setOrderNo(order.getEbeln())
.setSupplierNo(request.getSupplierNo())
.setSupplierName(supplier.getSupplierName()) .setSupplierName(supplier.getSupplierName())
.setOrderRowNo(order.getEbelp()) .setOrderRowNo(order.getEbelp())
.setMaterialNo(order.getMatnr()) .setMaterialNo(order.getMatnr())
@ -146,9 +147,7 @@ public class StructuralPackageOrderController extends BaseController {
.toList(); .toList();
if (Objects.equals(request.getType(), 1)) { if (Objects.equals(request.getType(), 1)) {
datas.forEach(it -> { datas.forEach(it -> {
if (StrUtil.equals("2", it.getLbprt()) || StrUtil.equals("4", it.getLbprt())) { it.setBatchNo(NoUtil.getBatchNo(request.getSupplierNo()));
it.setBatchNo(NoUtil.getBatchNo(request.getSupplierNo()));
}
}); });
} }
return ApiResult.success(datas); return ApiResult.success(datas);

View File

@ -63,6 +63,11 @@ public class InventoryCheckTaskScanRecord {
*/ */
private BigDecimal num; private BigDecimal num;
/**
* 二维码内容
*/
private String content;
/** /**
* 创建人 * 创建人
*/ */

View File

@ -76,8 +76,9 @@ public class SapService {
JCoFunction function = exec("ZWM00_MB007", parameters); JCoFunction function = exec("ZWM00_MB007", parameters);
JCoStructure sreturn = function.getExportParameterList().getStructure("E_RETURN"); JCoStructure sreturn = function.getExportParameterList().getStructure("E_RETURN");
log.info("sreturn:" + sreturn);
VUtil.trueThrowBusinessError(!StrUtil.equals(sreturn.getString("TYPE"), "S")) VUtil.trueThrowBusinessError(!StrUtil.equals(sreturn.getString("TYPE"), "S"))
.throwMessage("SAP错误:" + sreturn.getString("MSG")); .throwMessage("SAP错误:" + sreturn.getString("MESSAGE"));
JCoStructure structure = function.getExportParameterList().getStructure("E_OUTPUT"); JCoStructure structure = function.getExportParameterList().getStructure("E_OUTPUT");
return JCoUtil.toBean(structure, ZWM00MB007DTO.class); return JCoUtil.toBean(structure, ZWM00MB007DTO.class);
@ -407,12 +408,12 @@ public class SapService {
// 处理返回表 T_RETURN判断执行是否成功 // 处理返回表 T_RETURN判断执行是否成功
JCoTable returnTable = function.getTableParameterList().getTable("T_RETURN"); JCoTable returnTable = function.getTableParameterList().getTable("T_RETURN");
VUtil.trueThrowBusinessError(returnTable.getNumRows() <= 0).throwMessage("获取Type信息有误"); log.info("SAP返回: {}", returnTable);
VUtil.trueThrowBusinessError(returnTable.getNumRows() <= 0).throwMessage("SAP未返回结果状态");
returnTable.setRow(0); returnTable.setRow(0);
VUtil.trueThrowBusinessError(StrUtil.equals(returnTable.getString("E_TYPE"), "E")) VUtil.trueThrowBusinessError(StrUtil.equals(returnTable.getString("TYPE"), "E"))
.throwMessage(returnTable.getString("E_MSG")); .throwMessage(returnTable.getString("MESSAGE"));
log.info("SAP返回: {}", returnTable);
// 获取导出参数构造返回结果对象 // 获取导出参数构造返回结果对象
JCoParameterList exportParam = function.getExportParameterList(); JCoParameterList exportParam = function.getExportParameterList();
@ -823,20 +824,13 @@ public class SapService {
// 调用 SAP RFC 函数 ZWM00_MB112 // 调用 SAP RFC 函数 ZWM00_MB112
JCoFunction function = exec("ZWM3A11", parameters, tables); JCoFunction function = exec("ZWM3A11", parameters, tables);
// 处理返回表 T_RETURN判断执行是否成功 JCoStructure output1 = function.getExportParameterList().getStructure("OUTPUT1");
JCoTable returnTable = function.getTableParameterList().getTable("OUTPUT2"); VUtil.trueThrowBusinessError(!StrUtil.equals(output1.getString("TYPE"), "S"))
VUtil.trueThrowBusinessError(returnTable.getNumRows() <= 0).throwMessage("获取Type信息有误"); .throwMessage(output1.getString("MSG"));
returnTable.setRow(0);
VUtil.trueThrowBusinessError(!StrUtil.equals(returnTable.getString("TYPE"), "S"))
.throwMessage(returnTable.getString("MESSAGE"));
log.info("SAP返回: {}", returnTable);
// 获取导出参数构造返回结果对象
JCoParameterList exportParam = function.getExportParameterList();
VUtil.trueThrowBusinessError(Objects.isNull(exportParam)).throwMessage("无法获取到有效的物料凭证信息");
Zwm3a11VO result = new Zwm3a11VO() Zwm3a11VO result = new Zwm3a11VO()
.setMat_doc(exportParam.getString("MAT_DOC")) .setMat_doc(output1.getString("MAT_DOC"))
.setDocYear(exportParam.getString("DOC_YEAR")); .setDocYear(output1.getString("DOC_YEAR"));
log.info("SAP返回物料凭证信息: MBLNR={}, MJAHR={}", result.getMat_doc(), result.getDocYear()); log.info("SAP返回物料凭证信息: MBLNR={}, MJAHR={}", result.getMat_doc(), result.getDocYear());
return result; return result;
} }
@ -1154,8 +1148,8 @@ public ZWM00MB113DTO zwm00_mb113(ZWM00MB113QO query) {
// 获取并校验导出参数判断调用是否成功 // 获取并校验导出参数判断调用是否成功
JCoParameterList exportParam = function.getExportParameterList(); JCoParameterList exportParam = function.getExportParameterList();
VUtil.trueThrowBusinessError(Objects.isNull(exportParam)).throwMessage("无法获取到有效的物料信息"); VUtil.trueThrowBusinessError(Objects.isNull(exportParam)).throwMessage("无法获取到有效的物料信息");
VUtil.trueThrowBusinessError(!StrUtil.equals(exportParam.getString("TYPE"), "S")) VUtil.trueThrowBusinessError(!StrUtil.equals(exportParam.getString("E_TYPE"), "S"))
.throwMessage(exportParam.getString("MESSAGE")); .throwMessage(exportParam.getString("E_MSG"));
// 处理返回表数据转换为结果对象列表 // 处理返回表数据转换为结果对象列表
JCoTable returnTable = function.getTableParameterList().getTable("T_OUT"); JCoTable returnTable = function.getTableParameterList().getTable("T_OUT");

View File

@ -136,7 +136,7 @@ public class StructuralPackageControllerService {
List<PackageMaterialDTO> materials = JSONUtil.toList(p.getMaterials(), PackageMaterialDTO.class); List<PackageMaterialDTO> materials = JSONUtil.toList(p.getMaterials(), PackageMaterialDTO.class);
WmsStructuralPackage structuralPackage = Convert.convert(WmsStructuralPackage.class, request); WmsStructuralPackage structuralPackage = Convert.convert(WmsStructuralPackage.class, request);
structuralPackage.setId(null); structuralPackage.setId(null);
structuralPackage.setOrderNo(p.getOrderNo()); structuralPackage.setOrderNo(getOrderNo());
structuralPackage.setCreateBy(UserUtil.getUserName()); structuralPackage.setCreateBy(UserUtil.getUserName());
structuralPackage.setCreateTime(LocalDateTime.now()); structuralPackage.setCreateTime(LocalDateTime.now());
structuralPackage.setModelIds(StrUtil.join(",", request.getModelIds())); structuralPackage.setModelIds(StrUtil.join(",", request.getModelIds()));

View File

@ -7,6 +7,7 @@ import com.nflg.wms.common.util.BeanUtil;
import com.sap.conn.jco.*; import com.sap.conn.jco.*;
import java.util.*; import java.util.*;
import java.util.stream.Collectors;
public class JCoUtil { public class JCoUtil {
@ -47,7 +48,11 @@ public class JCoUtil {
} }
public static <T> List<Map<String, Object>> toMapList(List<T> datas) { public static <T> List<Map<String, Object>> toMapList(List<T> datas) {
return datas.stream().map(BeanUtil::toMap).toList(); return datas.stream().map(BeanUtil::toMap)
.map(list -> list.entrySet().stream()
.collect(Collectors.toMap(entry -> entry.getKey().toUpperCase(),
Map.Entry::getValue)))
.toList();
} }
public static <T> List<Map<String, Object>> toMapList(T data) { public static <T> List<Map<String, Object>> toMapList(T data) {

View File

@ -100,6 +100,15 @@ public class DepartmentMaterialReturnSlipDTO {
*/ */
private BigDecimal num; private BigDecimal num;
/**
* 预留/相关需求的项目编号
*/
private String rspos;
public String getRspos() {
return StrUtil.removeAllPrefix(rspos, "0");
}
public BigDecimal getNum() { public BigDecimal getNum() {
return Objects.isNull(num) ? bdmng : num; return Objects.isNull(num) ? bdmng : num;
} }

View File

@ -72,6 +72,11 @@ public class SAPOrderDTO {
*/ */
private String batchNo; private String batchNo;
/**
* 供应商编号
*/
private String supplierNo;
/** /**
* 供应商名称 * 供应商名称
*/ */

View File

@ -1,10 +1,12 @@
package com.nflg.wms.common.pojo.dto; package com.nflg.wms.common.pojo.dto;
import lombok.Data; import lombok.Data;
import lombok.experimental.Accessors;
import java.util.List; import java.util.List;
@Data @Data
@Accessors(chain = true)
public class ZWM3A21QueryDTO{ public class ZWM3A21QueryDTO{
//工厂 //工厂
private String i_werks; private String i_werks;

View File

@ -87,4 +87,10 @@ public class DeliverNormalOrderSaveItemQO {
*/ */
@NotBlank @NotBlank
private String lbprt; private String lbprt;
/**
* 供应商编号
*/
@NotBlank
private String supplierNo;
} }

View File

@ -1,8 +1,10 @@
package com.nflg.wms.common.pojo.qo; package com.nflg.wms.common.pojo.qo;
import lombok.Data; import lombok.Data;
import lombok.experimental.Accessors;
@Data @Data
@Accessors(chain = true)
public class Zwm3a11Input2QO { public class Zwm3a11Input2QO {
//序列号 //序列号
private String sernr; private String sernr;

View File

@ -3,6 +3,8 @@ package com.nflg.wms.common.pojo.vo;
import lombok.Data; import lombok.Data;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Objects;
import java.util.Optional;
@Data @Data
public class InventoryCheckTaskItemMaterialVO { public class InventoryCheckTaskItemMaterialVO {
@ -65,6 +67,10 @@ public class InventoryCheckTaskItemMaterialVO {
private BigDecimal differenceNum; private BigDecimal differenceNum;
public BigDecimal getDifferenceNum() { public BigDecimal getDifferenceNum() {
return this.inventoryNum.subtract(this.num); if (Objects.isNull(inventoryNum)) {
return num.multiply(new BigDecimal("-1"));
} else {
return this.inventoryNum.subtract(Optional.ofNullable(num).orElse(BigDecimal.ZERO));
}
} }
} }

View File

@ -1,9 +1,10 @@
package com.nflg.wms.common.pojo.vo; package com.nflg.wms.common.pojo.vo;
import cn.hutool.core.date.DateTime;
import lombok.Data; import lombok.Data;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
import java.time.LocalDateTime;
@Data @Data
@Accessors(chain = true) @Accessors(chain = true)
public class QCTaskVO { public class QCTaskVO {
@ -31,5 +32,5 @@ public class QCTaskVO {
/*** /***
* 创建时间 * 创建时间
*/ */
private DateTime createTime; private LocalDateTime createTime;
} }

View File

@ -30,7 +30,7 @@ public class BeanUtil {
return cn.hutool.core.bean.BeanUtil.toBean(map, clazz); return cn.hutool.core.bean.BeanUtil.toBean(map, clazz);
} }
public static Map<String, Object> toMap(Object source) { public static <T> Map<String, Object> toMap(T source) {
return new HashMap<>(BeanMap.create(source)); return new HashMap<>(BeanMap.create(source));
} }
} }

View File

@ -86,4 +86,9 @@ public class WmsInCostcenterBackItem implements Serializable {
*/ */
@TableField(value = "\"left\"") @TableField(value = "\"left\"")
private BigDecimal left; private BigDecimal left;
/**
* 预留/相关需求的项目编号
*/
private String rspos;
} }

View File

@ -129,4 +129,9 @@ public class WmsInProduceBackItem implements Serializable {
* 已上架数量 * 已上架数量
*/ */
private BigDecimal num; private BigDecimal num;
/**
* 标识
*/
private String lbprt;
} }

View File

@ -22,7 +22,7 @@
and plnbez like concat('%', #{request.plnbez}, '%') and plnbez like concat('%', #{request.plnbez}, '%')
</if> </if>
<if test="request.lgort2!=null and request.lgort2!=''"> <if test="request.lgort2!=null and request.lgort2!=''">
and plnbez like concat('%', #{request.lgort2}, '%') and lgort2 like concat('%', #{request.lgort2}, '%')
</if> </if>
<if test="request.startDate!=null"> <if test="request.startDate!=null">
and create_time >= #{request.startDate} and create_time >= #{request.startDate}

View File

@ -12,7 +12,7 @@
</select> </select>
<select id="getInfo" resultType="com.nflg.wms.common.pojo.vo.InventoryCheckTaskItemVO"> <select id="getInfo" resultType="com.nflg.wms.common.pojo.vo.InventoryCheckTaskItemVO">
SELECT icti.id,ict.*,di."name" AS "factory_no",wh."name" AS "warehouse_name" SELECT icti.id,icti.task_id,ict.*,di."name" AS "factory_no",wh."name" AS "warehouse_name"
FROM wms_inventory_check_task ict FROM wms_inventory_check_task ict
INNER JOIN wms_inventory_check_task_item icti ON ict."id"=icti.task_id INNER JOIN wms_inventory_check_task_item icti ON ict."id"=icti.task_id
LEFT JOIN wms_warehouse wh ON wh."id"=icti.warehouse_id LEFT JOIN wms_warehouse wh ON wh."id"=icti.warehouse_id

View File

@ -23,8 +23,10 @@ public class InventoryCheckTaskProcessor implements BasicProcessor {
public ProcessResult process(TaskContext context) { public ProcessResult process(TaskContext context) {
OmsLogger omsLogger = context.getOmsLogger(); OmsLogger omsLogger = context.getOmsLogger();
omsLogger.info("开始"); omsLogger.info("开始");
List<WmsInventoryCheckTask> datas = inventoryCheckTaskService.lambdaQuery().eq(WmsInventoryCheckTask::getState, InventoryCheckTaskState.Published.getState()).list(); List<WmsInventoryCheckTask> datas = inventoryCheckTaskService.lambdaQuery()
omsLogger.info("共【{}】条已发布数据", datas.size()); .in(WmsInventoryCheckTask::getState, List.of(InventoryCheckTaskState.Published.getState(), InventoryCheckTaskState.InProgress.getState()))
.list();
omsLogger.info("共【{}】条数据", datas.size());
datas.forEach(data -> { datas.forEach(data -> {
omsLogger.info("处理【{}】开始", data.getTaskNo()); omsLogger.info("处理【{}】开始", data.getTaskNo());
if (LocalDate.now().isAfter(data.getEndTime())) { if (LocalDate.now().isAfter(data.getEndTime())) {

View File

@ -130,6 +130,11 @@
<artifactId>minio</artifactId> <artifactId>minio</artifactId>
<version>8.5.17</version> <version>8.5.17</version>
</dependency> </dependency>
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
<version>2.15.2</version>
</dependency>
</dependencies> </dependencies>
<build> <build>

View File

@ -5,6 +5,7 @@ import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.*; import com.fasterxml.jackson.databind.*;
import com.fasterxml.jackson.databind.module.SimpleModule; import com.fasterxml.jackson.databind.module.SimpleModule;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer; import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer; import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateSerializer; import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateSerializer;
@ -27,6 +28,7 @@ public class JacksonConfig {
return new ObjectMapper() return new ObjectMapper()
.registerModule(customDateTimeModule()) .registerModule(customDateTimeModule())
.registerModule(bigDecimalModule()) .registerModule(bigDecimalModule())
.registerModule(new JavaTimeModule())
.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false) .configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false)
.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false) .configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false)
.configure(SerializationFeature.INDENT_OUTPUT, false); .configure(SerializationFeature.INDENT_OUTPUT, false);