Merge branch 'develop' into dev_zhangke

This commit is contained in:
zhangke 2025-07-28 09:41:48 +08:00
commit 7f4e760772
11 changed files with 104 additions and 178 deletions

View File

@ -118,6 +118,11 @@
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>cn.idev.excel</groupId>
<artifactId>fastexcel</artifactId>
<version>1.2.0</version>
</dependency>
</dependencies>
<build>

View File

@ -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<String, Object> info = new HashMap<>();
info.put("deliverOrderNo", deliverOrder.getNo());
WriteCellData<Void> 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<DeliverStructuralPackageOrderForPackageItemVO> 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<Void> receive(@Valid @RequestBody @NotNull StructuralPackageOrderReceiveQO request) {
DeliverStructuralPackageOrderVO order=deliverStructuralPackageOrderService.getInfo(request.getId());
VUtil.trueThrowBusinessError(Objects.isNull(order)).throwMessage("订单不存在");
List<String> 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<PageData<WmsStructuralPackageStorageTask>> searchStorageTask(@Valid @RequestBody @NotNull StructuralPackageStorageTaskSearchQO request){
return ApiResult.success(structuralPackageStorageTaskService.search(request));
}
}

View File

@ -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;
/**
* 机台号
*/

View File

@ -9,7 +9,7 @@ import java.time.LocalDateTime;
@Data
public class DeliverStructuralPackageOrderVO {
// private Long id;
private Long id;
/**
* 单据号

View File

@ -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;
/**
* <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

@ -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;
/**
* <p>
* Mapper 接口
* </p>
*
* @author 代码生成器生成
* @since 2025
*/
public interface WmsStructuralPackageStorageTaskMapper extends BaseMapper<WmsStructuralPackageStorageTask> {
IPage<WmsStructuralPackageStorageTask> search(StructuralPackageStorageTaskSearchQO request, Page<?> objectPage);
}

View File

@ -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;
/**
* <p>
* 服务类
* </p>
*
* @author 代码生成器生成
* @since 2025
*/
public interface IWmsStructuralPackageStorageTaskService extends IService<WmsStructuralPackageStorageTask> {
IPage<WmsStructuralPackageStorageTask> search(@Valid @NotNull StructuralPackageStorageTaskSearchQO request);
}

View File

@ -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;
/**
* <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

@ -62,7 +62,7 @@
<select id="getInfoByDeliverOrderNo" 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"
,sp."name" AS "package_desc"
,sp."name" AS "package_desc",sp.drawing_no as "package_drawing_no",sp.remark as "package_remark",o.num
FROM wms_structural_package_deliver_order pdo
inner join wms_structural_package_deliver_order_map pdom on pdo.id=pdom.deliver_id
LEFT JOIN wms_structural_package_order o on o.id=pdom.order_id

View File

@ -1,26 +0,0 @@
<?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>