From d5d506ebf75ed722b5e55e9a27c2d4950a8f973c Mon Sep 17 00:00:00 2001 From: liyongde <1419499670@qq.com> Date: Fri, 6 Jun 2025 14:07:36 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=88=90=E5=93=81=E5=87=BA=E5=BA=93?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E3=80=81=E5=AF=BC=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dao/PdmBiSubpackagerelationrecord.java | 174 ++++++++++++ .../PdmBiSubpackagerelationrecordMapper.java | 11 + .../PdmBiSubpackagerelationrecordMapper.xml | 4 + ...IPdmBiSubpackagerelationrecordService.java | 19 ++ ...BiSubpackagerelationrecordServiceImpl.java | 26 ++ .../iostorInv/IStIvtIostorinvdisService.java | 18 +- .../dao/mapper/StIvtIostorinvdisMapper.java | 11 + .../dao/mapper/StIvtIostorinvdisMapper.xml | 248 ++++++++++++++++++ .../impl/StIvtIostorinvdisServiceImpl.java | 73 ++++++ .../wms/stat/rest/InBillQueryController.java | 39 --- .../wms/stat/rest/OutBillQueryController.java | 39 +-- .../wms/stat/service/OutBillQueryService.java | 10 +- .../stat/service/dto/OutBillPageParam.java | 24 ++ ...{BillTypeEnum.java => InBillTypeEnum.java} | 15 +- .../stat/service/enums/OutBillTypeEnum.java | 60 +++++ .../service/impl/InBillQueryServiceImpl.java | 4 +- .../service/impl/OutBillQueryServiceImpl.java | 159 ++++++++++- .../nl/wms/stat/service/vo/OutBillPageVo.java | 42 +++ 18 files changed, 892 insertions(+), 84 deletions(-) create mode 100644 lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/subpackagerelation/dao/PdmBiSubpackagerelationrecord.java create mode 100644 lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/subpackagerelation/dao/mapper/PdmBiSubpackagerelationrecordMapper.java create mode 100644 lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/subpackagerelation/dao/mapper/PdmBiSubpackagerelationrecordMapper.xml create mode 100644 lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/subpackagerelation/service/IPdmBiSubpackagerelationrecordService.java create mode 100644 lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/subpackagerelation/service/impl/PdmBiSubpackagerelationrecordServiceImpl.java create mode 100644 lms/nladmin-system/src/main/java/org/nl/wms/stat/service/dto/OutBillPageParam.java rename lms/nladmin-system/src/main/java/org/nl/wms/stat/service/enums/{BillTypeEnum.java => InBillTypeEnum.java} (79%) create mode 100644 lms/nladmin-system/src/main/java/org/nl/wms/stat/service/enums/OutBillTypeEnum.java create mode 100644 lms/nladmin-system/src/main/java/org/nl/wms/stat/service/vo/OutBillPageVo.java diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/subpackagerelation/dao/PdmBiSubpackagerelationrecord.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/subpackagerelation/dao/PdmBiSubpackagerelationrecord.java new file mode 100644 index 0000000..81edf3c --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/subpackagerelation/dao/PdmBiSubpackagerelationrecord.java @@ -0,0 +1,174 @@ +package org.nl.b_lms.pdm.subpackagerelation.dao; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.math.BigDecimal; + +/** + * @Author: lyd + * @Date: 2025/6/5 + */ +@Data +@TableName("pdm_bi_subpackagerelationrecord") +public class PdmBiSubpackagerelationrecord extends Model { + + private static final long serialVersionUID = -7739291296662381393L; + + /** 记录标识 */ + @TableId(value = "record_id", type = IdType.NONE) + private String record_id; + + /** 子卷包装标识 */ + private String workorder_id; + + /** 木箱唯一码 */ + private String package_box_sn; + + /** 箱内子卷数量 */ + private BigDecimal quanlity_in_box; + + /** 木箱自身重量 */ + private BigDecimal box_weight; + + /** 保质期 */ + private String quality_guaran_period; + + /** 销售订单及行号 */ + private String sale_order_name; + + /** 客户编号 */ + private String customer_name; + + /** 客户名称 */ + private String customer_description; + + /** 产品编码 */ + private String product_name; + + /** 产品描述 */ + private String product_description; + + /** 入库日期 */ + private String date_of_FG_inbound; + + /** 子卷号 */ + private String container_name; + + /** 产品规格(幅宽) */ + private String width; + + /** 产品厚度 */ + private String thickness; + + /** 单位面积质量 */ + private BigDecimal mass_per_unit_area; + + /** 净重 */ + private BigDecimal net_weight; + + /** 长度 */ + private BigDecimal length; + + /** 制造完成日期 */ + private String date_of_production; + + /** 计划外分切的子卷 */ + private String is_un_plan_production; + + /** 子卷的物性值1 */ + private String un_plan_product_property1; + + /** 子卷的物性值2 */ + private String un_plan_product_property2; + + /** 子卷的物性值3 */ + private String un_plan_product_property3; + + /** 备注 */ + private String remark; + + /** 创建人 */ + private String create_id; + + /** 创建人姓名 */ + private String create_name; + + /** 创建时间 */ + private String create_time; + + /** 状态 */ + private String status; + + /** 是否需要重打外包装标签 */ + private String isRePrintPackageBoxLabel; + + /** 是否需要拆包重打子卷标签 */ + private String isUnPackBox; + + /** 木箱料号 */ + private String box_type; + + /** SAP批次 */ + private String sap_pcsn; + + /** 来源交货单 */ + private String vbeln; + + /** 来源交货单行 */ + private String posnr; + + /** 长 */ + private String box_length; + + /** 宽 */ + private String box_width; + + /** 高 */ + private String box_high; + + /** 销售订单描述 */ + private String sale_order_description; + + /** 客户要求规格幅宽 */ + private String width_standard; + + /** 物料标准厚度 */ + private String thickness_request; + + /** 实际木箱自身重量 */ + private BigDecimal real_weight; + + /** 包装关系类型 */ + private String sub_type; + + /** 客户需求抗拉下限 */ + private String demand_limit; + + /** 内控标准抗拉下限 */ + private String standard_limit; + + /** 生产实际抗拉值 */ + private String actual_value; + + /** 解绑删除标识 */ + private String need_delete; + + /** 单据编号 */ + private String bill_code; + + /** 单据标识 */ + private String bill_id; + + /** 单据类型 */ + private String bill_type; + + /** 创建时间 */ + private String insert_time; + + /** 出入库单类型 */ + private String io_type; +} diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/subpackagerelation/dao/mapper/PdmBiSubpackagerelationrecordMapper.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/subpackagerelation/dao/mapper/PdmBiSubpackagerelationrecordMapper.java new file mode 100644 index 0000000..f1c6686 --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/subpackagerelation/dao/mapper/PdmBiSubpackagerelationrecordMapper.java @@ -0,0 +1,11 @@ +package org.nl.b_lms.pdm.subpackagerelation.dao.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.nl.b_lms.pdm.subpackagerelation.dao.PdmBiSubpackagerelationrecord; + +/** + * @Author: lyd + * @Date: 2025/6/5 + */ +public interface PdmBiSubpackagerelationrecordMapper extends BaseMapper { +} diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/subpackagerelation/dao/mapper/PdmBiSubpackagerelationrecordMapper.xml b/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/subpackagerelation/dao/mapper/PdmBiSubpackagerelationrecordMapper.xml new file mode 100644 index 0000000..4c2aa47 --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/subpackagerelation/dao/mapper/PdmBiSubpackagerelationrecordMapper.xml @@ -0,0 +1,4 @@ + + + + diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/subpackagerelation/service/IPdmBiSubpackagerelationrecordService.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/subpackagerelation/service/IPdmBiSubpackagerelationrecordService.java new file mode 100644 index 0000000..1988ec5 --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/subpackagerelation/service/IPdmBiSubpackagerelationrecordService.java @@ -0,0 +1,19 @@ +package org.nl.b_lms.pdm.subpackagerelation.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import org.nl.b_lms.pdm.subpackagerelation.dao.PdmBiSubpackagerelationrecord; + +import java.util.List; + +/** + * @Author: lyd + * @Date: 2025/6/5 + */ +public interface IPdmBiSubpackagerelationrecordService extends IService { + /** + * 根据子卷号获取 + * @param pcsns + * @return + */ + List getAllByPcsn(List pcsns); +} diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/subpackagerelation/service/impl/PdmBiSubpackagerelationrecordServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/subpackagerelation/service/impl/PdmBiSubpackagerelationrecordServiceImpl.java new file mode 100644 index 0000000..522bab9 --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/subpackagerelation/service/impl/PdmBiSubpackagerelationrecordServiceImpl.java @@ -0,0 +1,26 @@ +package org.nl.b_lms.pdm.subpackagerelation.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.nl.b_lms.pdm.subpackagerelation.dao.PdmBiSubpackagerelationrecord; +import org.nl.b_lms.pdm.subpackagerelation.dao.mapper.PdmBiSubpackagerelationrecordMapper; +import org.nl.b_lms.pdm.subpackagerelation.service.IPdmBiSubpackagerelationrecordService; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * @Author: lyd + * @Date: 2025/6/5 + */ +@Service +public class PdmBiSubpackagerelationrecordServiceImpl extends ServiceImpl implements IPdmBiSubpackagerelationrecordService { + @Override + public List getAllByPcsn(List pcsns) { + LambdaQueryWrapper lam = new LambdaQueryWrapper<>(); + lam.eq(PdmBiSubpackagerelationrecord::getIo_type, "0") + .in(PdmBiSubpackagerelationrecord::getContainer_name, pcsns) + .orderByAsc(PdmBiSubpackagerelationrecord::getInsert_time); + return list(lam); + } +} diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/IStIvtIostorinvdisService.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/IStIvtIostorinvdisService.java index 1cdb246..4e0b146 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/IStIvtIostorinvdisService.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/IStIvtIostorinvdisService.java @@ -6,12 +6,13 @@ import com.baomidou.mybatisplus.extension.service.IService; import org.nl.b_lms.storage_manage.ios.service.iostorInv.dao.StIvtIostorinvdis; import org.nl.common.domain.query.PageQuery; import org.nl.wms.stat.service.dto.InBillPageParam; +import org.nl.wms.stat.service.dto.OutBillPageParam; import org.nl.wms.stat.service.vo.InBillPageVo; +import org.nl.wms.stat.service.vo.OutBillPageVo; import java.util.ArrayList; import java.util.HashMap; import java.util.List; -import java.util.Map; /** *

@@ -62,5 +63,20 @@ public interface IStIvtIostorinvdisService extends IService { * @return */ List getInBillDatas(InBillPageParam paramMap); + + /** + * 成品出库分页查询 + * @param paramMap 参数 + * @param page 分页数据 + * @return + */ + IPage getOutBillPage(OutBillPageParam paramMap, PageQuery page); + + /** + * 出库库存导出数据 + * @param paramMap + * @return + */ + List getOutBillData(OutBillPageParam paramMap); } diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/dao/mapper/StIvtIostorinvdisMapper.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/dao/mapper/StIvtIostorinvdisMapper.java index 81abce4..363c430 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/dao/mapper/StIvtIostorinvdisMapper.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/dao/mapper/StIvtIostorinvdisMapper.java @@ -9,7 +9,9 @@ import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; import org.nl.b_lms.storage_manage.ios.service.iostorInv.dao.StIvtIostorinvdis; import org.nl.wms.stat.service.dto.InBillPageParam; +import org.nl.wms.stat.service.dto.OutBillPageParam; import org.nl.wms.stat.service.vo.InBillPageVo; +import org.nl.wms.stat.service.vo.OutBillPageVo; import java.util.HashSet; import java.util.List; @@ -78,4 +80,13 @@ public interface StIvtIostorinvdisMapper extends BaseMapper { List getInBillData(@Param("paramMap") InBillPageParam paramMap); List getInBillAllData(@Param("paramMap") InBillPageParam paramMap); + /** + * 查询成品出库全部分页数据 + * @param pages + * @param paramMap + * @return + */ + IPage selectOutBillPageLeftJoin(IPage pages, OutBillPageParam paramMap); + + List getOutBillData(@Param("paramMap") OutBillPageParam paramMap); } diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/dao/mapper/StIvtIostorinvdisMapper.xml b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/dao/mapper/StIvtIostorinvdisMapper.xml index 287a817..f7b4e03 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/dao/mapper/StIvtIostorinvdisMapper.xml +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/dao/mapper/StIvtIostorinvdisMapper.xml @@ -815,6 +815,254 @@ mst.iostorinv_id, dis.box_no + + diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/impl/StIvtIostorinvdisServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/impl/StIvtIostorinvdisServiceImpl.java index 05e7e8b..7b1f8f9 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/impl/StIvtIostorinvdisServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/impl/StIvtIostorinvdisServiceImpl.java @@ -3,6 +3,7 @@ package org.nl.b_lms.storage_manage.ios.service.iostorInv.impl; import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; @@ -20,7 +21,9 @@ import org.nl.common.domain.query.PageQuery; import org.nl.common.utils.IdUtil; import org.nl.modules.wql.util.SpringContextHolder; import org.nl.wms.stat.service.dto.InBillPageParam; +import org.nl.wms.stat.service.dto.OutBillPageParam; import org.nl.wms.stat.service.vo.InBillPageVo; +import org.nl.wms.stat.service.vo.OutBillPageVo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -214,4 +217,74 @@ public class StIvtIostorinvdisServiceImpl extends ServiceImpl getOutBillPage(OutBillPageParam paramMap, PageQuery page) { + // 空格查询 + if (StrUtil.isNotEmpty(paramMap.getPcsn())){ + // 判断是否有空格 + boolean matches = paramMap.getPcsn().matches(".*\\s.*"); + List pcsnList = new ArrayList<>(); + + if (matches) { + String[] pcsns = paramMap.getPcsn().split(" "); + for (int i = 0; i < pcsns.length; i++) { + pcsnList.add(pcsns[i]); + } + } else { + pcsnList.add(paramMap.getPcsn()); + } + paramMap.setPcsns(pcsnList); + } + // 处理时间 + if (ObjectUtil.isNotEmpty(paramMap.getBegin_time()) && ObjectUtil.isNotEmpty(paramMap.getEnd_time())) { + String begin_time_today = paramMap.getBegin_time().substring(0, 10); + String end_time_today = paramMap.getEnd_time().substring(0, 10); + // 开始时间 + String today_begin_time = begin_time_today + " 08:00:00"; + // 结束时间:19:59:59 + DateTime parse = DateUtil.parse(end_time_today); + String substring = DateUtil.offsetDay(parse, 1).toString().substring(0, 10); + String today_end_time = substring + " 07:59:59"; + paramMap.setBegin_time(today_begin_time); + paramMap.setEnd_time(today_end_time); + } + IPage pages = new Page<>(page.getPage() + 1, page.getSize()); + pages = stIvtIostorinvdisMapper.selectOutBillPageLeftJoin(pages, paramMap); + return pages; + } + + @Override + public List getOutBillData(OutBillPageParam paramMap) { + // 空格查询 + if (StrUtil.isNotEmpty(paramMap.getPcsn())){ + // 判断是否有空格 + boolean matches = paramMap.getPcsn().matches(".*\\s.*"); + List pcsnList = new ArrayList<>(); + + if (matches) { + String[] pcsns = paramMap.getPcsn().split(" "); + for (int i = 0; i < pcsns.length; i++) { + pcsnList.add(pcsns[i]); + } + } else { + pcsnList.add(paramMap.getPcsn()); + } + paramMap.setPcsns(pcsnList); + } + // 处理时间 + if (ObjectUtil.isNotEmpty(paramMap.getBegin_time()) && ObjectUtil.isNotEmpty(paramMap.getEnd_time())) { + String begin_time_today = paramMap.getBegin_time().substring(0, 10); + String end_time_today = paramMap.getEnd_time().substring(0, 10); + // 开始时间 + String today_begin_time = begin_time_today + " 08:00:00"; + // 结束时间:19:59:59 + DateTime parse = DateUtil.parse(end_time_today); + String substring = DateUtil.offsetDay(parse, 1).toString().substring(0, 10); + String today_end_time = substring + " 07:59:59"; + paramMap.setBegin_time(today_begin_time); + paramMap.setEnd_time(today_end_time); + } + return stIvtIostorinvdisMapper.getOutBillData(paramMap); + } } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/stat/rest/InBillQueryController.java b/lms/nladmin-system/src/main/java/org/nl/wms/stat/rest/InBillQueryController.java index d8250bc..4c37831 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/stat/rest/InBillQueryController.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/stat/rest/InBillQueryController.java @@ -39,57 +39,18 @@ public class InBillQueryController { return new ResponseEntity<>(inBillQueryService.queryAll(whereJson, page, product_area), HttpStatus.OK); } -// @GetMapping(value = "/query2") -// @Log("查询") -// -// public ResponseEntity query2(@RequestParam Map whereJson, Pageable page, String[] product_area, String[] stor_id) { -// return new ResponseEntity<>(inBillQueryService.queryAll2(whereJson, page, product_area, stor_id), HttpStatus.OK); -// } - - // 已修改 @GetMapping(value = "/query2") @Log("查询") public ResponseEntity query2(InBillPageParam whereJson, PageQuery page) { return new ResponseEntity<>(TableDataInfo.build(inBillQueryService.getPage2(whereJson, page)), HttpStatus.OK); } - @PostMapping - @Log("新增") - - public ResponseEntity create(@Validated @RequestBody JSONObject dto) { - inBillQueryService.create(dto); - return new ResponseEntity<>(HttpStatus.CREATED); - } - - @PutMapping - @Log("修改") - - public ResponseEntity update(@Validated @RequestBody JSONObject dto) { - inBillQueryService.update(dto); - return new ResponseEntity<>(HttpStatus.NO_CONTENT); - } - - @Log("删除") - - @DeleteMapping - public ResponseEntity delete(@RequestBody Long[] ids) { - inBillQueryService.deleteAll(ids); - return new ResponseEntity<>(HttpStatus.OK); - } - @Log("导出数据") - @GetMapping(value = "/download") public void download(@RequestParam Map map, HttpServletResponse response, String[] product_area) throws IOException { inBillQueryService.download(map, response, product_area); } -// @Log("导出数据2") -// @GetMapping(value = "/download2") -// public void download2(@RequestParam Map map, HttpServletResponse response, String[] product_area,String[] stor_id) throws IOException { -// inBillQueryService.download2(map, response, product_area,stor_id); -// } - @GetMapping(value = "/download2") @Log("导出成品入库数据") public void downloadInBillTable(HttpServletResponse response, InBillPageParam whereJson, PageQuery page) throws IOException { diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/stat/rest/OutBillQueryController.java b/lms/nladmin-system/src/main/java/org/nl/wms/stat/rest/OutBillQueryController.java index 7f0cb3f..9c7fd86 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/stat/rest/OutBillQueryController.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/stat/rest/OutBillQueryController.java @@ -4,8 +4,11 @@ package org.nl.wms.stat.rest; import com.alibaba.fastjson.JSONObject; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.nl.common.TableDataInfo; +import org.nl.common.domain.query.PageQuery; import org.nl.modules.logging.annotation.Log; import org.nl.wms.stat.service.OutBillQueryService; +import org.nl.wms.stat.service.dto.OutBillPageParam; import org.springframework.data.domain.Pageable; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; @@ -32,53 +35,25 @@ public class OutBillQueryController { @GetMapping @Log("查询") - public ResponseEntity query(@RequestParam Map whereJson, Pageable page, String[] bill_types) { return new ResponseEntity<>(outBillQueryService.queryAll(whereJson, page, bill_types), HttpStatus.OK); } @GetMapping(value = "/query2") @Log("新查询") - - public ResponseEntity query2(@RequestParam Map whereJson, Pageable page, String[] bill_types) { - return new ResponseEntity<>(outBillQueryService.queryAll2(whereJson, page, bill_types), HttpStatus.OK); - } - - @PostMapping - @Log("新增") - - public ResponseEntity create(@Validated @RequestBody JSONObject dto) { - outBillQueryService.create(dto); - return new ResponseEntity<>(HttpStatus.CREATED); - } - - @PutMapping - @Log("修改") - - public ResponseEntity update(@Validated @RequestBody JSONObject dto) { - outBillQueryService.update(dto); - return new ResponseEntity<>(HttpStatus.NO_CONTENT); - } - - @Log("删除") - - @DeleteMapping - public ResponseEntity delete(@RequestBody Long[] ids) { - outBillQueryService.deleteAll(ids); - return new ResponseEntity<>(HttpStatus.OK); + public ResponseEntity query2(OutBillPageParam paramMap, PageQuery page) { + return new ResponseEntity<>(TableDataInfo.build(outBillQueryService.getPage2(paramMap, page)), HttpStatus.OK); } @Log("导出数据") - @GetMapping(value = "/download") public void download(@RequestParam Map map, HttpServletResponse response, String[] bill_types) throws IOException { outBillQueryService.download(map, response, bill_types); } @Log("导出数据2") - @GetMapping(value = "/download2") - public void download2(@RequestParam Map map, HttpServletResponse response, String[] bill_types) throws IOException { - outBillQueryService.download2(map, response, bill_types); + public void downloadOutBillData(OutBillPageParam paramMap, HttpServletResponse response) throws IOException { + outBillQueryService.downloadOutBillData(paramMap, response); } } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/stat/service/OutBillQueryService.java b/lms/nladmin-system/src/main/java/org/nl/wms/stat/service/OutBillQueryService.java index 664258f..025bd95 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/stat/service/OutBillQueryService.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/stat/service/OutBillQueryService.java @@ -1,7 +1,11 @@ package org.nl.wms.stat.service; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.metadata.IPage; +import org.nl.common.domain.query.PageQuery; import org.nl.wms.sch.service.dto.PointDto; +import org.nl.wms.stat.service.dto.OutBillPageParam; +import org.nl.wms.stat.service.vo.OutBillPageVo; import org.springframework.data.domain.Pageable; import javax.servlet.http.HttpServletResponse; @@ -59,4 +63,8 @@ public interface OutBillQueryService { void download(Map map, HttpServletResponse response, String[] bill_types) throws IOException; void download2(Map map, HttpServletResponse response, String[] bill_types) throws IOException; -} \ No newline at end of file + + IPage getPage2(OutBillPageParam paramMap, PageQuery page); + + void downloadOutBillData(OutBillPageParam paramMap, HttpServletResponse response); +} diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/stat/service/dto/OutBillPageParam.java b/lms/nladmin-system/src/main/java/org/nl/wms/stat/service/dto/OutBillPageParam.java new file mode 100644 index 0000000..49c146b --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/wms/stat/service/dto/OutBillPageParam.java @@ -0,0 +1,24 @@ +package org.nl.wms.stat.service.dto; + +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +/** + * 出库库存分页查询参数 + * + * @Author: lyd + * @Date: 2025/6/5 + */ +@Data +public class OutBillPageParam implements Serializable { + private String stor_id; + private List bill_types; + private String begin_time; + private String end_time; + private String with; + private String customer_name; + private String pcsn; + private List pcsns; +} diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/stat/service/enums/BillTypeEnum.java b/lms/nladmin-system/src/main/java/org/nl/wms/stat/service/enums/InBillTypeEnum.java similarity index 79% rename from lms/nladmin-system/src/main/java/org/nl/wms/stat/service/enums/BillTypeEnum.java rename to lms/nladmin-system/src/main/java/org/nl/wms/stat/service/enums/InBillTypeEnum.java index 9acbc50..e1e4d83 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/stat/service/enums/BillTypeEnum.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/stat/service/enums/InBillTypeEnum.java @@ -8,7 +8,7 @@ import java.util.Map; * @Author: lyd * @Date: 2025/6/4 */ -public enum BillTypeEnum { +public enum InBillTypeEnum { PRODUCTION_IN("0001", "生产入库"), RETURN_IN("0002", "退货入库"), SCRAP_IN("0003", "报废入库"), @@ -16,7 +16,8 @@ public enum BillTypeEnum { UNPACKING_IN("0005", "拆箱入库"), RECHECK_IN("0006", "返检入库"), TRIMMING_IN("0007", "改切入库"), - MANUAL_IN("0009", "手工入库"); + MANUAL_IN("0009", "手工入库") + ; private final String code; private final String name; @@ -24,16 +25,16 @@ public enum BillTypeEnum { /** * 静态映射表用于快速查找 */ - private static final Map CODE_MAP = new HashMap<>(); + private static final Map CODE_MAP = new HashMap<>(); static { // 初始化时将所有枚举值放入映射表 - for (BillTypeEnum type : values()) { + for (InBillTypeEnum type : values()) { CODE_MAP.put(type.code, type); } } - BillTypeEnum(String code, String name) { + InBillTypeEnum(String code, String name) { this.code = code; this.name = name; } @@ -52,7 +53,7 @@ public enum BillTypeEnum { * @return 对应的业务类型名称,如果未找到返回null */ public static String getNameByCode(String code) { - BillTypeEnum type = CODE_MAP.get(code); + InBillTypeEnum type = CODE_MAP.get(code); return type != null ? type.getName() : ""; } @@ -61,7 +62,7 @@ public enum BillTypeEnum { * @param code 类型编码 * @return 对应的枚举实例,如果未找到返回null */ - public static BillTypeEnum getByCode(String code) { + public static InBillTypeEnum getByCode(String code) { return CODE_MAP.get(code); } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/stat/service/enums/OutBillTypeEnum.java b/lms/nladmin-system/src/main/java/org/nl/wms/stat/service/enums/OutBillTypeEnum.java new file mode 100644 index 0000000..085ad43 --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/wms/stat/service/enums/OutBillTypeEnum.java @@ -0,0 +1,60 @@ +package org.nl.wms.stat.service.enums; + +import java.util.HashMap; +import java.util.Map; + +/** + * 出库类型枚举 + * @Author: lyd + * @Date: 2025/6/6 + */ +public enum OutBillTypeEnum { + ; + + private final String code; + private final String name; + + /** + * 静态映射表用于快速查找 + */ + private static final Map CODE_MAP = new HashMap<>(); + + static { + // 初始化时将所有枚举值放入映射表 + for (OutBillTypeEnum type : values()) { + CODE_MAP.put(type.code, type); + } + } + + OutBillTypeEnum(String code, String name) { + this.code = code; + this.name = name; + } + + public String getCode() { + return code; + } + + public String getName() { + return name; + } + + /** + * 根据code获取对应的业务类型名称 + * @param code 类型编码 + * @return 对应的业务类型名称,如果未找到返回null + */ + public static String getNameByCode(String code) { + OutBillTypeEnum type = getByCode(code); + return type != null ? type.getName() : ""; + } + + /** + * 根据code获取完整的枚举实例 + * @param code 类型编码 + * @return 对应的枚举实例,如果未找到返回null + */ + public static OutBillTypeEnum getByCode(String code) { + return CODE_MAP.get(code); + } +} diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/stat/service/impl/InBillQueryServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/stat/service/impl/InBillQueryServiceImpl.java index ab588ec..d72a053 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/stat/service/impl/InBillQueryServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/stat/service/impl/InBillQueryServiceImpl.java @@ -21,7 +21,7 @@ import org.nl.modules.wql.util.WqlUtil; import org.nl.wms.sch.service.dto.PointDto; import org.nl.wms.stat.service.InBillQueryService; import org.nl.wms.stat.service.dto.InBillPageParam; -import org.nl.wms.stat.service.enums.BillTypeEnum; +import org.nl.wms.stat.service.enums.InBillTypeEnum; import org.nl.wms.stat.service.vo.InBillPageVo; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; @@ -580,7 +580,7 @@ public class InBillQueryServiceImpl implements InBillQueryService { } // 业务类型 String bill_type1 = billPageVo.getBill_type(); - mp.put("业务类型", BillTypeEnum.getNameByCode(bill_type1)); + mp.put("业务类型", InBillTypeEnum.getNameByCode(bill_type1)); mp.put("客户编码", billPageVo.getCustomer_name()); mp.put("客户名称", billPageVo.getCust_name()); mp.put("业务员", billPageVo.getSales_owner()); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/stat/service/impl/OutBillQueryServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/stat/service/impl/OutBillQueryServiceImpl.java index 32172a2..e675cfc 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/stat/service/impl/OutBillQueryServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/stat/service/impl/OutBillQueryServiceImpl.java @@ -2,16 +2,20 @@ package org.nl.wms.stat.service.impl; import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; -import cn.hutool.core.date.LocalDateTimeUtil; import cn.hutool.core.map.MapUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.metadata.IPage; import com.google.common.collect.Lists; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.nl.b_lms.pdm.subpackagerelation.dao.PdmBiSubpackagerelationrecord; +import org.nl.b_lms.pdm.subpackagerelation.service.IPdmBiSubpackagerelationrecordService; import org.nl.b_lms.pdm.subpackagerelation.service.IpdmBiSubpackagerelationService; +import org.nl.b_lms.storage_manage.ios.service.iostorInv.IStIvtIostorinvdisService; +import org.nl.common.domain.query.PageQuery; import org.nl.common.utils.SecurityUtils; import org.nl.modules.common.exception.BadRequestException; import org.nl.modules.common.utils.FileUtil; @@ -20,16 +24,19 @@ import org.nl.modules.wql.core.bean.WQLObject; import org.nl.modules.wql.util.WqlUtil; import org.nl.wms.sch.service.dto.PointDto; import org.nl.wms.stat.service.OutBillQueryService; +import org.nl.wms.stat.service.dto.OutBillPageParam; +import org.nl.wms.stat.service.enums.OutBillTypeEnum; +import org.nl.wms.stat.service.vo.OutBillPageVo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.*; import java.util.concurrent.CompletableFuture; -import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentLinkedDeque; import java.util.function.Function; import java.util.stream.Collectors; @@ -46,6 +53,10 @@ public class OutBillQueryServiceImpl implements OutBillQueryService { @Autowired private IpdmBiSubpackagerelationService ipdmBiSubpackagerelationService; + @Resource + private IStIvtIostorinvdisService iostorinvdisService; + @Resource + private IPdmBiSubpackagerelationrecordService subpackagerelationrecordService; @Override public Map queryAll(Map whereJson, Pageable page, String[] bill_types) { String stor_id = MapUtil.getStr(whereJson, "stor_id"); @@ -467,4 +478,148 @@ public class OutBillQueryServiceImpl implements OutBillQueryService { new FileUtil().downloadExcelIO(list,col,response); // FileUtil.downloadExcel(list, response); } + + @Override + public IPage getPage2(OutBillPageParam paramMap, PageQuery page) { + IPage pages = iostorinvdisService.getOutBillPage(paramMap, page); + // 查询此子卷转单之前的销售订单号 + List pageRecords = pages.getRecords(); + // 获取所有子卷号 + List pcsns = pageRecords.stream() + .map(OutBillPageVo::getPcsn) + .collect(Collectors.toList()); + if (pcsns.size() == 0) { + return pages; + } + List recodes = subpackagerelationrecordService.getAllByPcsn(pcsns); + pages.getRecords().forEach(bill -> { + PdmBiSubpackagerelationrecord subpackagerelationrecord = recodes.stream() + .filter(r -> r.getContainer_name().equals(bill.getPcsn())) + .min(Comparator.comparing(PdmBiSubpackagerelationrecord::getInsert_time)) + .orElse(null); + bill.setOld_sale_order_name(ObjectUtil.isEmpty(subpackagerelationrecord) + ? bill.getSale_order_name() + : subpackagerelationrecord.getSale_order_name()); + }); + return pages; + } + + @Override + public void downloadOutBillData(OutBillPageParam paramMap, HttpServletResponse response) { + List outBillPageVos = iostorinvdisService.getOutBillData(paramMap); + // 获取所有子卷号 + List pcsns = outBillPageVos.stream() + .map(OutBillPageVo::getPcsn) + .collect(Collectors.toList()); + ConcurrentLinkedDeque> deque = new ConcurrentLinkedDeque<>(); + Lists.partition(pcsns,500).stream() + .map((Function, CompletableFuture>) o->CompletableFuture.runAsync(() -> { + List subList = ipdmBiSubpackagerelationService.recordQuery(o); + deque.add(subList); + })).parallel().forEach(CompletableFuture::join); + List datas = new ArrayList<>(); + for (List jsonObjects : deque) { + datas.addAll(jsonObjects); + } + List> list = new ArrayList<>(); + for (int i = 0; i < outBillPageVos.size(); i++) { + OutBillPageVo outBillPageVo = outBillPageVos.get(i); + Map mp = new LinkedHashMap<>(); + // 查询第一次入库的源销售订单 + JSONObject jsonSub = datas.stream() + .filter(row -> row.getString("container_name").equals(outBillPageVo.getPcsn())) + .min(Comparator.comparing(row -> row.getString("insert_time"))) + .orElse(null); + + mp.put("仓库", outBillPageVo.getStor_name()); + if (ObjectUtil.isNotEmpty(outBillPageVo.getBill_type()) && "1004".equals(outBillPageVo.getBill_type())) { + mp.put("移入仓库", outBillPageVo.getIn_stor_name()); + } + mp.put("库区", outBillPageVo.getSect_name()); + mp.put("生产区域", outBillPageVo.getPcsn().substring(0, 2)); + mp.put("业务类型", OutBillTypeEnum.getNameByCode(outBillPageVo.getBill_type())); + mp.put("交货单号", outBillPageVo.getVbeln()); + mp.put("物流公司", outBillPageVo.getCust_name()); + mp.put("运费", outBillPageVo.getEstimated_freight()); + mp.put("木箱号", outBillPageVo.getBox_no()); + mp.put("物料编码", outBillPageVo.getMaterial_code()); + mp.put("物料名称", outBillPageVo.getMaterial_name()); + mp.put("子卷号", outBillPageVo.getPcsn()); + mp.put("sap批次", outBillPageVo.getSap_pcsn()); + mp.put("净重", outBillPageVo.getNet_weight()); + mp.put("单位", outBillPageVo.getQty_unit_name()); + mp.put("管件类型", outBillPageVo.getPaper_type()); + mp.put("管件编码", outBillPageVo.getPaper_code()); + mp.put("管件描述", outBillPageVo.getPaper_name()); + mp.put("客户编码", outBillPageVo.getCustomer_name()); + mp.put("发货客户名称", outBillPageVo.getCustomer_description()); + mp.put("销售订单", outBillPageVo.getSale_order_name()); + mp.put("行号", ""); + mp.put("原销售订单", outBillPageVo.getSale_order_name()); + mp.put("原行号", ""); + + if (ObjectUtil.isNotEmpty(outBillPageVo.getSale_order_name())) { + try { + mp.put("销售订单", outBillPageVo.getSale_order_name().substring(0, outBillPageVo.getSale_order_name().indexOf("-"))); + mp.put("行号", outBillPageVo.getSale_order_name().substring(outBillPageVo.getSale_order_name().indexOf("-") + 1, outBillPageVo.getSale_order_name().length())); + } catch (Exception e) { + mp.put("销售订单", outBillPageVo.getSale_order_name()); + mp.put("行号", ""); + } + } + // 原销售订单 + if (ObjectUtil.isEmpty(jsonSub)) { + if (ObjectUtil.isNotEmpty(outBillPageVo.getSale_order_name())) { + try { + mp.put("原销售订单", outBillPageVo.getSale_order_name().substring(0, outBillPageVo.getSale_order_name().indexOf("-"))); + mp.put("原行号", outBillPageVo.getSale_order_name().substring(outBillPageVo.getSale_order_name().indexOf("-") + 1, outBillPageVo.getSale_order_name().length())); + } catch (Exception e) { + mp.put("原销售订单", outBillPageVo.getSale_order_name()); + mp.put("原行号", ""); + } + } + } else { + if (ObjectUtil.isNotEmpty(jsonSub.getString("sale_order_name"))) { + try { + mp.put("原销售订单", jsonSub.getString("sale_order_name").substring(0, jsonSub.getString("sale_order_name").indexOf("-"))); + mp.put("原行号", jsonSub.getString("sale_order_name").substring(jsonSub.getString("sale_order_name").indexOf("-") + 1, jsonSub.getString("sale_order_name").length())); + } catch (Exception e) { + mp.put("原销售订单", jsonSub.getString("sale_order_name")); + mp.put("原行号", ""); + } + } + } + mp.put("业务员", outBillPageVo.getSales_owner()); + mp.put("出库日期", outBillPageVo.getInput_time()); + mp.put("产品规格", String.format("%.0f", getWidthValue(outBillPageVo.getWidth()))); + mp.put("产品厚度", outBillPageVo.getThickness()); + mp.put("单位面积", outBillPageVo.getMass_per_unit_area()); + mp.put("制单人", outBillPageVo.getInput_optname()); + mp.put("备注", outBillPageVo.getRemark()); + list.add(mp); + } + Set set = list.get(0).keySet(); + int colIndex = 0; + String[] col = new String[set.size()]; + for (String s : set) { + col[colIndex]=s; + colIndex++; + } + new FileUtil().downloadExcelIO(list,col,response); + } + + private static double getWidthValue(String widthStr) { + double widthValue = 0.0; + if (widthStr != null && !widthStr.trim().isEmpty()) { + try { + // 移除逗号并解析为Double + String cleanedStr = widthStr.replaceAll(",", ""); + widthValue = Double.parseDouble(cleanedStr); + } catch (NumberFormatException e) { + // 解析失败时使用默认值(或根据业务需求处理) + widthValue = 0.0; + } + } + return widthValue; + } } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/stat/service/vo/OutBillPageVo.java b/lms/nladmin-system/src/main/java/org/nl/wms/stat/service/vo/OutBillPageVo.java new file mode 100644 index 0000000..7f4ac47 --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/wms/stat/service/vo/OutBillPageVo.java @@ -0,0 +1,42 @@ +package org.nl.wms.stat.service.vo; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @Author: lyd + * @Date: 2025/6/5 + */ +@Data +public class OutBillPageVo implements Serializable { + private String stor_name; + private String input_time; + private String bill_type; + private String confirm_time; + private String estimated_freight; + private String input_optname; + private String remark; + private String vbeln; + private String cust_name; + private String sect_name; + private String box_no; + private String qty_unit_name; + private String material_code; + private String material_name; + private String pcsn; + private String sap_pcsn; + private String net_weight; + private String customer_name; + private String customer_description; + private String sale_order_name; + private String sales_owner; + private String width; + private String thickness; + private String mass_per_unit_area; + private String old_sale_order_name; + private String paper_type; + private String paper_code; + private String paper_name; + private String in_stor_name; +}