Browse Source

feat: 成品入库查询报表、导出

master
李永德 2 weeks ago
parent
commit
76194c3555
  1. 21
      lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/IStIvtIostorinvdisService.java
  2. 23
      lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/dao/mapper/StIvtIostorinvdisMapper.java
  3. 667
      lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/dao/mapper/StIvtIostorinvdisMapper.xml
  4. 66
      lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/impl/StIvtIostorinvdisServiceImpl.java
  5. 27
      lms/nladmin-system/src/main/java/org/nl/wms/stat/rest/InBillQueryController.java
  6. 16
      lms/nladmin-system/src/main/java/org/nl/wms/stat/service/InBillQueryService.java
  7. 29
      lms/nladmin-system/src/main/java/org/nl/wms/stat/service/dto/InBillPageParam.java
  8. 68
      lms/nladmin-system/src/main/java/org/nl/wms/stat/service/enums/BillTypeEnum.java
  9. 115
      lms/nladmin-system/src/main/java/org/nl/wms/stat/service/impl/InBillQueryServiceImpl.java
  10. 78
      lms/nladmin-system/src/main/java/org/nl/wms/stat/service/vo/InBillPageVo.java
  11. 2
      lms/nladmin-system/src/main/resources/logback-spring.xml

21
lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/IStIvtIostorinvdisService.java

@ -1,11 +1,17 @@
package org.nl.b_lms.storage_manage.ios.service.iostorInv;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.metadata.IPage;
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.vo.InBillPageVo;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* <p>
@ -41,5 +47,20 @@ public interface IStIvtIostorinvdisService extends IService<StIvtIostorinvdis> {
* @param task_id: 任务标识
*/
void confirmDisIn(String task_id);
/**
* 成品入库分页查询
* @param paramMap 参数
* @param page 分页数据
* @return
*/
IPage<InBillPageVo> getInBillPage(InBillPageParam paramMap, PageQuery page);
/**
* 成品入库查询 - 不分页从写方法sql与 {@link IStIvtIostorinvdisService#getInBillPage(InBillPageParam, PageQuery)} 一样
* @param paramMap
* @return
*/
List<InBillPageVo> getInBillDatas(InBillPageParam paramMap);
}

23
lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/dao/mapper/StIvtIostorinvdisMapper.java

@ -2,7 +2,11 @@ package org.nl.b_lms.storage_manage.ios.service.iostorInv.dao.mapper;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.apache.ibatis.annotations.Param;
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.vo.InBillPageVo;
import java.util.List;
@ -46,4 +50,23 @@ public interface StIvtIostorinvdisMapper extends BaseMapper<StIvtIostorinvdis> {
*/
List<JSONObject> getNotCreateDis(JSONObject whereJson);
/**
* 查询成品入库分页数据
* @param pages
* @param paramMap
* @return
*/
IPage<InBillPageVo> selectPageLeftJoin(IPage<InBillPageVo> pages, InBillPageParam paramMap);
/**
* 查询成品入库全部分页数据
* @param pages
* @param paramMap
* @return
*/
IPage<InBillPageVo> selectPageAllLeftJoin(IPage<InBillPageVo> pages, InBillPageParam paramMap);
List<InBillPageVo> getInBillData(@Param("paramMap") InBillPageParam paramMap);
List<InBillPageVo> getInBillAllData(@Param("paramMap") InBillPageParam paramMap);
}

667
lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/dao/mapper/StIvtIostorinvdisMapper.xml

