添加功能

This commit is contained in:
曹鹏飞 2025-07-24 18:51:12 +08:00
parent 2937eeeab2
commit 58637851e4
34 changed files with 495 additions and 66 deletions

View File

@ -61,11 +61,6 @@
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId> <artifactId>spring-boot-starter-mail</artifactId>
</dependency> </dependency>
<dependency>
<groupId>cglib</groupId>
<artifactId>cglib</artifactId>
<scope>compile</scope>
</dependency>
<dependency> <dependency>
<groupId>commons-io</groupId> <groupId>commons-io</groupId>
<artifactId>commons-io</artifactId> <artifactId>commons-io</artifactId>

View File

@ -3,6 +3,7 @@ package com.nflg.wms.admin.controller;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.convert.Convert; import cn.hutool.core.convert.Convert;
import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.RandomUtil; import cn.hutool.core.util.RandomUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import cn.hutool.crypto.digest.DigestUtil; import cn.hutool.crypto.digest.DigestUtil;
@ -20,8 +21,10 @@ 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.PackageMaterialDTO; import com.nflg.wms.common.pojo.dto.PackageMaterialDTO;
import com.nflg.wms.common.pojo.dto.SAPOrderDTO; import com.nflg.wms.common.pojo.dto.SAPOrderDTO;
import com.nflg.wms.common.pojo.dto.SAPSyncFromDTO;
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.BeanUtil;
import com.nflg.wms.common.util.EecExcelUtil; import com.nflg.wms.common.util.EecExcelUtil;
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;
@ -35,6 +38,7 @@ import jakarta.validation.Valid;
import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotEmpty; import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.NotNull;
import lombok.extern.slf4j.Slf4j;
import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.ClassPathResource;
import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@ -47,7 +51,6 @@ import java.io.InputStream;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.net.URL; import java.net.URL;
import java.time.Instant; import java.time.Instant;
import java.time.LocalDate;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -55,6 +58,7 @@ import java.util.stream.Collectors;
/** /**
* 钢构件订单管理 * 钢构件订单管理
*/ */
@Slf4j
@RestController @RestController
@RequestMapping("/deliver/order/package") @RequestMapping("/deliver/order/package")
public class StructuralPackageOrderController extends BaseController { public class StructuralPackageOrderController extends BaseController {
@ -89,6 +93,9 @@ public class StructuralPackageOrderController extends BaseController {
@Resource @Resource
private IWmsStructuralPackageDeliverOrderMapService structuralPackageDeliverOrderMapService; private IWmsStructuralPackageDeliverOrderMapService structuralPackageDeliverOrderMapService;
@Resource
private IWmsStructuralPackageStorageTaskService structuralPackageStorageTaskService;
/** /**
* 搜索SAP订单 * 搜索SAP订单
* @param request 请求参数 * @param request 请求参数
@ -141,7 +148,7 @@ public class StructuralPackageOrderController extends BaseController {
.setMaterialDesc(material.getName()) .setMaterialDesc(material.getName())
.setVersion(material.getVersion()) .setVersion(material.getVersion())
.setWeight(material.getWeight()) .setWeight(material.getWeight())
.setPlanNum(material.getNum().multiply(BigDecimal.valueOf(num))) .setPlanNum(material.getNum()*num)
.setImage(material.getImage()) .setImage(material.getImage())
); );
if (Objects.nonNull(material.getWeight())) { if (Objects.nonNull(material.getWeight())) {
@ -194,7 +201,7 @@ public class StructuralPackageOrderController extends BaseController {
.setOrderId(order.getId()) .setOrderId(order.getId())
.setNo(it.getNo()) .setNo(it.getNo())
.setWeight(BigDecimal.ZERO) .setWeight(BigDecimal.ZERO)
.setNum(BigDecimal.ZERO) .setNum(0)
.setStation(it.getStation()) .setStation(it.getStation())
.setTray(it.getTray())).toList(); .setTray(it.getTray())).toList();
List<WmsStructuralPackageOrderTrayItem> items = new ArrayList<>(); List<WmsStructuralPackageOrderTrayItem> items = new ArrayList<>();
@ -204,8 +211,8 @@ public class StructuralPackageOrderController extends BaseController {
WmsStructuralPackageOrderTrayItem item = Convert.convert(WmsStructuralPackageOrderTrayItem.class, it); WmsStructuralPackageOrderTrayItem item = Convert.convert(WmsStructuralPackageOrderTrayItem.class, it);
item.setOrderId(order.getId()); item.setOrderId(order.getId());
item.setTrayId(tray.getId()); item.setTrayId(tray.getId());
tray.setNum(tray.getNum().add(item.getPlanNum().multiply(BigDecimal.valueOf(order.getNum())))); tray.setNum(tray.getNum()+(item.getPlanNum()*order.getNum()));
tray.setWeight(tray.getWeight().add(item.getPlanNum().multiply(it.getWeight()))); tray.setWeight(tray.getWeight().add(NumberUtil.mul(it.getWeight(),new BigDecimal(item.getPlanNum()))));
return item; return item;
}).toList() }).toList()
); );
@ -391,12 +398,17 @@ public class StructuralPackageOrderController extends BaseController {
DeliverStructuralPackageOrderExtendVO trayVO = deliverStructuralPackageOrderTrayService.getInfo(id); DeliverStructuralPackageOrderExtendVO trayVO = deliverStructuralPackageOrderTrayService.getInfo(id);
VUtil.trueThrowBusinessError(Objects.isNull(trayVO)).throwMessage("数据不存在"); VUtil.trueThrowBusinessError(Objects.isNull(trayVO)).throwMessage("数据不存在");
List<DeliverStructuralPackageOrderTrayItemVO> list = deliverStructuralPackageOrderTrayItemService.getListByTrayId(id); List<DeliverStructuralPackageOrderTrayItemVO> list = deliverStructuralPackageOrderTrayItemService.getListByTrayId(id);
List<DeliverStructuralPackageOrderTrayItemVO> datas = new ArrayList<>();
for (DeliverStructuralPackageOrderTrayItemVO it : list) { for (DeliverStructuralPackageOrderTrayItemVO it : list) {
it.setQrCode(com.nflg.wms.common.util.DateTimeUtil.format(LocalDate.now(),"yyyyMMdd")+RandomUtil.randomString(6) +"_"+it.getMaterialNo() + "_" + it.getTrayNo() + "_1"); for (int i = 0; i < it.getPlanNum(); i++) {
it.setQrCodeImage("data:image/png;base64," + Base64.getEncoder().encodeToString(QRCodeUtil.generateQRCode(it.getQrCode(), 200, 200))); DeliverStructuralPackageOrderTrayItemVO vo = BeanUtil.copy(it, DeliverStructuralPackageOrderTrayItemVO.class);
vo.setQrCode(it.getId() + "-" + (i + 1) + "^" + it.getMaterialNo() + "_" + it.getTrayNo() + "_1");
vo.setQrCodeImage("data:image/png;base64," + Base64.getEncoder().encodeToString(QRCodeUtil.generateQRCode(vo.getQrCode(), 200, 200)));
datas.add(vo);
}
} }
Map<String, Object> variables = new HashMap<>(); Map<String, Object> variables = new HashMap<>();
variables.put("list", list); variables.put("list", datas);
String html = ThymeleafUtil.generator("/template/qrcode/", "spitem", ".html", variables); String html = ThymeleafUtil.generator("/template/qrcode/", "spitem", ".html", variables);
URL baseUrl = new ClassPathResource("template/qrcode/").getURL(); URL baseUrl = new ClassPathResource("template/qrcode/").getURL();
PdfGeneratorUtil.generatePdf(trayVO.getExternalOrderNo() + "-" + trayVO.getWorkbenchCode() + "标签", html, baseUrl.toString(), response); PdfGeneratorUtil.generatePdf(trayVO.getExternalOrderNo() + "-" + trayVO.getWorkbenchCode() + "标签", html, baseUrl.toString(), response);
@ -439,7 +451,7 @@ public class StructuralPackageOrderController extends BaseController {
} }
/** /**
* 根据托盘号获取托盘信息(打包用) * 根据托盘号获取托盘信息PDA使用
*/ */
@GetMapping("getTrayInfoByNo") @GetMapping("getTrayInfoByNo")
public ApiResult<DeliverStructuralPackageOrderTrayVO> getTrayInfoByNo(@Valid @RequestParam @NotBlank String trayNo){ public ApiResult<DeliverStructuralPackageOrderTrayVO> getTrayInfoByNo(@Valid @RequestParam @NotBlank String trayNo){
@ -459,13 +471,13 @@ public class StructuralPackageOrderController extends BaseController {
WmsStructuralPackageOrderTray tray = deliverStructuralPackageOrderTrayService.lambdaQuery().eq(WmsStructuralPackageOrderTray::getNo, request.getTrayNo()).one(); WmsStructuralPackageOrderTray tray = deliverStructuralPackageOrderTrayService.lambdaQuery().eq(WmsStructuralPackageOrderTray::getNo, request.getTrayNo()).one();
VUtil.trueThrowBusinessError(Objects.isNull(tray)).throwMessage("托盘不存在"); VUtil.trueThrowBusinessError(Objects.isNull(tray)).throwMessage("托盘不存在");
VUtil.trueThrowBusinessError(!Objects.equals(tray.getState(), OrderState.Unpackaged.getState())).throwMessage("请勿重复打包"); VUtil.trueThrowBusinessError(!Objects.equals(tray.getState(), OrderState.Unpackaged.getState())).throwMessage("请勿重复打包");
VUtil.trueThrowBusinessError(tray.getNum().compareTo(BigDecimal.valueOf(request.getQrCodes().size())) == 0).throwMessage("打包数量不足"); VUtil.trueThrowBusinessError(tray.getNum().compareTo(request.getQrCodes().size()) != 0).throwMessage("打包数量不足");
VUtil.trueThrowBusinessError(!deliverStructuralPackageOrderTrayService.lambdaUpdate() VUtil.trueThrowBusinessError(!deliverStructuralPackageOrderTrayService.lambdaUpdate()
.set(WmsStructuralPackageOrderTray::getState, OrderState.Packaged.getState()) .set(WmsStructuralPackageOrderTray::getState, OrderState.Packaged.getState())
.set(WmsStructuralPackageOrderTray::getPackBy, UserUtil.getUserName()) .set(WmsStructuralPackageOrderTray::getPackBy, UserUtil.getUserName())
.set(WmsStructuralPackageOrderTray::getPackTime, LocalDateTime.now()) .set(WmsStructuralPackageOrderTray::getPackTime, LocalDateTime.now())
.eq(WmsStructuralPackageOrderTray::getState, OrderState.Unpackaged.getState()) .eq(WmsStructuralPackageOrderTray::getState, OrderState.Unpackaged.getState())
.eq(WmsStructuralPackageOrderTray::getTray, request.getTrayNo()) .eq(WmsStructuralPackageOrderTray::getNo, request.getTrayNo())
.update()).throwMessage("打包失败,请重试"); .update()).throwMessage("打包失败,请重试");
packageMaterialScanRecordRepository.saveAll(request.getQrCodes().stream().map(qrCode -> { packageMaterialScanRecordRepository.saveAll(request.getQrCodes().stream().map(qrCode -> {
List<String> qrContents = StrUtil.split(qrCode, "^"); List<String> qrContents = StrUtil.split(qrCode, "^");
@ -519,7 +531,7 @@ public class StructuralPackageOrderController extends BaseController {
.throwMessage("采购单号必须一致"); .throwMessage("采购单号必须一致");
Long packageId = trays.get(0).getPackageId(); Long packageId = trays.get(0).getPackageId();
String externalOrderNo = trays.get(0).getExternalOrderNo(); String externalOrderNo = trays.get(0).getExternalOrderNo();
Long supplierId=trays.get(0).getSupplierId(); Long supplierId = trays.get(0).getSupplierId();
List<Long> tids = deliverStructuralPackageOrderTrayService.getIdsByMaterialAndExternalOrderNo(packageId, externalOrderNo); List<Long> tids = deliverStructuralPackageOrderTrayService.getIdsByMaterialAndExternalOrderNo(packageId, externalOrderNo);
VUtil.trueThrowBusinessError(tids.size() != ids.size()).throwMessage("数据未齐套"); VUtil.trueThrowBusinessError(tids.size() != ids.size()).throwMessage("数据未齐套");
String deliverOrderNo = RandomUtil.randomString(10); String deliverOrderNo = RandomUtil.randomString(10);
@ -532,6 +544,7 @@ public class StructuralPackageOrderController extends BaseController {
structuralPackageDeliverOrderMapService.saveBatch(ids.stream().map(id -> new WmsStructuralPackageDeliverOrderMap() structuralPackageDeliverOrderMapService.saveBatch(ids.stream().map(id -> new WmsStructuralPackageDeliverOrderMap()
.setDeliverId(deliverOrder.getId()) .setDeliverId(deliverOrder.getId())
.setOrderId(id)).toList()); .setOrderId(id)).toList());
deliverStructuralPackageOrderTrayService.setStateByIds(ids, OrderState.InTransit);
return ApiResult.success(); return ApiResult.success();
} }
@ -545,12 +558,92 @@ public class StructuralPackageOrderController extends BaseController {
} }
/** /**
* 根据送货单号查询订单信息 * 根据送货单号查询订单信息PDA使用
* @param orderNo 送货单号 * @param orderNo 送货单号
*/ */
@GetMapping("getInfoByExternalOrderNo") @GetMapping("getInfoByExternalOrderNo")
public ApiResult<DeliverStructuralPackageOrderForPackageVO> getInfoByExternalOrderNo(@Valid @RequestParam @NotBlank String orderNo){ public ApiResult<DeliverStructuralPackageOrderForPackageVO> getInfoByExternalOrderNo(@Valid @RequestParam @NotBlank String orderNo) {
List<DeliverStructuralPackageOrderForPackageItemVO> datas=deliverStructuralPackageOrderService.getInfoByExternalOrderNo(orderNo); List<DeliverStructuralPackageOrderForPackageItemVO> datas = deliverStructuralPackageOrderService.getInfoByExternalOrderNo(orderNo);
return ApiResult.success(new DeliverStructuralPackageOrderForPackageVO()); VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(datas)).throwMessage("未找到数据");
datas.forEach(it -> {
it.setTrayNos(deliverStructuralPackageOrderTrayService.lambdaQuery()
.select(WmsStructuralPackageOrderTray::getNo)
.eq(WmsStructuralPackageOrderTray::getOrderId, it.getId())
.list()
.stream()
.map(WmsStructuralPackageOrderTray::getNo)
.toList());
//SAP
SAPMaterialInfoInOrderDTO dto1 = sapService.getMaterialInfoInOrder(it.getExternalOrderNo(), it.getSupplierCode(), it.getPackageNo());
if (Objects.isNull(dto1)) {
log.error("{},{},{}未从SAP的ZIM_004接口查询到数据", it.getExternalOrderNo(), it.getSupplierCode(), it.getPackageNo());
} else if (StrUtil.isBlank(dto1.getWarehouseNo())) {
log.error("{},{},{}未从SAP的ZIM_004接口查询仓库为空", it.getExternalOrderNo(), it.getSupplierCode(), it.getPackageNo());
} else {
it.setWarehouseNo(dto1.getWarehouseNo());
List<SAPSyncFromDTO> dtos = sapService.getStorage("1010", List.of(dto1.getWarehouseNo()), List.of(it.getPackageNo()), null, null);
if (CollectionUtil.isEmpty(dtos)) {
log.error("{},{},{}未从SAP的ZWM3A01接口查询到数据", "1010", dto1.getWarehouseNo(), it.getPackageNo());
} else {
it.setBinNos(dtos.get(0).getBinNos());
}
}
});
DeliverStructuralPackageOrderForPackageVO vo = new DeliverStructuralPackageOrderForPackageVO();
vo.setItems(datas);
vo.setSupplierCode(datas.get(0).getSupplierCode());
vo.setSupplierName(datas.get(0).getSupplierName());
return ApiResult.success(vo);
}
/**
* 收货PDA使用
* @param request 请求参数
*/
@Transactional
@PostMapping("receive")
public ApiResult<Void> receive(@Valid @RequestBody @NotNull StructuralPackageOrderReceiveQO request) {
List<String> trayNos = deliverStructuralPackageOrderTrayService.lambdaQuery()
.select(WmsStructuralPackageOrderTray::getNo)
.eq(WmsStructuralPackageOrderTray::getOrderId, request.getId())
.list()
.stream()
.map(WmsStructuralPackageOrderTray::getNo)
.toList();
VUtil.trueThrowBusinessError(!new HashSet<>(trayNos).equals(new HashSet<>(request.getTrayNos())))
.throwMessage("托盘未齐套");
VUtil.trueThrowBusinessError(!deliverStructuralPackageOrderTrayService.lambdaQuery()
.eq(WmsStructuralPackageOrderTray::getOrderId, request.getId())
.eq(WmsStructuralPackageOrderTray::getState, OrderState.InTransit.getState())
.exists())
.throwMessage("没有需要收货的数据");
deliverStructuralPackageOrderTrayService.lambdaUpdate()
.set(WmsStructuralPackageOrderTray::getState, OrderState.Received.getState())
.set(WmsStructuralPackageOrderTray::getReceiveBy,UserUtil.getUserName())
.set(WmsStructuralPackageOrderTray::getReceiveTime, LocalDateTime.now())
.eq(WmsStructuralPackageOrderTray::getOrderId, request.getId())
.eq(WmsStructuralPackageOrderTray::getState, OrderState.InTransit.getState())
.update();
//创建上架任务
String deliverOrderNo = structuralPackageDeliverOrderService.getNoByOrderId(request.getId());
String taskNo = "NFS" + deliverOrderNo;
if (Objects.isNull(structuralPackageStorageTaskService.lambdaQuery().eq(WmsStructuralPackageStorageTask::getNo, taskNo).one())){
structuralPackageStorageTaskService.save(new WmsStructuralPackageStorageTask()
.setNo(taskNo)
.setSourceFrom(1)
.setSourceNo(deliverOrderNo)
.setCreateTime(LocalDateTime.now())
);
}
return ApiResult.success();
}
/**
* 搜索上架任务
* @param request 查询参数
*/
@PostMapping("searchStorageTask")
public ApiResult<PageData<WmsStructuralPackageStorageTask>> searchStorageTask(@Valid @RequestBody @NotNull StructuralPackageStorageTaskSearchQO request){
return ApiResult.success(structuralPackageStorageTaskService.search(request));
} }
} }

View File

@ -13,4 +13,9 @@ public class SAPMaterialInfoInOrderDTO {
* 未收货数量 * 未收货数量
*/ */
private BigDecimal transportNum; private BigDecimal transportNum;
/**
* 仓库编号
*/
private String warehouseNo;
} }

View File

@ -6,15 +6,13 @@ import com.nflg.wms.admin.pojo.dto.SAPMaterialInfoInOrderDTO;
import com.nflg.wms.common.constant.STATE; import com.nflg.wms.common.constant.STATE;
import com.nflg.wms.common.exception.NflgException; import com.nflg.wms.common.exception.NflgException;
import com.nflg.wms.common.pojo.dto.SAPOrderDTO; import com.nflg.wms.common.pojo.dto.SAPOrderDTO;
import com.nflg.wms.common.pojo.dto.SAPSyncFromDTO;
import com.sap.conn.jco.*; import com.sap.conn.jco.*;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.util.ArrayList; import java.util.*;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Slf4j @Slf4j
@Component @Component
@ -26,9 +24,57 @@ public class SapService {
@Resource @Resource
private JCoRepository repository; private JCoRepository repository;
/**
* 获取库存信息
* @param factory 工厂编号
* @param warehouseNos 仓库编号列表
* @param beginTime 开始时间格式yyyyMMdd
* @param endTime 结束时间格式yyyyMMdd
*/
public List<SAPSyncFromDTO> getStorage(String factory, List<String> warehouseNos,List<String> materialNos, String beginTime, String endTime) {
Map<String, Object> parameters = new HashMap<>();
parameters.put("I_WERKS", factory);
parameters.put("I_TYPE", Objects.nonNull(beginTime) || Objects.nonNull(endTime) ? "I" : "A");
if (Objects.nonNull(beginTime)) {
parameters.put("S_DATE", beginTime);
}
if (Objects.nonNull(endTime)) {
parameters.put("E_DATE", endTime);
}
Map<String, List<Map<String, Object>>> tables = new HashMap<>();
List<Map<String, Object>> warehouses = new ArrayList<>();
warehouseNos.forEach(warehouseNo -> {
warehouses.add(Map.of("LGORT", warehouseNo));
});
tables.put("IT_LGORT", warehouses);
List<Map<String, Object>> materials = new ArrayList<>();
materialNos.forEach(materialNo -> {
materials.add(Map.of("MATNR", materialNo));
});
tables.put("IT_MATNR", materials);
JCoTable tOut = exec("ZWM3A01", parameters, tables);
List<SAPSyncFromDTO> result = new ArrayList<>();
for (int i = 0; i < tOut.getNumRows(); i++) {
tOut.setRow(i);
result.add(new SAPSyncFromDTO()
.setFactoryNo(tOut.getString("WERKS"))
.setMaterialNo(tOut.getString("MATNR"))
.setMaterialDesc(tOut.getString("MAKTX"))
.setWarehouseNo(tOut.getString("LGORT"))
.setWarehouseName(tOut.getString("LGOBE"))
.setBinNos(tOut.getString("LGPBE")))
;
}
log.debug("数据:{}", JSONUtil.toJsonStr(result));
return result;
}
/** /**
* 获取订单中物料的信息 * 获取订单中物料的信息
* @param orderNo 送货单号 * @param orderNo 采购单号
* @param supplierNo 供应商编号 * @param supplierNo 供应商编号
* @param materialNo 物料编号 * @param materialNo 物料编号
*/ */
@ -42,7 +88,8 @@ 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"));
} }
/** /**
@ -77,6 +124,10 @@ public class SapService {
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) {
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);

View File

@ -226,7 +226,7 @@ public class StructuralPackageControllerService {
sb.append("数量无效;"); sb.append("数量无效;");
} }
else { else {
materialDTO.setNum(new BigDecimal(dto.getNum())); materialDTO.setNum(Integer.valueOf(dto.getNum()));
} }
if (StrUtil.isBlank(dto.getWeight())) { if (StrUtil.isBlank(dto.getWeight())) {
sb.append("重量不能为空;"); sb.append("重量不能为空;");
@ -334,7 +334,7 @@ public class StructuralPackageControllerService {
}else if (!NumberUtils.isCreatable(num)){ }else if (!NumberUtils.isCreatable(num)){
sb.append(StrUtil.format("第{}行数量无效;", row.getRowNum())); sb.append(StrUtil.format("第{}行数量无效;", row.getRowNum()));
}else { }else {
dto.setNum(new BigDecimal(num)); dto.setNum(Integer.valueOf(num));
} }
num=row.getString(4); num=row.getString(4);
if (StrUtil.isBlank(num)){ if (StrUtil.isBlank(num)){
@ -353,7 +353,7 @@ public class StructuralPackageControllerService {
}); });
VUtil.trueThrowBusinessError(!sb.isEmpty()).throwMessage("数据校验失败:"+ sb); VUtil.trueThrowBusinessError(!sb.isEmpty()).throwMessage("数据校验失败:"+ sb);
packageInfo.setWeight(materials.stream() packageInfo.setWeight(materials.stream()
.map(m -> m.getWeight().multiply(m.getNum())) .map(m -> m.getWeight().multiply(new BigDecimal(m.getNum())))
.reduce(BigDecimal.ZERO, BigDecimal::add)); .reduce(BigDecimal.ZERO, BigDecimal::add));
packageInfo.setMaterials(JSONUtil.toJsonStr(materials)); packageInfo.setMaterials(JSONUtil.toJsonStr(materials));
packageService.add(packageInfo); packageService.add(packageInfo);

View File

@ -10,7 +10,9 @@ import java.util.Objects;
public enum OrderState { public enum OrderState {
Unpackaged((short) 0, "未打包"), Unpackaged((short) 0, "未打包"),
Packaged((short) 1, "已打包"); Packaged((short) 1, "已打包"),
InTransit((short) 2, "在途"),
Received((short) 3, "已收货");
private final short state; private final short state;
private final String description; private final String description;

View File

@ -38,7 +38,7 @@ public class PackageMaterialDTO {
/** /**
* 数量 * 数量
*/ */
private BigDecimal num; private Integer num;
/** /**
* 重量 * 重量

View File

@ -14,7 +14,7 @@ public class SAPSyncFromDTO {
private String materialDesc; private String materialDesc;
private String warehouseNo; private String warehouseNo;
private String warehouseName; private String warehouseName;
private String binNo; private String binNos;
public String getMaterialNo() { public String getMaterialNo() {
return StrUtil.removeAllPrefix(materialNo, "0"); return StrUtil.removeAllPrefix(materialNo, "0");

View File

@ -0,0 +1,23 @@
package com.nflg.wms.common.pojo.qo;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import java.util.List;
@Data
public class StructuralPackageOrderReceiveQO {
/**
* wms订单ID
*/
@NotNull
private Long id;
/**
* 该订单下包含的托盘号
*/
@NotEmpty
private List<String> trayNos;
}

View File

@ -0,0 +1,22 @@
package com.nflg.wms.common.pojo.qo;
import lombok.Data;
@Data
public class StructuralPackageStorageTaskSearchQO extends SearchBaseQO{
/**
* 任务单号
*/
private String taskNo;
/**
* 原始单号
*/
private String orderNo;
/**
* 任务类型1采购单入库
*/
private Integer type;
}

View File

@ -3,10 +3,16 @@ package com.nflg.wms.common.pojo.vo;
import lombok.Data; import lombok.Data;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.List;
@Data @Data
public class DeliverStructuralPackageOrderForPackageItemVO { public class DeliverStructuralPackageOrderForPackageItemVO {
/**
* wms订单ID
*/
private Long id;
/** /**
* 供应商代码 * 供应商代码
*/ */
@ -37,6 +43,16 @@ public class DeliverStructuralPackageOrderForPackageItemVO {
*/ */
private String packageDesc; private String packageDesc;
/**
* 仓库编号
*/
private String warehouseNo;
/**
* 储位编号
*/
private String binNos;
/** /**
* 总重 * 总重
*/ */
@ -51,4 +67,9 @@ public class DeliverStructuralPackageOrderForPackageItemVO {
* 托盘数量 * 托盘数量
*/ */
private Integer trayNum; private Integer trayNum;
/**
* 该订单下包含的托盘号
*/
private List<String> trayNos;
} }

View File

@ -5,11 +5,12 @@ import lombok.Data;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
import org.ttzero.excel.annotation.ExcelColumn; import org.ttzero.excel.annotation.ExcelColumn;
import java.io.Serializable;
import java.math.BigDecimal; import java.math.BigDecimal;
@Data @Data
@Accessors @Accessors
public class DeliverStructuralPackageOrderTrayItemVO { public class DeliverStructuralPackageOrderTrayItemVO implements Serializable {
/** /**
* 序号 * 序号
@ -64,19 +65,19 @@ public class DeliverStructuralPackageOrderTrayItemVO {
* 计划数量 * 计划数量
*/ */
@ExcelColumn(value = "计划数量",colIndex = 7) @ExcelColumn(value = "计划数量",colIndex = 7)
private BigDecimal planNum; private Integer planNum;
/** /**
* 出货数量 * 出货数量
*/ */
@ExcelColumn(value = "出货数量",colIndex = 8) @ExcelColumn(value = "出货数量",colIndex = 8)
private BigDecimal shipmentNum; private Integer shipmentNum;
/** /**
* 入库数量 * 入库数量
*/ */
@ExcelColumn(value = "入库数量",colIndex = 9) @ExcelColumn(value = "入库数量",colIndex = 9)
private BigDecimal storeNum; private Integer storeNum;
/** /**
* 状态 * 状态

View File

@ -39,17 +39,17 @@ public class TrayItemVO {
/** /**
* 计划数量 * 计划数量
*/ */
private BigDecimal planNum; private Integer planNum;
/** /**
* 出货数量 * 出货数量
*/ */
private BigDecimal shipmentNum; private Integer shipmentNum;
/** /**
* 入库数量 * 入库数量
*/ */
private BigDecimal storeNum; private Integer storeNum;
/** /**
* 图片 * 图片

View File

@ -0,0 +1,11 @@
package com.nflg.wms.common.util;
import cn.hutool.json.JSONUtil;
public class BeanUtil {
public static <T> T copy(Object source, Class<T> clazz) {
String data= JSONUtil.toJsonStr(source);
return JSONUtil.toBean(data, clazz);
}
}

View File

@ -63,7 +63,7 @@ public class WmsStructuralPackageOrderTray implements Serializable {
/** /**
* 数量 * 数量
*/ */
private BigDecimal num; private Integer num;
/** /**
* 打包人 * 打包人
@ -76,4 +76,28 @@ public class WmsStructuralPackageOrderTray implements Serializable {
*/ */
@TableField(updateStrategy = FieldStrategy.ALWAYS) @TableField(updateStrategy = FieldStrategy.ALWAYS)
private LocalDateTime packTime; private LocalDateTime packTime;
/**
* 创建送货单人
*/
@TableField(updateStrategy = FieldStrategy.ALWAYS)
private String sendBy;
/**
* 创建送货单时间
*/
@TableField(updateStrategy = FieldStrategy.ALWAYS)
private LocalDateTime sendTime;
/**
* 收货人
*/
@TableField(updateStrategy = FieldStrategy.ALWAYS)
private String receiveBy;
/**
* 收货时间
*/
@TableField(updateStrategy = FieldStrategy.ALWAYS)
private LocalDateTime receiveTime;
} }

View File

@ -64,17 +64,17 @@ public class WmsStructuralPackageOrderTrayItem implements Serializable {
/** /**
* 计划数量 * 计划数量
*/ */
private BigDecimal planNum; private Integer planNum;
/** /**
* 出货数量 * 出货数量
*/ */
private BigDecimal shipmentNum; private Integer shipmentNum;
/** /**
* 入库数量 * 入库数量
*/ */
private BigDecimal storeNum; private Integer storeNum;
/** /**
* 图片 * 图片

View File

@ -0,0 +1,58 @@
package com.nflg.wms.repository.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* <p>
*
* </p>
*
* @author 代码生成器生成
* @since 2025
*/
@Getter
@Setter
@ToString
@Accessors(chain = true)
@TableName("wms_structural_package_storage_task")
public class WmsStructuralPackageStorageTask implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.ASSIGN_ID)
private Long id;
/**
* 任务单号
*/
private String no;
/**
* 来源1采购单入库
*/
private Integer sourceFrom;
/**
* 来源单号
*/
private String sourceNo;
/**
* 创建时间
*/
private LocalDateTime createTime;
/**
* 上架时间
*/
private LocalDateTime storeTime;
}

View File

@ -22,4 +22,6 @@ public interface WmsStructuralPackageDeliverOrderMapper extends BaseMapper<WmsSt
IPage<StructuralPackageDeliverOrderVO> search(StructuralPackageDeliverOrderSearchQO request, List<Long> externalOrderIds, Page<?> objectPage); IPage<StructuralPackageDeliverOrderVO> search(StructuralPackageDeliverOrderSearchQO request, List<Long> externalOrderIds, Page<?> objectPage);
List<Long> getIdsByExternalOrderNo(String externalOrderNo); List<Long> getIdsByExternalOrderNo(String externalOrderNo);
String getNoByOrderId(Long id);
} }

View File

@ -0,0 +1,20 @@
package com.nflg.wms.repository.mapper;
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.StructuralPackageStorageTaskSearchQO;
import com.nflg.wms.repository.entity.WmsStructuralPackageStorageTask;
/**
* <p>
* Mapper 接口
* </p>
*
* @author 代码生成器生成
* @since 2025
*/
public interface WmsStructuralPackageStorageTaskMapper extends BaseMapper<WmsStructuralPackageStorageTask> {
IPage<WmsStructuralPackageStorageTask> search(StructuralPackageStorageTaskSearchQO request, Page<?> objectPage);
}

View File

@ -19,4 +19,6 @@ import jakarta.validation.constraints.NotNull;
public interface IWmsStructuralPackageDeliverOrderService extends IService<WmsStructuralPackageDeliverOrder> { public interface IWmsStructuralPackageDeliverOrderService extends IService<WmsStructuralPackageDeliverOrder> {
IPage<StructuralPackageDeliverOrderVO> search(@Valid @NotNull StructuralPackageDeliverOrderSearchQO request); IPage<StructuralPackageDeliverOrderVO> search(@Valid @NotNull StructuralPackageDeliverOrderSearchQO request);
String getNoByOrderId(@NotNull Long id);
} }

View File

@ -2,12 +2,14 @@ package com.nflg.wms.repository.service;
import com.baomidou.mybatisplus.core.metadata.IPage; 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.constant.OrderState;
import com.nflg.wms.common.pojo.qo.StructuralPackageOrderSearchByStateQO; import com.nflg.wms.common.pojo.qo.StructuralPackageOrderSearchByStateQO;
import com.nflg.wms.common.pojo.vo.DeliverStructuralPackageOrderExtendVO; import com.nflg.wms.common.pojo.vo.DeliverStructuralPackageOrderExtendVO;
import com.nflg.wms.common.pojo.vo.DeliverStructuralPackageOrderTrayVO; import com.nflg.wms.common.pojo.vo.DeliverStructuralPackageOrderTrayVO;
import com.nflg.wms.repository.entity.WmsStructuralPackageOrderTray; import com.nflg.wms.repository.entity.WmsStructuralPackageOrderTray;
import jakarta.validation.Valid; import jakarta.validation.Valid;
import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.NotNull;
import java.util.List; import java.util.List;
@ -41,4 +43,6 @@ public interface IWmsStructuralPackageOrderTrayService extends IService<WmsStruc
DeliverStructuralPackageOrderTrayVO getInfoByNo(@Valid @NotBlank String trayNo); DeliverStructuralPackageOrderTrayVO getInfoByNo(@Valid @NotBlank String trayNo);
List<Long> getIdsByMaterialAndExternalOrderNo(Long packageId, String externalOrderNo); List<Long> getIdsByMaterialAndExternalOrderNo(Long packageId, String externalOrderNo);
void setStateByIds(@Valid @NotEmpty List<Long> ids, OrderState state);
} }

View File

@ -0,0 +1,21 @@
package com.nflg.wms.repository.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.nflg.wms.common.pojo.qo.StructuralPackageStorageTaskSearchQO;
import com.nflg.wms.repository.entity.WmsStructuralPackageStorageTask;
import jakarta.validation.Valid;
import jakarta.validation.constraints.NotNull;
/**
* <p>
* 服务类
* </p>
*
* @author 代码生成器生成
* @since 2025
*/
public interface IWmsStructuralPackageStorageTaskService extends IService<WmsStructuralPackageStorageTask> {
IPage<WmsStructuralPackageStorageTask> search(@Valid @NotNull StructuralPackageStorageTaskSearchQO request);
}

View File

@ -3,7 +3,6 @@ package com.nflg.wms.repository.service.impl;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.convert.Convert; import cn.hutool.core.convert.Convert;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import cn.hutool.extra.cglib.CglibUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.nflg.wms.common.pojo.PageData; import com.nflg.wms.common.pojo.PageData;
import com.nflg.wms.common.pojo.qo.DepartmentAddQO; import com.nflg.wms.common.pojo.qo.DepartmentAddQO;
@ -11,6 +10,7 @@ import com.nflg.wms.common.pojo.qo.DepartmentSearchQO;
import com.nflg.wms.common.pojo.qo.DepartmentUpdateQO; import com.nflg.wms.common.pojo.qo.DepartmentUpdateQO;
import com.nflg.wms.common.pojo.vo.DepartmentSimpleVO; import com.nflg.wms.common.pojo.vo.DepartmentSimpleVO;
import com.nflg.wms.common.pojo.vo.DepartmentVO; import com.nflg.wms.common.pojo.vo.DepartmentVO;
import com.nflg.wms.common.util.BeanUtil;
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.Department; import com.nflg.wms.repository.entity.Department;
@ -66,7 +66,7 @@ public class DepartmentServiceImpl extends ServiceImpl<DepartmentMapper, Departm
public void update(DepartmentUpdateQO request) { public void update(DepartmentUpdateQO request) {
Department dept1 = getById(request.getId()); Department dept1 = getById(request.getId());
VUtil.trueThrowBusinessError(Objects.isNull(dept1)).throwMessage("部门不存在"); VUtil.trueThrowBusinessError(Objects.isNull(dept1)).throwMessage("部门不存在");
Department dept2 = CglibUtil.copy(dept1, Department.class); Department dept2 = BeanUtil.copy(dept1, Department.class);
dept2.setName(request.getName()) dept2.setName(request.getName())
.setParentId(request.getParentId()) .setParentId(request.getParentId())
.setUpdateBy(UserUtil.getUserName()) .setUpdateBy(UserUtil.getUserName())

View File

@ -1,6 +1,5 @@
package com.nflg.wms.repository.service.impl; package com.nflg.wms.repository.service.impl;
import cn.hutool.extra.cglib.CglibUtil;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@ -10,6 +9,7 @@ import com.nflg.wms.common.pojo.qo.RoleSearchQO;
import com.nflg.wms.common.pojo.qo.RoleUpdateQO; import com.nflg.wms.common.pojo.qo.RoleUpdateQO;
import com.nflg.wms.common.pojo.vo.MenuVO; import com.nflg.wms.common.pojo.vo.MenuVO;
import com.nflg.wms.common.pojo.vo.RoleVO; import com.nflg.wms.common.pojo.vo.RoleVO;
import com.nflg.wms.common.util.BeanUtil;
import com.nflg.wms.common.util.VUtil; import com.nflg.wms.common.util.VUtil;
import com.nflg.wms.repository.entity.Menu; import com.nflg.wms.repository.entity.Menu;
import com.nflg.wms.repository.entity.Role; import com.nflg.wms.repository.entity.Role;
@ -60,7 +60,7 @@ public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements IR
public void update(RoleUpdateQO request, String userName) { public void update(RoleUpdateQO request, String userName) {
Role role1 = getById(request.getId()); Role role1 = getById(request.getId());
VUtil.trueThrowBusinessError(Objects.isNull(role1)).throwMessage("角色不存在"); VUtil.trueThrowBusinessError(Objects.isNull(role1)).throwMessage("角色不存在");
Role role2 = CglibUtil.copy(role1, Role.class); Role role2 = BeanUtil.copy(role1, Role.class);
role2.setCode(request.getCode()) role2.setCode(request.getCode())
.setName(request.getName()) .setName(request.getName())
.setEnable(request.getEnable()) .setEnable(request.getEnable())
@ -80,7 +80,7 @@ public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements IR
public void enable(EnableQO request, String userName) { public void enable(EnableQO request, String userName) {
Role role1 = getById(request.getId()); Role role1 = getById(request.getId());
VUtil.trueThrowBusinessError(Objects.isNull(role1)).throwMessage("角色不存在"); VUtil.trueThrowBusinessError(Objects.isNull(role1)).throwMessage("角色不存在");
Role role2 = CglibUtil.copy(role1, Role.class); Role role2 = BeanUtil.copy(role1, Role.class);
role2.setEnable(request.getEnable()) role2.setEnable(request.getEnable())
.setUpdateBy(userName) .setUpdateBy(userName)
.setUpdateTime(LocalDateTime.now()); .setUpdateTime(LocalDateTime.now());

View File

@ -9,8 +9,6 @@ import com.nflg.wms.common.pojo.vo.StructuralPackageDeliverOrderVO;
import com.nflg.wms.repository.entity.WmsStructuralPackageDeliverOrder; import com.nflg.wms.repository.entity.WmsStructuralPackageDeliverOrder;
import com.nflg.wms.repository.mapper.WmsStructuralPackageDeliverOrderMapper; import com.nflg.wms.repository.mapper.WmsStructuralPackageDeliverOrderMapper;
import com.nflg.wms.repository.service.IWmsStructuralPackageDeliverOrderService; import com.nflg.wms.repository.service.IWmsStructuralPackageDeliverOrderService;
import com.nflg.wms.repository.service.IWmsStructuralPackageOrderService;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.List; import java.util.List;
@ -26,9 +24,6 @@ import java.util.List;
@Service @Service
public class WmsStructuralPackageDeliverOrderServiceImpl extends ServiceImpl<WmsStructuralPackageDeliverOrderMapper, WmsStructuralPackageDeliverOrder> implements IWmsStructuralPackageDeliverOrderService { public class WmsStructuralPackageDeliverOrderServiceImpl extends ServiceImpl<WmsStructuralPackageDeliverOrderMapper, WmsStructuralPackageDeliverOrder> implements IWmsStructuralPackageDeliverOrderService {
@Resource
private IWmsStructuralPackageOrderService wmsStructuralPackageOrderService;
@Override @Override
public IPage<StructuralPackageDeliverOrderVO> search(StructuralPackageDeliverOrderSearchQO request) { public IPage<StructuralPackageDeliverOrderVO> search(StructuralPackageDeliverOrderSearchQO request) {
List<Long> externalOrderIds = null; List<Long> externalOrderIds = null;
@ -37,4 +32,9 @@ public class WmsStructuralPackageDeliverOrderServiceImpl extends ServiceImpl<Wms
} }
return baseMapper.search(request,externalOrderIds,new Page<>(request.getPage(),request.getPageSize())); return baseMapper.search(request,externalOrderIds,new Page<>(request.getPage(),request.getPageSize()));
} }
@Override
public String getNoByOrderId(Long id) {
return baseMapper.getNoByOrderId(id);
}
} }

View File

@ -4,14 +4,17 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.constant.OrderState;
import com.nflg.wms.common.pojo.qo.StructuralPackageOrderSearchByStateQO; import com.nflg.wms.common.pojo.qo.StructuralPackageOrderSearchByStateQO;
import com.nflg.wms.common.pojo.vo.DeliverStructuralPackageOrderExtendVO; import com.nflg.wms.common.pojo.vo.DeliverStructuralPackageOrderExtendVO;
import com.nflg.wms.common.pojo.vo.DeliverStructuralPackageOrderTrayVO; import com.nflg.wms.common.pojo.vo.DeliverStructuralPackageOrderTrayVO;
import com.nflg.wms.common.util.UserUtil;
import com.nflg.wms.repository.entity.WmsStructuralPackageOrderTray; import com.nflg.wms.repository.entity.WmsStructuralPackageOrderTray;
import com.nflg.wms.repository.mapper.WmsStructuralPackageOrderTrayMapper; import com.nflg.wms.repository.mapper.WmsStructuralPackageOrderTrayMapper;
import com.nflg.wms.repository.service.IWmsStructuralPackageOrderTrayService; import com.nflg.wms.repository.service.IWmsStructuralPackageOrderTrayService;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.time.LocalDateTime;
import java.util.List; import java.util.List;
/** /**
@ -74,4 +77,15 @@ public class WmsStructuralPackageOrderTrayServiceImpl extends ServiceImpl<WmsStr
public List<Long> getIdsByMaterialAndExternalOrderNo(Long packageId, String externalOrderNo) { public List<Long> getIdsByMaterialAndExternalOrderNo(Long packageId, String externalOrderNo) {
return baseMapper.getIdsByMaterialAndExternalOrderNo(packageId, externalOrderNo); return baseMapper.getIdsByMaterialAndExternalOrderNo(packageId, externalOrderNo);
} }
}
@Override
public void setStateByIds(List<Long> ids, OrderState state) {
lambdaUpdate()
.set(WmsStructuralPackageOrderTray::getState, state.getState())
.set(WmsStructuralPackageOrderTray::getSendBy, UserUtil.getUserName())
.set(WmsStructuralPackageOrderTray::getSendTime, LocalDateTime.now())
.eq(WmsStructuralPackageOrderTray::getState, state.getState() - 1)
.in(WmsStructuralPackageOrderTray::getId, ids)
.update();
}
}

View File

@ -0,0 +1,27 @@
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.nflg.wms.common.pojo.qo.StructuralPackageStorageTaskSearchQO;
import com.nflg.wms.repository.entity.WmsStructuralPackageStorageTask;
import com.nflg.wms.repository.mapper.WmsStructuralPackageStorageTaskMapper;
import com.nflg.wms.repository.service.IWmsStructuralPackageStorageTaskService;
import org.springframework.stereotype.Service;
/**
* <p>
* 服务实现类
* </p>
*
* @author 代码生成器生成
* @since 2025
*/
@Service
public class WmsStructuralPackageStorageTaskServiceImpl extends ServiceImpl<WmsStructuralPackageStorageTaskMapper, WmsStructuralPackageStorageTask> implements IWmsStructuralPackageStorageTaskService {
@Override
public IPage<WmsStructuralPackageStorageTask> search(StructuralPackageStorageTaskSearchQO request) {
return baseMapper.search(request,new Page<>(request.getPage(),request.getPageSize()));
}
}

View File

@ -34,4 +34,11 @@
inner join wms_structural_package_deliver_order_map om on o.id=om.order_id inner join wms_structural_package_deliver_order_map om on o.id=om.order_id
where o.external_order_no like concat('%',#{externalOrderNo},'%') where o.external_order_no like concat('%',#{externalOrderNo},'%')
</select> </select>
<select id="getNoByOrderId" resultType="java.lang.String">
select pdo.no
from wms_structural_package_deliver_order pdo
inner join wms_structural_package_deliver_order_map pdom on pdo.id=pdom.deliver_id
where pdom.order_id=#{id}
</select>
</mapper> </mapper>

View File

@ -60,14 +60,14 @@
order by id desc order by id desc
</select> </select>
<select id="getInfoByExternalOrderNo" <select id="getInfoByExternalOrderNo" resultType="com.nflg.wms.common.pojo.vo.DeliverStructuralPackageOrderForPackageItemVO">
resultType="com.nflg.wms.common.pojo.vo.DeliverStructuralPackageOrderForPackageItemVO"> SELECT o.*,m.no||wb."no" AS "workbench_code",us.supplier_code,us.supplier_name,sp."no" AS "package_no"
SELECT o.*,m.no||wb."no" AS "workbench_code",us.supplier_code,us.supplier_name,sp.order_no AS "package_order_no" ,sp."name" AS "package_desc"
,sp."no" AS "package_no",sp."name" AS "package_desc",m."no" AS "model_no"
FROM wms_structural_package_order o FROM wms_structural_package_order o
LEFT JOIN wms_workbench wb ON o.workbench_id=wb."id" LEFT JOIN wms_workbench wb ON o.workbench_id=wb."id"
LEFT JOIN user_supplier us ON o.supplier_id=us.user_id LEFT JOIN wms_model m on o.model_id=m."id"
LEFT JOIN wms_structural_package sp ON o.package_id=sp."id" LEFT JOIN user_supplier us ON o.supplier_id=us.user_id
LEFT JOIN wms_structural_package sp ON o.package_id=sp."id"
where o.external_order_no=#{orderNo} where o.external_order_no=#{orderNo}
</select> </select>
</mapper> </mapper>

View File

@ -0,0 +1,26 @@
<?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">
<mapper namespace="com.nflg.wms.repository.mapper.WmsStructuralPackageStorageTaskMapper">
<select id="search" resultType="com.nflg.wms.repository.entity.WmsStructuralPackageStorageTask">
select *
from wms_structural_package_storage_task
<where>
<if test="request.type != null">
and source_from=#{type}
</if>
<if test="request.taskNo != null and request.taskNo!=''">
and "no" like concat('%', #{request.taskNo}, '%')
</if>
<if test="request.orderNo != null and request.orderNo!=''">
and source_no like concat('%', #{request.orderNo}, '%')
</if>
<if test="request.startDate!=null">
and create_time >= #{request.startDate}
</if>
<if test="request.endDate!=null">
and create_time &lt;= #{request.endDate}
</if>
</where>
</select>
</mapper>

View File

@ -33,7 +33,7 @@ public class CodeGeneratorTest {
) )
.strategyConfig(builder -> { .strategyConfig(builder -> {
builder builder
.addInclude("wms_structural_package_deliver_order_map") //只生成指定表 .addInclude("wms_structural_package_storage_task") //只生成指定表
.entityBuilder().idType(IdType.ASSIGN_ID) .entityBuilder().idType(IdType.ASSIGN_ID)
.enableLombok() .enableLombok()
.enableChainModel() .enableChainModel()

View File

@ -98,7 +98,7 @@ public class SyncStorageFromSAPProcessor implements BasicProcessor {
for (DictionaryItem fy : dbFactorys) { for (DictionaryItem fy : dbFactorys) {
log.info("处理工厂:{}", fy.getValue()); log.info("处理工厂:{}", fy.getValue());
try { try {
List<SAPSyncFromDTO> list = sapService.SyncStorage(fy.getValue(), warehouseNos, beginDate, endDate); List<SAPSyncFromDTO> list = sapService.getStorage(fy.getValue(), warehouseNos, beginDate, endDate);
if (CollectionUtil.isEmpty(list)) { if (CollectionUtil.isEmpty(list)) {
log.info("没有获取到数据"); log.info("没有获取到数据");
} else { } else {

View File

@ -27,7 +27,7 @@ public class SapService {
* @param beginTime 开始时间格式yyyyMMdd * @param beginTime 开始时间格式yyyyMMdd
* @param endTime 结束时间格式yyyyMMdd * @param endTime 结束时间格式yyyyMMdd
*/ */
public List<SAPSyncFromDTO> SyncStorage(String factory, List<String> warehouseNos, String beginTime, String endTime) throws JCoException { public List<SAPSyncFromDTO> getStorage(String factory, List<String> warehouseNos, String beginTime, String endTime) throws JCoException {
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");

View File

@ -88,7 +88,7 @@ public class SapTestService {
for (DictionaryItem fy: dbFactorys){ for (DictionaryItem fy: dbFactorys){
log.info("处理工厂:{}", fy.getValue()); log.info("处理工厂:{}", fy.getValue());
try { try {
List<SAPSyncFromDTO> list = sapService.SyncStorage(fy.getValue(), warehouseNos, beginDate, endDate); List<SAPSyncFromDTO> list = sapService.getStorage(fy.getValue(), warehouseNos, beginDate, endDate);
if (CollectionUtil.isEmpty(list)) { if (CollectionUtil.isEmpty(list)) {
log.info("没有获取到数据"); log.info("没有获取到数据");
} else { } else {