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 0b9dc184..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 送货单号 @@ -605,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()) @@ -627,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 @@ - select * - from wms_structural_package_storage_task - - - and source_from=#{type} - - - and "no" like concat('%', #{request.taskNo}, '%') - - - and source_no like concat('%', #{request.orderNo}, '%') - - - and create_time >= #{request.startDate} - - - and create_time <= #{request.endDate} - - - -