@ -127,7 +127,674 @@
</if>
</select>
<select id="selectPageLeftJoin" resultType="org.nl.wms.stat.service.vo.InBillPageVo">
SELECT
mst.stor_name,
dis.sect_name,
dis.struct_code,
dis.struct_name,
mst.bill_type,
dis.box_no,
mater.material_code,
mater.material_name,
mb.material_name AS box_name,
dis.pcsn,
sub.sap_pcsn,
sub.net_weight,
dis.qty_unit_name,
sub.customer_name,
cust.sales_owner,
cust.cust_name,
sub.quanlity_in_box,
sub.customer_description,
sub.sale_order_name,
mst.input_time,
mst.confirm_time,
sub.date_of_production,
mst.input_optname,
sub.width,
case when plan.paper_tube_or_FRP = '1' then '纸管' when plan.paper_tube_or_FRP = '2' then 'FRP管' end AS
paper_type,
case when plan.paper_tube_or_FRP = '1' then plan.paper_tube_material when plan.paper_tube_or_FRP = '2' then
plan.FRP_material end
AS paper_code,
case when plan.paper_tube_or_FRP = '1' then plan.paper_tube_description when plan.paper_tube_or_FRP = '2' then
plan.FRP_description end AS paper_name,
sub.thickness,
sub.box_weight,
sub.length,
sub.thickness_request,
sub.width_standard,
sub.mass_per_unit_area,
sub.demand_limit,
sub.standard_limit,
sub.actual_value,
(case when plan.parent_container_name <![CDATA[ <> ]]> '' then plan.parent_container_name else
plan.restruct_container_name end) AS parent_container_name,
mst.remark,
(case when DATE_FORMAT( mst.confirm_time, '%H:%i:%s' ) <![CDATA[ >= ]]> '08:00:00' AND DATE_FORMAT(
mst.confirm_time, '%H:%i:%s' ) <![CDATA[ <= ]]> '19:59:59' then '白班'
when ((
DATE_FORMAT( mst.confirm_time, '%H:%i:%s' ) <![CDATA[ >= ]]> '20:00:00' AND DATE_FORMAT( mst.confirm_time,
'%H:%i:%s' ) <![CDATA[ <= ]]> '23:59:59'
OR
DATE_FORMAT( mst.confirm_time, '%H:%i:%s' ) <![CDATA[ >= ]]> '00:00:00' AND DATE_FORMAT( mst.confirm_time,
'%H:%i:%s' ) <![CDATA[ <= ]]> '07:59:59'
)) then '晚班' end) AS classes,
CONCAT( sub.box_length,'*',sub.box_width,'*',sub.box_high) AS box_size,
CASE
WHEN DATE_FORMAT( mst.confirm_time, '%H:%i:%s' ) <![CDATA[ >= ]]> '08:00:00' AND DATE_FORMAT( mst.confirm_time,
'%H:%i:%s' ) <![CDATA[ <= ]]> '23:59:59'
THEN mst.confirm_time
WHEN DATE_FORMAT( mst.confirm_time, '%H:%i:%s' ) <![CDATA[ >= ]]> '00:00:00' AND DATE_FORMAT( mst.confirm_time,
'%H:%i:%s' ) <![CDATA[ <= ]]> '07:59:59'
THEN DATE_SUB(mst.confirm_time,INTERVAL 1 day)
END AS confirm_time_class
FROM
(
SELECT
MIN( a.iostorinvdis_id ) AS iostorinvdis_id
FROM
st_ivt_iostorinvdis a
LEFT JOIN st_ivt_iostorinv b ON a.iostorinv_id = b.iostorinv_id
WHERE
b.io_type = '0'
<if test="paramMap.bill_type != null and paramMap.bill_type != ''">
AND b.bill_type = #{paramMap.bill_type}
</if>
<if test="paramMap.pcsn != null and paramMap.pcsn != ''">
AND a.pcsn = #{paramMap.pcsn}
</if>
<if test="paramMap.begin_time != null and paramMap.begin_time != ''">
AND b.confirm_time <![CDATA[ >= ]]> #{paramMap.begin_time}
</if>
<if test="paramMap.end_time != null and paramMap.end_time != ''">
AND b.confirm_time <![CDATA[ <= ]]> #{paramMap.end_time}
</if>
AND b.bill_status = '99'
GROUP BY
pcsn
UNION
SELECT
MIN( a.iostorinvdis_id ) AS iostorinvdis_id
FROM
st_ivt_iostorinvdis a
LEFT JOIN st_ivt_iostorinv b ON a.iostorinv_id = b.iostorinv_id
WHERE
b.io_type = '0'
<if test="paramMap.new_bill_type != null and paramMap.new_bill_type != ''">
AND b.bill_type = #{paramMap.new_bill_type}
</if>
<if test="paramMap.pcsn != null and paramMap.pcsn != ''">
AND a.pcsn = #{paramMap.new_bill_type}
</if>
<if test="paramMap.begin_time != null and paramMap.begin_time != ''">
AND b.confirm_time <![CDATA[ >= ]]> #{paramMap.begin_time}
</if>
<if test="paramMap.end_time != null and paramMap.end_time != ''">
AND b.confirm_time <![CDATA[ <= ]]> #{paramMap.end_time}
</if>
AND b.bill_status = '99'
GROUP BY
pcsn
) AS c
LEFT JOIN st_ivt_iostorinvdis dis ON dis.iostorinvdis_id = c.iostorinvdis_id
LEFT JOIN st_ivt_iostorinv mst ON mst.iostorinv_id = dis.iostorinv_id
LEFT JOIN st_ivt_sectattr sect ON sect.sect_id = dis.sect_id
LEFT JOIN md_me_materialbase mater ON mater.material_id = dis.material_id
INNER JOIN pdm_bi_subpackagerelationrecord sub ON sub.container_name = dis.pcsn AND sub.package_box_sn =
dis.box_no AND sub.bill_id = dis.iostorinv_id
LEFT JOIN md_cs_customerbase cust ON cust.cust_code = sub.customer_name
LEFT JOIN (SELECT
container_name,
MAX(paper_tube_or_FRP) AS paper_tube_or_FRP,
MAX(paper_tube_material) AS paper_tube_material,
MAX(paper_tube_description) AS paper_tube_description,
MAX(paper_tube_model) AS paper_tube_model,
MAX(FRP_material) AS FRP_material,
MAX(parent_container_name) AS parent_container_name,
MAX(restruct_container_name) AS restruct_container_name,
MAX(FRP_description) AS FRP_description,
MAX(FRP_model) AS FRP_model
FROM
pdm_bi_slittingproductionplan plan1
WHERE
plan1.is_delete = '0'
GROUP BY container_name) plan ON plan.container_name = sub.container_name
LEFT JOIN md_me_materialbase mb ON mb.material_code = sub.box_type
WHERE
mst.io_type = '0'
AND mst.is_delete = '0'
AND mst.bill_status = '99'
<if test="paramMap.stor_id != null and !paramMap.stor_id.isEmpty()">
AND mst.stor_id IN
<foreach collection="paramMap.stor_id" item="code" separator="," open="(" close=")">
#{code}
</foreach>
</if>
<if test="paramMap.is_virtual == '0'">
AND sect.sect_type_attr <![CDATA[ <> ]]> '09'
</if>
<if test="paramMap.is_virtual == '1'">
AND sect.sect_type_attr = '09'
</if>
<if test="paramMap.product_area != null and !paramMap.product_area.isEmpty()">
AND LEFT(sub.container_name,2) IN
<foreach collection="paramMap.product_area" item="code" separator="," open="(" close=")">
#{code}
</foreach>
OR SUBSTRING(sub.container_name,2,2) IN
<foreach collection="paramMap.product_area" item="code" separator="," open="(" close=")">
#{code}
</foreach>
</if>
<if test="paramMap.thickness_request != null and paramMap.thickness_request != ''">
AND sub.thickness_request = #{paramMap.thickness_request}
</if>
<if test="paramMap.bill_type != null and paramMap.bill_type != '' and paramMap.bill_type == '0001'">
AND IFNULL(sub.sub_type,'') = ''
</if>
<if test="paramMap.sale_order_name != null and paramMap.sale_order_name != ''">
AND sub.sale_order_name = #{paramMap.sale_order_name}
</if>
<if test="paramMap.sap_pcsn != null and paramMap.sap_pcsn != ''">
AND sub.sap_pcsn = #{paramMap.sap_pcsn}
</if>
<if test="paramMap.bill_type != null and paramMap.bill_type != '' and paramMap.bill_type == '0007'">
AND sub.sub_type = '2'
</if>
<if test="paramMap.begin_time != null and paramMap.begin_time != ''">
AND mst.confirm_time <![CDATA[ >= ]]> #{paramMap.begin_time}
</if>
<if test="paramMap.end_time != null and paramMap.end_time != ''">
AND mst.confirm_time <![CDATA[ <= ]]> #{paramMap.end_time}
</if>
<if test="paramMap.with != null and paramMap.with != ''">
AND CONCAT( sub.thickness_request,'*',sub.width) = #{paramMap.with}
</if>
<if test="paramMap.classes == '1'">
AND DATE_FORMAT( mst.confirm_time, '%H:%i:%s' ) <![CDATA[ >= ]]>'08:00:00' AND DATE_FORMAT( mst.confirm_time,
'%H:%i:%s' ) <![CDATA[ <= ]]> '19:59:59'
</if>
<if test="paramMap.classes == '2'">
AND (DATE_FORMAT( mst.confirm_time, '%H:%i:%s' ) <![CDATA[ >= ]]>'20:00:00' AND DATE_FORMAT( mst.confirm_time,
'%H:%i:%s' ) <![CDATA[ <= ]]> '23:59:59'
OR
DATE_FORMAT( mst.confirm_time, '%H:%i:%s' ) <![CDATA[ >= ]]>'00:00:00' AND DATE_FORMAT( mst.confirm_time,
'%H:%i:%s' ) <![CDATA[ <= ]]> '07:59:59')
</if>
ORDER BY mst.confirm_time DESC, dis.box_no
</select>
<select id="selectPageAllLeftJoin" resultType="org.nl.wms.stat.service.vo.InBillPageVo">
SELECT
MAX(mst.stor_name) AS stor_name,
MAX(dis.sect_name) AS sect_name,
MAX(dis.struct_code) AS struct_code,
MAX(dis.struct_name) AS struct_name,
MAX(mst.bill_type) AS bill_type,
MAX(mater.material_code) AS material_code,
MAX(mater.material_name) AS material_name,
MAX(dis.qty_unit_name) AS qty_unit_name,
MAX(sub.customer_description) AS customer_description,
MAX(mst.input_optname) AS input_optname,
MAX(mst.remark) AS remark,
mst.iostorinv_id,
dis.box_no,
MAX(cust.sales_owner) AS sales_owner,
MAX(cust.cust_name) AS cust_name,
MAX(sub.customer_name) AS customer_name,
MAX(sub.sale_order_name) AS sale_order_name,
MAX(sub.date_of_production) AS date_of_production,
SUM(sub.net_weight) AS net_weight,
MAX(mst.input_time) AS input_time,
MAX(mst.confirm_time) AS confirm_time,
CONCAT_WS('',MAX(sub.thickness_request),'*',MAX(sub.width)) AS specification,
CONCAT( MAX(sub.box_length),'*',MAX(sub.box_width),'*',MAX(sub.box_high)) AS box_size,
(case when DATE_FORMAT( mst.confirm_time, '%H:%i:%s' ) <![CDATA[ >= ]]> '08:00:00' AND DATE_FORMAT(
mst.confirm_time, '%H:%i:%s' ) <![CDATA[ <= ]]> '19:59:59' then '白班'
when ((
DATE_FORMAT( mst.confirm_time, '%H:%i:%s' ) <![CDATA[ >= ]]> '20:00:00' AND DATE_FORMAT( mst.confirm_time,
'%H:%i:%s' ) <![CDATA[ <= ]]> '23:59:59'
OR
DATE_FORMAT( mst.confirm_time, '%H:%i:%s' ) <![CDATA[ >= ]]> '00:00:00' AND DATE_FORMAT( mst.confirm_time,
'%H:%i:%s' ) <![CDATA[ <= ]]> '07:59:59'
)) then '晚班' end) AS classes,
CASE
WHEN DATE_FORMAT( mst.confirm_time, '%H:%i:%s' ) <![CDATA[ >= ]]> '08:00:00' AND DATE_FORMAT( mst.confirm_time,
'%H:%i:%s' ) <![CDATA[ <= ]]> '23:59:59'
THEN mst.confirm_time
WHEN DATE_FORMAT( mst.confirm_time, '%H:%i:%s' ) <![CDATA[ >= ]]> '00:00:00' AND DATE_FORMAT( mst.confirm_time,
'%H:%i:%s' ) <![CDATA[ <= ]]> '07:59:59'
THEN DATE_SUB(mst.confirm_time,INTERVAL 1 day)
END AS confirm_time_class
FROM
(
SELECT
MIN( a.iostorinvdis_id ) AS iostorinvdis_id
FROM
st_ivt_iostorinvdis a
LEFT JOIN st_ivt_iostorinv b ON a.iostorinv_id = b.iostorinv_id
WHERE
b.io_type = '0'
<if test="paramMap.bill_type != null and paramMap.bill_type != ''">
AND b.bill_type = #{paramMap.bill_type}
</if>
<if test="paramMap.pcsn != null and paramMap.pcsn != ''">
AND a.pcsn = #{paramMap.pcsn}
</if>
<if test="paramMap.begin_time != null and paramMap.begin_time != ''">
AND b.confirm_time <![CDATA[ >= ]]> #{paramMap.begin_time}
</if>
<if test="paramMap.end_time != null and paramMap.end_time != ''">
AND b.confirm_time <![CDATA[ <= ]]> #{paramMap.end_time}
</if>
AND b.bill_status = '99'
GROUP BY
pcsn
) AS c
LEFT JOIN st_ivt_iostorinvdis dis ON dis.iostorinvdis_id = c.iostorinvdis_id
LEFT JOIN st_ivt_iostorinv mst ON mst.iostorinv_id = dis.iostorinv_id
LEFT JOIN st_ivt_sectattr sect ON sect.sect_id = dis.sect_id
LEFT JOIN md_me_materialbase mater ON mater.material_id = dis.material_id
INNER JOIN pdm_bi_subpackagerelationrecord sub ON sub.container_name = dis.pcsn AND sub.package_box_sn =
dis.box_no AND sub.bill_id = dis.iostorinv_id
LEFT JOIN md_cs_customerbase cust ON cust.cust_code = sub.customer_name
WHERE
mst.io_type = '0'
AND mst.is_delete = '0'
AND mst.bill_status = '99'
<if test="paramMap.stor_id != null and !paramMap.stor_id.isEmpty()">
AND mst.stor_id IN
<foreach collection="paramMap.stor_id" item="code" separator="," open="(" close=")">
#{code}
</foreach>
</if>
<if test="paramMap.is_virtual == '0'">
AND sect.sect_type_attr <![CDATA[ <> ]]> '09'
</if>
<if test="paramMap.is_virtual == '1'">
AND sect.sect_type_attr = '09'
</if>
<if test="paramMap.product_area != null and !paramMap.product_area.isEmpty()">
AND LEFT(sub.container_name,2) IN
<foreach collection="paramMap.product_area" item="code" separator="," open="(" close=")">
#{code}
</foreach>
OR SUBSTRING(sub.container_name,2,2) IN
<foreach collection="paramMap.product_area" item="code" separator="," open="(" close=")">
#{code}
</foreach>
</if>
<if test="paramMap.thickness_request != null and paramMap.thickness_request != ''">
AND sub.thickness_request = #{paramMap.thickness_request}
</if>
<if test="paramMap.bill_type != null and paramMap.bill_type != ''">
AND mst.bill_type = #{paramMap.bill_type}
</if>
<if test="paramMap.sale_order_name != null and paramMap.sale_order_name != ''">
AND sub.sale_order_name = #{paramMap.sale_order_name}
</if>
<if test="paramMap.begin_time != null and paramMap.begin_time != ''">
AND mst.confirm_time <![CDATA[ >= ]]> #{paramMap.begin_time}
</if>
<if test="paramMap.end_time != null and paramMap.end_time != ''">
AND mst.confirm_time <![CDATA[ <= ]]> #{paramMap.end_time}
</if>
<if test="paramMap.with != null and paramMap.with != ''">
AND CONCAT( sub.thickness_request,'*',sub.width) = #{paramMap.with}
</if>
<if test="paramMap.classes == '1'">
AND DATE_FORMAT( mst.confirm_time, '%H:%i:%s' ) <![CDATA[ >= ]]>'08:00:00' AND DATE_FORMAT(
mst.confirm_time,
'%H:%i:%s' ) <![CDATA[ <= ]]> '19:59:59'
</if>
<if test="paramMap.classes == '2'">
AND (DATE_FORMAT( mst.confirm_time, '%H:%i:%s' ) <![CDATA[ >= ]]>'20:00:00' AND DATE_FORMAT(
mst.confirm_time,
'%H:%i:%s' ) <![CDATA[ <= ]]> '23:59:59'
OR
DATE_FORMAT( mst.confirm_time, '%H:%i:%s' ) <![CDATA[ >= ]]>'00:00:00' AND DATE_FORMAT( mst.confirm_time,
'%H:%i:%s' ) <![CDATA[ <= ]]> '07:59:59')
</if>
GROUP BY
mst.iostorinv_id,
dis.box_no
</select>
<select id="getInBillData" resultType="org.nl.wms.stat.service.vo.InBillPageVo">
SELECT
mst.stor_name,
dis.sect_name,
dis.struct_code,
dis.struct_name,
mst.bill_type,
dis.box_no,
mater.material_code,
mater.material_name,
mb.material_name AS box_name,
dis.pcsn,
sub.sap_pcsn,
sub.net_weight,
dis.qty_unit_name,
sub.customer_name,
cust.sales_owner,
cust.cust_name,
sub.quanlity_in_box,
sub.customer_description,
sub.sale_order_name,
mst.input_time,
mst.confirm_time,
sub.date_of_production,
mst.input_optname,
sub.width,
case when plan.paper_tube_or_FRP = '1' then '纸管' when plan.paper_tube_or_FRP = '2' then 'FRP管' end AS
paper_type,
case when plan.paper_tube_or_FRP = '1' then plan.paper_tube_material when plan.paper_tube_or_FRP = '2' then
plan.FRP_material end
AS paper_code,
case when plan.paper_tube_or_FRP = '1' then plan.paper_tube_description when plan.paper_tube_or_FRP = '2' then
plan.FRP_description end AS paper_name,
sub.thickness,
sub.box_weight,
sub.length,
sub.thickness_request,
sub.width_standard,
sub.mass_per_unit_area,
sub.demand_limit,
sub.standard_limit,
sub.actual_value,
(case when plan.parent_container_name <![CDATA[ <> ]]> '' then plan.parent_container_name else
plan.restruct_container_name end) AS parent_container_name,
mst.remark,
(case when DATE_FORMAT( mst.confirm_time, '%H:%i:%s' ) <![CDATA[ >= ]]> '08:00:00' AND DATE_FORMAT(
mst.confirm_time, '%H:%i:%s' ) <![CDATA[ <= ]]> '19:59:59' then '白班'
when ((
DATE_FORMAT( mst.confirm_time, '%H:%i:%s' ) <![CDATA[ >= ]]> '20:00:00' AND DATE_FORMAT( mst.confirm_time,
'%H:%i:%s' ) <![CDATA[ <= ]]> '23:59:59'
OR
DATE_FORMAT( mst.confirm_time, '%H:%i:%s' ) <![CDATA[ >= ]]> '00:00:00' AND DATE_FORMAT( mst.confirm_time,
'%H:%i:%s' ) <![CDATA[ <= ]]> '07:59:59'
)) then '晚班' end) AS classes,
CONCAT( sub.box_length,'*',sub.box_width,'*',sub.box_high) AS box_size,
CASE
WHEN DATE_FORMAT( mst.confirm_time, '%H:%i:%s' ) <![CDATA[ >= ]]> '08:00:00' AND DATE_FORMAT( mst.confirm_time,
'%H:%i:%s' ) <![CDATA[ <= ]]> '23:59:59'
THEN mst.confirm_time
WHEN DATE_FORMAT( mst.confirm_time, '%H:%i:%s' ) <![CDATA[ >= ]]> '00:00:00' AND DATE_FORMAT( mst.confirm_time,
'%H:%i:%s' ) <![CDATA[ <= ]]> '07:59:59'
THEN DATE_SUB(mst.confirm_time,INTERVAL 1 day)
END AS confirm_time_class
FROM
(
SELECT
MIN( a.iostorinvdis_id ) AS iostorinvdis_id
FROM
st_ivt_iostorinvdis a
LEFT JOIN st_ivt_iostorinv b ON a.iostorinv_id = b.iostorinv_id
WHERE
b.io_type = '0'
<if test="paramMap.bill_type != null and paramMap.bill_type != ''">
AND b.bill_type = #{paramMap.bill_type}
</if>
<if test="paramMap.pcsn != null and paramMap.pcsn != ''">
AND a.pcsn = #{paramMap.pcsn}
</if>
<if test="paramMap.begin_time != null and paramMap.begin_time != ''">
AND b.confirm_time <![CDATA[ >= ]]> #{paramMap.begin_time}
</if>
<if test="paramMap.end_time != null and paramMap.end_time != ''">
AND b.confirm_time <![CDATA[ <= ]]> #{paramMap.end_time}
</if>
AND b.bill_status = '99'
GROUP BY
pcsn
UNION
SELECT
MIN( a.iostorinvdis_id ) AS iostorinvdis_id
FROM
st_ivt_iostorinvdis a
LEFT JOIN st_ivt_iostorinv b ON a.iostorinv_id = b.iostorinv_id
WHERE
b.io_type = '0'
<if test="paramMap.new_bill_type != null and paramMap.new_bill_type != ''">
AND b.bill_type = #{paramMap.new_bill_type}
</if>
<if test="paramMap.pcsn != null and paramMap.pcsn != ''">
AND a.pcsn = #{paramMap.new_bill_type}
</if>
<if test="paramMap.begin_time != null and paramMap.begin_time != ''">
AND b.confirm_time <![CDATA[ >= ]]> #{paramMap.begin_time}
</if>
<if test="paramMap.end_time != null and paramMap.end_time != ''">
AND b.confirm_time <![CDATA[ <= ]]> #{paramMap.end_time}
</if>
AND b.bill_status = '99'
GROUP BY
pcsn
) AS c
LEFT JOIN st_ivt_iostorinvdis dis ON dis.iostorinvdis_id = c.iostorinvdis_id
LEFT JOIN st_ivt_iostorinv mst ON mst.iostorinv_id = dis.iostorinv_id
LEFT JOIN st_ivt_sectattr sect ON sect.sect_id = dis.sect_id
LEFT JOIN md_me_materialbase mater ON mater.material_id = dis.material_id
INNER JOIN pdm_bi_subpackagerelationrecord sub ON sub.container_name = dis.pcsn AND sub.package_box_sn =
dis.box_no AND sub.bill_id = dis.iostorinv_id
LEFT JOIN md_cs_customerbase cust ON cust.cust_code = sub.customer_name
LEFT JOIN (SELECT
container_name,
MAX(paper_tube_or_FRP) AS paper_tube_or_FRP,
MAX(paper_tube_material) AS paper_tube_material,
MAX(paper_tube_description) AS paper_tube_description,
MAX(paper_tube_model) AS paper_tube_model,
MAX(FRP_material) AS FRP_material,
MAX(parent_container_name) AS parent_container_name,
MAX(restruct_container_name) AS restruct_container_name,
MAX(FRP_description) AS FRP_description,
MAX(FRP_model) AS FRP_model
FROM
pdm_bi_slittingproductionplan plan1
WHERE
plan1.is_delete = '0'
GROUP BY container_name) plan ON plan.container_name = sub.container_name
LEFT JOIN md_me_materialbase mb ON mb.material_code = sub.box_type
WHERE
mst.io_type = '0'
AND mst.is_delete = '0'
AND mst.bill_status = '99'
<if test="paramMap.stor_id != null and !paramMap.stor_id.isEmpty()">
AND mst.stor_id IN
<foreach collection="paramMap.stor_id" item="code" separator="," open="(" close=")">
#{code}
</foreach>
</if>
<if test="paramMap.is_virtual == '0'">
AND sect.sect_type_attr <![CDATA[ <> ]]> '09'
</if>
<if test="paramMap.is_virtual == '1'">
AND sect.sect_type_attr = '09'
</if>
<if test="paramMap.product_area != null and !paramMap.product_area.isEmpty()">
AND LEFT(sub.container_name,2) IN
<foreach collection="paramMap.product_area" item="code" separator="," open="(" close=")">
#{code}
</foreach>
OR SUBSTRING(sub.container_name,2,2) IN
<foreach collection="paramMap.product_area" item="code" separator="," open="(" close=")">
#{code}
</foreach>
</if>
<if test="paramMap.thickness_request != null and paramMap.thickness_request != ''">
AND sub.thickness_request = #{paramMap.thickness_request}
</if>
<if test="paramMap.bill_type != null and paramMap.bill_type != '' and paramMap.bill_type == '0001'">
AND IFNULL(sub.sub_type,'') = ''
</if>
<if test="paramMap.sale_order_name != null and paramMap.sale_order_name != ''">
AND sub.sale_order_name = #{paramMap.sale_order_name}
</if>
<if test="paramMap.sap_pcsn != null and paramMap.sap_pcsn != ''">
AND sub.sap_pcsn = #{paramMap.sap_pcsn}
</if>
<if test="paramMap.bill_type != null and paramMap.bill_type != '' and paramMap.bill_type == '0007'">
AND sub.sub_type = '2'
</if>
<if test="paramMap.begin_time != null and paramMap.begin_time != ''">
AND mst.confirm_time <![CDATA[ >= ]]> #{paramMap.begin_time}
</if>
<if test="paramMap.end_time != null and paramMap.end_time != ''">
AND mst.confirm_time <![CDATA[ <= ]]> #{paramMap.end_time}
</if>
<if test="paramMap.with != null and paramMap.with != ''">
AND CONCAT( sub.thickness_request,'*',sub.width) = #{paramMap.with}
</if>
<if test="paramMap.classes == '1'">
AND DATE_FORMAT( mst.confirm_time, '%H:%i:%s' ) <![CDATA[ >= ]]>'08:00:00' AND DATE_FORMAT( mst.confirm_time,
'%H:%i:%s' ) <![CDATA[ <= ]]> '19:59:59'
</if>
<if test="paramMap.classes == '2'">
AND (DATE_FORMAT( mst.confirm_time, '%H:%i:%s' ) <![CDATA[ >= ]]>'20:00:00' AND DATE_FORMAT( mst.confirm_time,
'%H:%i:%s' ) <![CDATA[ <= ]]> '23:59:59'
OR
DATE_FORMAT( mst.confirm_time, '%H:%i:%s' ) <![CDATA[ >= ]]>'00:00:00' AND DATE_FORMAT( mst.confirm_time,
'%H:%i:%s' ) <![CDATA[ <= ]]> '07:59:59')
</if>
ORDER BY mst.confirm_time DESC, dis.box_no
</select>
<select id="getInBillAllData" resultType="org.nl.wms.stat.service.vo.InBillPageVo">
SELECT
MAX(mst.stor_name) AS stor_name,
MAX(dis.sect_name) AS sect_name,
MAX(dis.struct_code) AS struct_code,
MAX(dis.struct_name) AS struct_name,
MAX(mst.bill_type) AS bill_type,
MAX(mater.material_code) AS material_code,
MAX(mater.material_name) AS material_name,
MAX(dis.qty_unit_name) AS qty_unit_name,
MAX(sub.customer_description) AS customer_description,
MAX(mst.input_optname) AS input_optname,
MAX(mst.remark) AS remark,
mst.iostorinv_id,
dis.box_no,
MAX(cust.sales_owner) AS sales_owner,
MAX(cust.cust_name) AS cust_name,
MAX(sub.customer_name) AS customer_name,
MAX(sub.sale_order_name) AS sale_order_name,
MAX(sub.date_of_production) AS date_of_production,
SUM(sub.net_weight) AS net_weight,
MAX(mst.input_time) AS input_time,
MAX(mst.confirm_time) AS confirm_time,
CONCAT_WS('',MAX(sub.thickness_request),'*',MAX(sub.width)) AS specification,
CONCAT( MAX(sub.box_length),'*',MAX(sub.box_width),'*',MAX(sub.box_high)) AS box_size,
(case when DATE_FORMAT( mst.confirm_time, '%H:%i:%s' ) <![CDATA[ >= ]]> '08:00:00' AND DATE_FORMAT(
mst.confirm_time, '%H:%i:%s' ) <![CDATA[ <= ]]> '19:59:59' then '白班'
when ((
DATE_FORMAT( mst.confirm_time, '%H:%i:%s' ) <![CDATA[ >= ]]> '20:00:00' AND DATE_FORMAT( mst.confirm_time,
'%H:%i:%s' ) <![CDATA[ <= ]]> '23:59:59'
OR
DATE_FORMAT( mst.confirm_time, '%H:%i:%s' ) <![CDATA[ >= ]]> '00:00:00' AND DATE_FORMAT( mst.confirm_time,
'%H:%i:%s' ) <![CDATA[ <= ]]> '07:59:59'
)) then '晚班' end) AS classes,
CASE
WHEN DATE_FORMAT( mst.confirm_time, '%H:%i:%s' ) <![CDATA[ >= ]]> '08:00:00' AND DATE_FORMAT( mst.confirm_time,
'%H:%i:%s' ) <![CDATA[ <= ]]> '23:59:59'
THEN mst.confirm_time
WHEN DATE_FORMAT( mst.confirm_time, '%H:%i:%s' ) <![CDATA[ >= ]]> '00:00:00' AND DATE_FORMAT( mst.confirm_time,
'%H:%i:%s' ) <![CDATA[ <= ]]> '07:59:59'
THEN DATE_SUB(mst.confirm_time,INTERVAL 1 day)
END AS confirm_time_class
FROM
(
SELECT
MIN( a.iostorinvdis_id ) AS iostorinvdis_id
FROM
st_ivt_iostorinvdis a
LEFT JOIN st_ivt_iostorinv b ON a.iostorinv_id = b.iostorinv_id
WHERE
b.io_type = '0'
<if test="paramMap.bill_type != null and paramMap.bill_type != ''">
AND b.bill_type = #{paramMap.bill_type}
</if>
<if test="paramMap.pcsn != null and paramMap.pcsn != ''">
AND a.pcsn = #{paramMap.pcsn}
</if>
<if test="paramMap.begin_time != null and paramMap.begin_time != ''">
AND b.confirm_time <![CDATA[ >= ]]> #{paramMap.begin_time}
</if>
<if test="paramMap.end_time != null and paramMap.end_time != ''">
AND b.confirm_time <![CDATA[ <= ]]> #{paramMap.end_time}
</if>
AND b.bill_status = '99'
GROUP BY
pcsn
) AS c
LEFT JOIN st_ivt_iostorinvdis dis ON dis.iostorinvdis_id = c.iostorinvdis_id
LEFT JOIN st_ivt_iostorinv mst ON mst.iostorinv_id = dis.iostorinv_id
LEFT JOIN st_ivt_sectattr sect ON sect.sect_id = dis.sect_id
LEFT JOIN md_me_materialbase mater ON mater.material_id = dis.material_id
INNER JOIN pdm_bi_subpackagerelationrecord sub ON sub.container_name = dis.pcsn AND sub.package_box_sn =
dis.box_no AND sub.bill_id = dis.iostorinv_id
LEFT JOIN md_cs_customerbase cust ON cust.cust_code = sub.customer_name
WHERE
mst.io_type = '0'
AND mst.is_delete = '0'
AND mst.bill_status = '99'
<if test="paramMap.stor_id != null and !paramMap.stor_id.isEmpty()">
AND mst.stor_id IN
<foreach collection="paramMap.stor_id" item="code" separator="," open="(" close=")">
#{code}
</foreach>
</if>
<if test="paramMap.is_virtual == '0'">
AND sect.sect_type_attr <![CDATA[ <> ]]> '09'
</if>
<if test="paramMap.is_virtual == '1'">
AND sect.sect_type_attr = '09'
</if>
<if test="paramMap.product_area != null and !paramMap.product_area.isEmpty()">
AND LEFT(sub.container_name,2) IN
<foreach collection="paramMap.product_area" item="code" separator="," open="(" close=")">
#{code}
</foreach>
OR SUBSTRING(sub.container_name,2,2) IN
<foreach collection="paramMap.product_area" item="code" separator="," open="(" close=")">
#{code}
</foreach>
</if>
<if test="paramMap.thickness_request != null and paramMap.thickness_request != ''">
AND sub.thickness_request = #{paramMap.thickness_request}
</if>
<if test="paramMap.bill_type != null and paramMap.bill_type != ''">
AND mst.bill_type = #{paramMap.bill_type}
</if>
<if test="paramMap.sale_order_name != null and paramMap.sale_order_name != ''">
AND sub.sale_order_name = #{paramMap.sale_order_name}
</if>
<if test="paramMap.begin_time != null and paramMap.begin_time != ''">
AND mst.confirm_time <![CDATA[ >= ]]> #{paramMap.begin_time}
</if>
<if test="paramMap.end_time != null and paramMap.end_time != ''">
AND mst.confirm_time <![CDATA[ <= ]]> #{paramMap.end_time}
</if>
<if test="paramMap.with != null and paramMap.with != ''">
AND CONCAT( sub.thickness_request,'*',sub.width) = #{paramMap.with}
</if>
<if test="paramMap.classes == '1'">
AND DATE_FORMAT( mst.confirm_time, '%H:%i:%s' ) <![CDATA[ >= ]]>'08:00:00' AND DATE_FORMAT(
mst.confirm_time,
'%H:%i:%s' ) <![CDATA[ <= ]]> '19:59:59'
</if>
<if test="paramMap.classes == '2'">
AND (DATE_FORMAT( mst.confirm_time, '%H:%i:%s' ) <![CDATA[ >= ]]>'20:00:00' AND DATE_FORMAT(
mst.confirm_time,
'%H:%i:%s' ) <![CDATA[ <= ]]> '23:59:59'
OR
DATE_FORMAT( mst.confirm_time, '%H:%i:%s' ) <![CDATA[ >= ]]>'00:00:00' AND DATE_FORMAT( mst.confirm_time,
'%H:%i:%s' ) <![CDATA[ <= ]]> '07:59:59')
</if>
GROUP BY
mst.iostorinv_id,
dis.box_no
</select>
</mapper>

