diff --git a/nflg-wms-admin/pom.xml b/nflg-wms-admin/pom.xml
index 41faa6f7..c491945e 100644
--- a/nflg-wms-admin/pom.xml
+++ b/nflg-wms-admin/pom.xml
@@ -118,6 +118,11 @@
+
+ cn.idev.excel
+ fastexcel
+ 1.2.0
+
diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/StructuralPackageOrderController.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/StructuralPackageOrderController.java
index 787b2dc4..bea71936 100644
--- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/StructuralPackageOrderController.java
+++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/StructuralPackageOrderController.java
@@ -7,6 +7,12 @@ import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.RandomUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.crypto.digest.DigestUtil;
+import cn.idev.excel.EasyExcel;
+import cn.idev.excel.enums.CellDataTypeEnum;
+import cn.idev.excel.metadata.data.ImageData;
+import cn.idev.excel.metadata.data.WriteCellData;
+import cn.idev.excel.write.metadata.WriteSheet;
+import cn.idev.excel.write.metadata.fill.FillConfig;
import com.nflg.wms.admin.pojo.document.PackageMaterialScanRecord;
import com.nflg.wms.admin.pojo.document.PackageMaterialScanRecordItem;
import com.nflg.wms.admin.pojo.dto.SAPMaterialInfoInOrderDTO;
@@ -24,10 +30,7 @@ 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.vo.*;
-import com.nflg.wms.common.util.BeanUtil;
-import com.nflg.wms.common.util.EecExcelUtil;
-import com.nflg.wms.common.util.UserUtil;
-import com.nflg.wms.common.util.VUtil;
+import com.nflg.wms.common.util.*;
import com.nflg.wms.repository.entity.*;
import com.nflg.wms.repository.service.*;
import com.nflg.wms.starter.BaseController;
@@ -41,6 +44,8 @@ import jakarta.validation.constraints.NotNull;
import lombok.extern.slf4j.Slf4j;
import org.springframework.core.io.ClassPathResource;
import org.springframework.data.redis.core.StringRedisTemplate;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.MediaType;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
@@ -50,7 +55,10 @@ import java.io.IOException;
import java.io.InputStream;
import java.math.BigDecimal;
import java.net.URL;
+import java.net.URLEncoder;
+import java.nio.charset.StandardCharsets;
import java.time.Instant;
+import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.*;
import java.util.stream.Collectors;
@@ -94,7 +102,10 @@ public class StructuralPackageOrderController extends BaseController {
private IWmsStructuralPackageDeliverOrderMapService structuralPackageDeliverOrderMapService;
@Resource
- private IWmsStructuralPackageStorageTaskService structuralPackageStorageTaskService;
+ private IWmsInTaskService inTaskService;
+
+ @Resource
+ private IUserSupplierService userSupplierService;
/**
* 搜索SAP订单
@@ -558,6 +569,52 @@ public class StructuralPackageOrderController extends BaseController {
return ApiResult.success(structuralPackageDeliverOrderService.search(request));
}
+ /**
+ * 导出送货单
+ * @param id 送货单id
+ */
+ @GetMapping("exportDeliverOrder")
+ public void exportDeliverOrder(HttpServletResponse response, @Valid @RequestParam @NotNull Long id) throws Exception {
+ WmsStructuralPackageDeliverOrder deliverOrder=structuralPackageDeliverOrderService.getById(id);
+ VUtil.trueThrowBusinessError(Objects.isNull(deliverOrder)).throwMessage("送货单不存在");
+ Map info = new HashMap<>();
+ info.put("deliverOrderNo", deliverOrder.getNo());
+ WriteCellData writeCellData = new WriteCellData<>();
+ writeCellData.setType(CellDataTypeEnum.EMPTY);
+ ImageData imageData = new ImageData();
+ imageData.setImageType(ImageData.ImageType.PICTURE_TYPE_PNG);
+ imageData.setImage(QRCodeUtil.generateQRCode(deliverOrder.getNo(), 100, 100));
+ imageData.setTop(5);
+ imageData.setRight(5);
+ imageData.setBottom(5);
+ imageData.setLeft(5);
+ imageData.setRelativeFirstRowIndex(0);
+ imageData.setRelativeFirstColumnIndex(0);
+ imageData.setRelativeLastRowIndex(2);
+ imageData.setRelativeLastColumnIndex(0);
+ writeCellData.setImageDataList(List.of(imageData));
+ info.put("qrCodeUrl", writeCellData);
+ UserSupplier supplier=userSupplierService.getByUserId(deliverOrder.getSupplierId());
+ VUtil.trueThrowBusinessError(Objects.isNull(supplier)).throwMessage("供应商不存在");
+ info.put("supplierName", supplier.getSupplierName());
+ info.put("abbreviation", supplier.getAbbreviation());
+ info.put("today", DateTimeUtil.format(LocalDate.now(), "yyyy-MM-dd"));
+ List datas = deliverStructuralPackageOrderService.getInfoByDeliverOrderNo(deliverOrder.getNo());
+ datas.forEach(it -> {
+ it.setTrayNum(Math.toIntExact(deliverStructuralPackageOrderTrayService.lambdaQuery()
+ .eq(WmsStructuralPackageOrderTray::getOrderId, it.getId())
+ .count()));
+ });
+ response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);
+ response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=" + URLEncoder.encode(deliverOrder.getNo() + "送货单.xlsx", StandardCharsets.UTF_8));
+ try (cn.idev.excel.ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).withTemplate(new ClassPathResource("template/钢构包送货单模版.xlsx").getInputStream()).build()) {
+ WriteSheet writeSheet = EasyExcel.writerSheet().build();
+ FillConfig fillConfig = FillConfig.builder().forceNewRow(Boolean.TRUE).build();
+ excelWriter.fill(datas, fillConfig, writeSheet);
+ excelWriter.fill(info, writeSheet);
+ }
+ }
+
/**
* 根据送货单号查询订单信息(PDA使用)
* @param orderNo 送货单号
@@ -574,6 +631,7 @@ public class StructuralPackageOrderController extends BaseController {
.stream()
.map(WmsStructuralPackageOrderTray::getNo)
.toList());
+ it.setTrayNum(it.getTrayNos().size());
//SAP
SAPMaterialInfoInOrderDTO dto1 = sapService.getMaterialInfoInOrder(it.getExternalOrderNo(), it.getSupplierCode(), it.getPackageNo());
if (Objects.isNull(dto1)) {
@@ -604,6 +662,8 @@ public class StructuralPackageOrderController extends BaseController {
@Transactional
@PostMapping("receive")
public ApiResult receive(@Valid @RequestBody @NotNull StructuralPackageOrderReceiveQO request) {
+ DeliverStructuralPackageOrderVO order=deliverStructuralPackageOrderService.getInfo(request.getId());
+ VUtil.trueThrowBusinessError(Objects.isNull(order)).throwMessage("订单不存在");
List trayNos = deliverStructuralPackageOrderTrayService.lambdaQuery()
.select(WmsStructuralPackageOrderTray::getNo)
.eq(WmsStructuralPackageOrderTray::getOrderId, request.getId())
@@ -626,25 +686,23 @@ public class StructuralPackageOrderController extends BaseController {
.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())
- );
- }
+ VUtil.trueThrowBusinessError(!inTaskService.generateTask(List.of(new WmsInTaskItem()
+ .setPoNum(order.getExternalOrderNo())
+ .setPoLineNumber(order.getRowNo())
+ .setLineNumber(String.valueOf(order.getId()))
+ .setNoteNum(structuralPackageDeliverOrderService.getNoByOrderId(request.getId()))
+ .setItemCode(order.getPackageNo())
+ .setItemName(order.getPackageDesc())
+ .setUnit("套")
+ .setIsQuality(false)
+ .setUnqualifiedQty(BigDecimal.ZERO)
+ .setQualifiedQty(BigDecimal.valueOf(order.getNum()))
+ .setFactory("1010")
+ .setDataStatus((short)0)
+ .setOperationUserId(UserUtil.getUserId())
+ .setOperationUserName(UserUtil.getUserName())
+ .setBatchNumber(order.getModelNo())), (short) 1))
+ .throwMessage("创建上架任务失败");
return ApiResult.success();
}
-
- /**
- * 搜索上架任务
- * @param request 查询参数
- */
- @PostMapping("searchStorageTask")
- public ApiResult> searchStorageTask(@Valid @RequestBody @NotNull StructuralPackageStorageTaskSearchQO request){
- return ApiResult.success(structuralPackageStorageTaskService.search(request));
- }
}
\ No newline at end of file
diff --git a/nflg-wms-admin/src/main/resources/template/钢构包送货单模版.xlsx b/nflg-wms-admin/src/main/resources/template/钢构包送货单模版.xlsx
new file mode 100644
index 00000000..0a630063
Binary files /dev/null and b/nflg-wms-admin/src/main/resources/template/钢构包送货单模版.xlsx differ
diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/DeliverStructuralPackageOrderForPackageItemVO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/DeliverStructuralPackageOrderForPackageItemVO.java
index 65eca5b8..2fc94725 100644
--- a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/DeliverStructuralPackageOrderForPackageItemVO.java
+++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/DeliverStructuralPackageOrderForPackageItemVO.java
@@ -43,6 +43,16 @@ public class DeliverStructuralPackageOrderForPackageItemVO {
*/
private String packageDesc;
+ /**
+ * 钢构包图号
+ */
+ private String packageDrawingNo;
+
+ /**
+ * 钢构包备注
+ */
+ private String packageRemark;
+
/**
* 仓库编号
*/
@@ -58,6 +68,11 @@ public class DeliverStructuralPackageOrderForPackageItemVO {
*/
private BigDecimal weight;
+ /**
+ * 数量
+ */
+ private Integer num;
+
/**
* 机台号
*/
diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/DeliverStructuralPackageOrderVO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/DeliverStructuralPackageOrderVO.java
index 4e6fa2a2..f6c1ba0e 100644
--- a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/DeliverStructuralPackageOrderVO.java
+++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/DeliverStructuralPackageOrderVO.java
@@ -9,7 +9,7 @@ import java.time.LocalDateTime;
@Data
public class DeliverStructuralPackageOrderVO {
-// private Long id;
+ private Long id;
/**
* 单据号
diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/WmsStructuralPackageStorageTask.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/WmsStructuralPackageStorageTask.java
deleted file mode 100644
index 4e815ff5..00000000
--- a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/WmsStructuralPackageStorageTask.java
+++ /dev/null
@@ -1,58 +0,0 @@
-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;
-
-/**
- *
- *
- *
- *
- * @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;
-}
diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/mapper/WmsStructuralPackageStorageTaskMapper.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/mapper/WmsStructuralPackageStorageTaskMapper.java
deleted file mode 100644
index 9ee2415b..00000000
--- a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/mapper/WmsStructuralPackageStorageTaskMapper.java
+++ /dev/null
@@ -1,20 +0,0 @@
-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;
-
-/**
- *
- * Mapper 接口
- *
- *
- * @author 代码生成器生成
- * @since 2025
- */
-public interface WmsStructuralPackageStorageTaskMapper extends BaseMapper {
-
- IPage search(StructuralPackageStorageTaskSearchQO request, Page> objectPage);
-}
diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IWmsStructuralPackageStorageTaskService.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IWmsStructuralPackageStorageTaskService.java
deleted file mode 100644
index 2cb07c0f..00000000
--- a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IWmsStructuralPackageStorageTaskService.java
+++ /dev/null
@@ -1,21 +0,0 @@
-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;
-
-/**
- *
- * 服务类
- *
- *
- * @author 代码生成器生成
- * @since 2025
- */
-public interface IWmsStructuralPackageStorageTaskService extends IService {
-
- IPage search(@Valid @NotNull StructuralPackageStorageTaskSearchQO request);
-}
diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/WmsStructuralPackageStorageTaskServiceImpl.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/WmsStructuralPackageStorageTaskServiceImpl.java
deleted file mode 100644
index 4b9827ab..00000000
--- a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/WmsStructuralPackageStorageTaskServiceImpl.java
+++ /dev/null
@@ -1,27 +0,0 @@
-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;
-
-/**
- *
- * 服务实现类
- *
- *
- * @author 代码生成器生成
- * @since 2025
- */
-@Service
-public class WmsStructuralPackageStorageTaskServiceImpl extends ServiceImpl implements IWmsStructuralPackageStorageTaskService {
-
- @Override
- public IPage search(StructuralPackageStorageTaskSearchQO request) {
- return baseMapper.search(request,new Page<>(request.getPage(),request.getPageSize()));
- }
-}
\ No newline at end of file
diff --git a/nflg-wms-repository/src/main/resources/mapper/WmsStructuralPackageOrderMapper.xml b/nflg-wms-repository/src/main/resources/mapper/WmsStructuralPackageOrderMapper.xml
index ea3e109d..269f4c88 100644
--- a/nflg-wms-repository/src/main/resources/mapper/WmsStructuralPackageOrderMapper.xml
+++ b/nflg-wms-repository/src/main/resources/mapper/WmsStructuralPackageOrderMapper.xml
@@ -62,7 +62,7 @@