66
lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/impl/StIvtIostorinvdisServiceImpl.java

@ -1,9 +1,13 @@
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 com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.nl.b_lms.storage_manage.ios.enums.IOSEnum;
import org.nl.b_lms.storage_manage.ios.service.iostorInv.IStIvtIostorinvService;
@ -12,8 +16,11 @@ import org.nl.b_lms.storage_manage.ios.service.iostorInv.IStIvtIostorinvdtlServi
import org.nl.b_lms.storage_manage.ios.service.iostorInv.dao.StIvtIostorinv;
import org.nl.b_lms.storage_manage.ios.service.iostorInv.dao.StIvtIostorinvdis;
import org.nl.b_lms.storage_manage.ios.service.iostorInv.dao.mapper.StIvtIostorinvdisMapper;
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.vo.InBillPageVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -22,6 +29,7 @@ import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* <p>
@ -45,6 +53,8 @@ public class StIvtIostorinvdisServiceImpl extends ServiceImpl<StIvtIostorinvdisM
*/
@Autowired
private IStIvtIostorinvService iStIvtIostorinvService;
@Autowired
private StIvtIostorinvdisMapper stIvtIostorinvdisMapper;
@Override
public void insertDis(Long iostorinv_id, HashMap<String, ArrayList<JSONObject>> disDaoMap) {
@ -148,4 +158,60 @@ public class StIvtIostorinvdisServiceImpl extends ServiceImpl<StIvtIostorinvdisM
// 更新主表
SpringContextHolder.getBean(StIvtIostorinvServiceImpl.class).updateMstStatus(disDaoList.get(0).getIostorinv_id());
}
@Override
public IPage<InBillPageVo> getInBillPage(InBillPageParam paramMap, PageQuery page) {
String begin_time = paramMap.getBegin_time();
String end_time = paramMap.getEnd_time();
if (ObjectUtil.isNotEmpty(paramMap.getBill_type())) {
paramMap.setNew_bill_type("0001".equals(paramMap.getBill_type()) ? "0007" : "-1");
}
// 处理时间
if (ObjectUtil.isNotEmpty(begin_time) && ObjectUtil.isNotEmpty(end_time)) {
String begin_time_today = begin_time.substring(0, 10);
String end_time_today = end_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<InBillPageVo> pages = new Page<>(page.getPage() + 1, page.getSize());
if ("0".equals(paramMap.getIs_all())) {
pages = stIvtIostorinvdisMapper.selectPageLeftJoin(pages, paramMap);
} else {
pages = stIvtIostorinvdisMapper.selectPageAllLeftJoin(pages, paramMap);
}
return pages;
}
@Override
public List<InBillPageVo> getInBillDatas(InBillPageParam paramMap) {
String begin_time = paramMap.getBegin_time();
String end_time = paramMap.getEnd_time();
if (ObjectUtil.isNotEmpty(paramMap.getBill_type())) {
paramMap.setNew_bill_type("0001".equals(paramMap.getBill_type()) ? "0007" : "-1");
}
// 处理时间
if (ObjectUtil.isNotEmpty(begin_time) && ObjectUtil.isNotEmpty(end_time)) {
String begin_time_today = begin_time.substring(0, 10);
String end_time_today = end_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);
}
if ("0".equals(paramMap.getIs_all())) {
return stIvtIostorinvdisMapper.getInBillData(paramMap);
} else {
return stIvtIostorinvdisMapper.getInBillAllData(paramMap);
}
}
}

27
lms/nladmin-system/src/main/java/org/nl/wms/stat/rest/InBillQueryController.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.InBillQueryService;
import org.nl.wms.stat.service.dto.InBillPageParam;
import org.springframework.data.domain.Pageable;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
@ -36,11 +39,18 @@ public class InBillQueryController {
return new ResponseEntity<>(inBillQueryService.queryAll(whereJson, page, product_area), HttpStatus.OK);
}
// @GetMapping(value = "/query2")
// @Log("查询")
//
// public ResponseEntity<Object> 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<Object> 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);
public ResponseEntity<Object> query2(InBillPageParam whereJson, PageQuery page) {
return new ResponseEntity<>(TableDataInfo.build(inBillQueryService.getPage2(whereJson, page)), HttpStatus.OK);
}
@PostMapping
@ -74,10 +84,15 @@ public class InBillQueryController {
inBillQueryService.download(map, response, product_area);
}
@Log("导出数据2")
// @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")
public void download2(@RequestParam Map map, HttpServletResponse response, String[] product_area,String[] stor_id) throws IOException {
inBillQueryService.download2(map, response, product_area,stor_id);
@Log("导出成品入库数据")
public void downloadInBillTable(HttpServletResponse response, InBillPageParam whereJson, PageQuery page) throws IOException {
inBillQueryService.downloadInBillTable(response, whereJson, page);
}
}

16
lms/nladmin-system/src/main/java/org/nl/wms/stat/service/InBillQueryService.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.InBillPageParam;
import org.nl.wms.stat.service.vo.InBillPageVo;
import org.springframework.data.domain.Pageable;
import javax.servlet.http.HttpServletResponse;
@ -59,4 +63,14 @@ public interface InBillQueryService {
void download(Map map, HttpServletResponse response, String[] product_area) throws IOException;
void download2(Map map, HttpServletResponse response, String[] product_area,String[] stor_id) throws IOException;
}
IPage<InBillPageVo> getPage2(InBillPageParam whereJson, PageQuery page);
/**
*
* @param whereJson
* @param page
* @return
*/
void downloadInBillTable(HttpServletResponse response, InBillPageParam whereJson, PageQuery page) throws IOException;
}

29
lms/nladmin-system/src/main/java/org/nl/wms/stat/service/dto/InBillPageParam.java

@ -0,0 +1,29 @@
package org.nl.wms.stat.service.dto;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* 分页参数
* @Author: lyd
* @Date: 2025/6/3
*/
@Data
public class InBillPageParam implements Serializable {
private List<String> stor_id;
private List<String> product_area;
private String bill_type;
private String new_bill_type;
private String begin_time;
private String end_time;
private String with;
private String thickness_request;
private String pcsn;
private String sap_pcsn;
private String sale_order_name;
private String is_virtual;
private String classes;
private String is_all;
}

68
lms/nladmin-system/src/main/java/org/nl/wms/stat/service/enums/BillTypeEnum.java

@ -0,0 +1,68 @@
package org.nl.wms.stat.service.enums;
import java.util.HashMap;
import java.util.Map;
/**
* 业务类型枚举
* @Author: lyd
* @Date: 2025/6/4
*/
public enum BillTypeEnum {
PRODUCTION_IN("0001", "生产入库"),
RETURN_IN("0002", "退货入库"),
SCRAP_IN("0003", "报废入库"),
TRANSFER_IN("0004", "调拨入库"),
UNPACKING_IN("0005", "拆箱入库"),
RECHECK_IN("0006", "返检入库"),
TRIMMING_IN("0007", "改切入库"),
MANUAL_IN("0009", "手工入库");
private final String code;
private final String name;
/**
* 静态映射表用于快速查找
*/
private static final Map<String, BillTypeEnum> CODE_MAP = new HashMap<>();
static {
// 初始化时将所有枚举值放入映射表
for (BillTypeEnum type : values()) {
CODE_MAP.put(type.code, type);
}
}
BillTypeEnum(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) {
BillTypeEnum type = CODE_MAP.get(code);
return type != null ? type.getName() : "";
}
/**
* 根据code获取完整的枚举实例
* @param code 类型编码
* @return 对应的枚举实例如果未找到返回null
*/
public static BillTypeEnum getByCode(String code) {
return CODE_MAP.get(code);
}
}

115
lms/nladmin-system/src/main/java/org/nl/wms/stat/service/impl/InBillQueryServiceImpl.java

@ -8,8 +8,10 @@ import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import lombok.RequiredArgsConstructor;
import com.baomidou.mybatisplus.core.metadata.IPage;
import lombok.extern.slf4j.Slf4j;
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;
@ -18,10 +20,14 @@ 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.InBillQueryService;
import org.nl.wms.stat.service.dto.InBillPageParam;
import org.nl.wms.stat.service.enums.BillTypeEnum;
import org.nl.wms.stat.service.vo.InBillPageVo;
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.ArrayList;
@ -35,11 +41,11 @@ import java.util.Map;
* @date 2023-04-07
**/
@Service
@RequiredArgsConstructor
@Slf4j
public class InBillQueryServiceImpl implements InBillQueryService {
@Resource
private IStIvtIostorinvdisService iostorinvdisService;
@Override
public Map<String, Object> queryAll(Map whereJson, Pageable page, String[] product_area) {
String stor_id = MapUtil.getStr(whereJson, "stor_id");
@ -179,6 +185,11 @@ public class InBillQueryServiceImpl implements InBillQueryService {
return json;
}
@Override
public IPage<InBillPageVo> getPage2(InBillPageParam whereJson, PageQuery page) {
return iostorinvdisService.getInBillPage(whereJson, page);
}
@Override
public List<PointDto> queryAll(Map whereJson) {
WQLObject wo = WQLObject.getWQLObject("sch_base_point");
@ -545,4 +556,102 @@ public class InBillQueryServiceImpl implements InBillQueryService {
FileUtil.downloadExcel(list, response);
}
@Override
public void downloadInBillTable(HttpServletResponse response, InBillPageParam whereJson, PageQuery page) throws IOException {
List<Map<String, Object>> list = new ArrayList<>();
List<InBillPageVo> inBillPageVos = iostorinvdisService.getInBillDatas(whereJson);
if ("0".equals(whereJson.getIs_all())) {
for (int i = 0; i < inBillPageVos.size(); i++) {
InBillPageVo billPageVo = inBillPageVos.get(i);
Map<String, Object> mp = new LinkedHashMap<>();
mp.put("日期", (billPageVo.getConfirm_time_class().substring(0, 10)).replace("-", "/"));
mp.put("班次", billPageVo.getClasses());
if (ObjectUtil.isEmpty(billPageVo.getSale_order_name())) {
throw new BadRequestException("子卷" + billPageVo.getPcsn() + "销售订单为空!");
}
try {
mp.put("销售订单", billPageVo.getSale_order_name().substring(0, billPageVo.getSale_order_name().indexOf("-")));
mp.put("行号", billPageVo.getSale_order_name().substring(billPageVo.getSale_order_name().indexOf("-") + 1, billPageVo.getSale_order_name().length()));
} catch (Exception e) {
mp.put("销售订单", billPageVo.getSale_order_name());
mp.put("行号", "");
}
// 业务类型
String bill_type1 = billPageVo.getBill_type();
mp.put("业务类型", BillTypeEnum.getNameByCode(bill_type1));
mp.put("客户编码", billPageVo.getCustomer_name());
mp.put("客户名称", billPageVo.getCust_name());
mp.put("业务员", billPageVo.getSales_owner());
mp.put("规格", billPageVo.getThickness_request());
mp.put("尺寸(mm)(客户要求幅宽)", String.format("%.0f", Double.parseDouble(billPageVo.getWidth_standard())));
mp.put("实际尺寸(mm)(实际幅宽)", String.format("%.0f", Double.parseDouble(billPageVo.getWidth())));
String box_name = billPageVo.getBox_name();
if (StrUtil.isNotEmpty(box_name)) {
String[] s = box_name.split("木箱");
String s1 = s[1];
String[] split = s1.split("\\|");
mp.put("木箱规格/尺寸", split[1] + "*" + split[2]);
} else {
mp.put("木箱规格/尺寸", "");
}
mp.put("毛重合计", NumberUtil.round(StrUtil.isEmpty(billPageVo.getBox_weight()) ? "0" : billPageVo.getBox_weight(), 1));
mp.put("小卷号", billPageVo.getPcsn());
mp.put("sap批次号", billPageVo.getSap_pcsn());
mp.put("净重(KG)", NumberUtil.round(StrUtil.isEmpty(billPageVo.getNet_weight()) ? "0" : billPageVo.getNet_weight(), 1));
mp.put("卷数", billPageVo.getQuanlity_in_box());
mp.put("品级", "A");
mp.put("箱号", billPageVo.getBox_no());
mp.put("销售订单及行号", billPageVo.getSale_order_name());
mp.put("母卷号", billPageVo.getParent_container_name());
mp.put("基重(g/m³)(面密度)", NumberUtil.round(StrUtil.isEmpty(billPageVo.getMass_per_unit_area()) ? "0" : billPageVo.getMass_per_unit_area(), 1));
mp.put("居中度(mm)", "±1");
mp.put("塌边(mm)", "≤10");
mp.put("米数(长度)", NumberUtil.round(StrUtil.isEmpty(billPageVo.getLength()) ? "0" : billPageVo.getLength(), 1));
mp.put("管件类型", billPageVo.getPaper_type());
mp.put("管件编码", billPageVo.getPaper_code());
mp.put("管件描述", billPageVo.getPaper_name());
mp.put("生产实际抗拉值", billPageVo.getActual_value());
mp.put("内控标准抗拉下限", billPageVo.getStandard_limit());
mp.put("客户需求抗拉下限", billPageVo.getDemand_limit());
mp.put("生产日期", billPageVo.getDate_of_production().replace("-", "/"));
mp.put("入库日期", billPageVo.getConfirm_time());
mp.put("生产区域", billPageVo.getPcsn().substring(0, 2));
list.add(mp);
}
} else {
for (int i = 0; i < inBillPageVos.size(); i++) {
InBillPageVo billPageVo = inBillPageVos.get(i);
Map<String, Object> mp = new LinkedHashMap<>();
mp.put("序号", String.valueOf(i + 1));
mp.put("日期", (billPageVo.getConfirm_time_class().substring(0, 10)).replace("-", "/"));
mp.put("班次", billPageVo.getClasses());
mp.put("库区", billPageVo.getSect_name());
mp.put("客户编码", billPageVo.getCustomer_name());
mp.put("客户名称", billPageVo.getCust_name());
mp.put("业务员", billPageVo.getSales_owner());
if (ObjectUtil.isEmpty(billPageVo.getSale_order_name())) {
throw new BadRequestException("箱号" + billPageVo.getBox_no() + "销售订单为空!");
}
try {
mp.put("销售订单", billPageVo.getSale_order_name().substring(0, billPageVo.getSale_order_name().indexOf("-")));
mp.put("行号", billPageVo.getSale_order_name().substring(billPageVo.getSale_order_name().indexOf("-") + 1, billPageVo.getSale_order_name().length()));
} catch (Exception e) {
mp.put("销售订单", billPageVo.getSale_order_name());
mp.put("行号", "");
}
mp.put("生产日期", billPageVo.getDate_of_production().replace("-", "/"));
mp.put("箱号", billPageVo.getBox_no());
mp.put("生产批号", (billPageVo.getConfirm_time().substring(0, 10)).replace("-", "").trim());
mp.put("规格", billPageVo.getSpecification());
mp.put("净重", NumberUtil.round(billPageVo.getNet_weight(), 1));
mp.put("等级", "A");
mp.put("备注", "");
list.add(mp);
}
}
FileUtil.downloadExcel(list, response);
}
}

78
lms/nladmin-system/src/main/java/org/nl/wms/stat/service/vo/InBillPageVo.java

@ -0,0 +1,78 @@
package org.nl.wms.stat.service.vo;
import lombok.Data;
/**
* 成品入库分页查询实体
* @Author: lyd
* @Date: 2025/6/3
*/
@Data
public class InBillPageVo {
private String stor_name;
private String sect_name;
private String struct_code;
private String struct_name;
/** 业务类型 */
private String bill_type;
private String box_no;
private String material_code;
private String material_name;
private String box_name;
/** 子卷号 */
private String pcsn;
/** sap批次号 */
private String sap_pcsn;
/** 净重(KG) */
private String net_weight;
private String qty_unit_name;
/** 客户编码 */
private String customer_name;
/** 业务员 */
private String sales_owner;
/** 客户名称 */
private String cust_name;
/** 卷数 */
private String quanlity_in_box;
private String customer_description;
/** 销售订单: 销售订单+行号 */
private String sale_order_name;
private String input_time;
private String confirm_time;
/** 生产日期 */
private String date_of_production;
private String input_optname;
/**
* 出入库单据id汇总持有
*/
private String iostorinv_id;
private String specification;
/** 实际尺寸(mm)(实际幅宽) */
private String width;
private String paper_type;
private String paper_code;
private String paper_name;
private String thickness;
/** 毛重合计 */
private String box_weight;
private String length;
/** 规格 */
private String thickness_request;
/** 尺寸(mm)(客户要求幅宽) */
private String width_standard;
/** 基重(g/m³)(面密度) */
private String mass_per_unit_area;
/** 客户需求抗拉下限 */
private String demand_limit;
/** 内控标准抗拉下限 */
private String standard_limit;
/** 生产实际抗拉值 */
private String actual_value;
private String parent_container_name;
private String remark;
/** 班次 */
private String classes;
private String box_size;
/** 日期 */
private String confirm_time_class;
}

2
lms/nladmin-system/src/main/resources/logback-spring.xml

@ -12,7 +12,7 @@ https://juejin.cn/post/6844903775631572999
<contextName>nlAdmin</contextName>
<property name="log.charset" value="utf-8"/>
<property name="log.pattern"
value="%black(%contextName-) %X{traceId} %red(%d{yyyy-MM-dd HH:mm:ss.SSS}) %green([%thread]) %highlight(%-5level) %boldMagenta(%logger{36}) - %gray(%msg%n)"/>
value="%black(%contextName-) %X{traceId} %red(%d{yyyy-MM-dd HH:mm:ss.SSS}) %green([%thread]) %highlight(%-5level) %boldMagenta(%logger{36}) - %cyan(%msg%n)"/>
<springProperty scope="context" name="logPath" source="logging.file.path" defaultValue="logs"/>
<!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径-->
<property name="LOG_HOME" value="${logPath}"/>

Loading…
Cancel
Save