From ad92e11877b67b0702e3637e9d4b327a2b5eb7b1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9A=B4=E7=82=B3=E6=9E=97?= <15237758276@163.com>
Date: Mon, 30 Sep 2024 11:23:51 +0800
Subject: [PATCH] no message
---
 .../components/duochaxun/JianHuoBiaoDan.vue   | 112 ++++++++---
 .../components/duochaxun/JianHuoXiaoLv.vue    |  64 ++++++-
 .../controller/JianHuoBiaoDanController.java  | 179 ++++++++++++++----
 .../controller/JianHuoXiaoLvController.java   |  60 +++---
 .../java/com/yc/wms/utils/StringUtils.java    |  21 ++
 5 files changed, 342 insertions(+), 94 deletions(-)
 create mode 100644 wms/src/main/java/com/yc/wms/utils/StringUtils.java
diff --git a/wms-vue/src/components/duochaxun/JianHuoBiaoDan.vue b/wms-vue/src/components/duochaxun/JianHuoBiaoDan.vue
index 8bd1fd4..6d79fbe 100644
--- a/wms-vue/src/components/duochaxun/JianHuoBiaoDan.vue
+++ b/wms-vue/src/components/duochaxun/JianHuoBiaoDan.vue
@@ -4,6 +4,35 @@
 
     
       
+        
+          
+            
+              
+                
+                
+              
+            
+          
+          
+            
+              
+              
+            
+          
+        
         查找
         导出
         重置  
@@ -26,7 +55,7 @@
         @size-change="handleSizeChange"
         @current-change="handleCurrentChange"
         :current-page="pageNum"
-        :page-sizes="[ 50, 100, 200,500]"
+        :page-sizes="[ 100000]"
         :page-size="pageSize"
         layout="total, sizes, prev, pager, next, jumper"
         :total="total">
@@ -39,41 +68,49 @@
 export default {
   data() {
     return {
+      pickerOptions: {
+        shortcuts: [{
+          text: '最近一周',
+          onClick(picker) {
+            const end = new Date();
+            const start = new Date();
+            start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
+            picker.$emit('pick', [start, end]);
+          }
+        }, {
+          text: '最近一个月',
+          onClick(picker) {
+            const end = new Date();
+            const start = new Date();
+            start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
+            picker.$emit('pick', [start, end]);
+          }
+        }, {
+          text: '最近三个月',
+          onClick(picker) {
+            const end = new Date();
+            const start = new Date();
+            start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
+            picker.$emit('pick', [start, end]);
+          }
+        }]
+      },
+      /*多选下拉框-库区*/
+      Ku: [],
       // 表头配置
       columns: [
-        {
-          prop: 'sapName',
-          minWidth: '150px',
-          label: 'SAP类型'
-        },
-        {
-          prop: 'areaName',
-          minWidth: '150px',
-          label: '库区'
-        },
-        {
-          prop: 'formattedDate',
-          minWidth: '150px',
-          label: 'FormattedDate'
-        },
-        {
-          prop: 'taskCount',
-          minWidth: '150px',
-          label: '数量'
-        }
       ],
-      /*columns:[
-        prop: 'a1',
-      ],*/
       tableloding: false,
       isShow:false,//是否展示全部搜索条件
       tableData: [],
-      pageSize: 50
+      pageSize: 100000
       ,spanArr: [], //每行合并数
       pos: 0, //角标索引
       pageNum: 1,
       total: 3,
       param: {
+        创建日期:[new Date().setTime(new Date().getTime() - 3600 * 1000 * 24 * 7), new Date()],
+        库区:[],
       },
       loading: false,
       checked: false,
@@ -87,6 +124,7 @@ export default {
   },
   mounted: function () {
     this.queryUser();
+    this.KuS();
   },
   updated() {
     // 每次更新会重新对 Table 进行重新布局
@@ -101,7 +139,7 @@ export default {
     cellStyle({ row, column }) {
       // 找到数组中列>1那一个单元格,就是需要改变的样式
       if (row['mergeData'][column.property] && row['mergeData'][column.property][1] && row['mergeData'][column.property][1] > 1) {
-        return { 'text-align': 'left' }
+        return { 'text-align': 'center' }
       } else {
         return {}
       }
@@ -137,7 +175,8 @@ export default {
       }).then(res => res.data)
           .then(res => {
             if (res.code == 200) {
-              this.tableData = res.data
+              this.columns=res.data.columnList;
+              this.tableData = res.data.tableList
               this.total = res.total
             } else {
               this.$message.error('获取数据失败');
@@ -168,7 +207,7 @@ export default {
       },{responseType:'blob'}).then(res => {
         this.tableloding=false;
         //重命名文件
-        this.downloadFile(res.data,'序列号库存清点'+ '数据', 'xlsx')
+        this.downloadFile(res.data,'拣货表单'+ '数据', 'xlsx')
       });
       //列表数据加载
 
@@ -185,6 +224,23 @@ export default {
       link.click()
       document.body.removeChild(link)
     },
+    KuS(){
+      //库区下拉列表数据加载
+      this.$axios.post(this.$httpUrl + '/Kucunhuizong/ku', {
+
+      }).then(res => res.data)
+          .then(res => {
+            if (res.code == 200) {
+              this.Ku = res.data;
+            } else {
+              this.$message.error('获取数据失败');
+            }
+
+            // eslint-disable-next-line no-unused-vars
+          },err=>{
+            this.tableloding=false;
+          })
+    },
     parseTime(time, cFormat) {
       //获取当前时间
       if (arguments.length === 0) {
diff --git a/wms-vue/src/components/duochaxun/JianHuoXiaoLv.vue b/wms-vue/src/components/duochaxun/JianHuoXiaoLv.vue
index e262167..692145a 100644
--- a/wms-vue/src/components/duochaxun/JianHuoXiaoLv.vue
+++ b/wms-vue/src/components/duochaxun/JianHuoXiaoLv.vue
@@ -6,8 +6,16 @@
       
         
           
-            
-              
+            
+              
+                
+                
+              
             
           
           
@@ -21,8 +29,16 @@
             
           
           
-            
-              
+            
+              
+                
+                
+              
             
           
           
@@ -102,6 +118,10 @@ export default {
           }
         }]
       },
+      /*多选下拉框-库区*/
+      Ku: [],
+      /*多选下拉框-出库类型*/
+      Pt: [],
       // 表头配置
       columns: [
         {
@@ -237,6 +257,8 @@ export default {
   },
   mounted: function () {
     this.queryUser();
+    this.KuS();
+    this.PtS();
   },
   updated() {
     // 每次更新会重新对 Table 进行重新布局
@@ -335,6 +357,40 @@ export default {
       link.click()
       document.body.removeChild(link)
     },
+    KuS(){
+      //库区下拉列表数据加载
+      this.$axios.post(this.$httpUrl + '/Kucunhuizong/ku', {
+
+      }).then(res => res.data)
+          .then(res => {
+            if (res.code == 200) {
+              this.Ku = res.data;
+            } else {
+              this.$message.error('获取数据失败');
+            }
+
+            // eslint-disable-next-line no-unused-vars
+          },err=>{
+            this.tableloding=false;
+          })
+    },
+    PtS(){
+      //库区下拉列表数据加载
+      this.$axios.post(this.$httpUrl + '/JianHuoXiaoLv/inputPt', {
+
+      }).then(res => res.data)
+          .then(res => {
+            if (res.code == 200) {
+              this.Pt = res.data;
+            } else {
+              this.$message.error('获取数据失败');
+            }
+
+            // eslint-disable-next-line no-unused-vars
+          },err=>{
+            this.tableloding=false;
+          })
+    },
     parseTime(time, cFormat) {
       //获取当前时间
       if (arguments.length === 0) {
diff --git a/wms/src/main/java/com/yc/wms/controller/JianHuoBiaoDanController.java b/wms/src/main/java/com/yc/wms/controller/JianHuoBiaoDanController.java
index 7ade832..59694a9 100644
--- a/wms/src/main/java/com/yc/wms/controller/JianHuoBiaoDanController.java
+++ b/wms/src/main/java/com/yc/wms/controller/JianHuoBiaoDanController.java
@@ -7,6 +7,7 @@ import com.yc.wms.bean.Xuliehao;
 import com.yc.wms.service.Xuliehaoqingdan;
 import com.yc.wms.until.QueryPageUtil;
 import com.yc.wms.until.Result;
+import com.yc.wms.utils.StringUtils;
 import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.extern.slf4j.Slf4j;
@@ -42,6 +43,23 @@ public class JianHuoBiaoDanController {
         query.setPageSize((int)jsonObject.get("pageSize"));
         query.setPageNum((int)jsonObject.get("pageNum"));
         JSONObject param= (JSONObject)jsonObject.get("param");
+        String querySql="";//查询条件
+        JSONArray createDate=param.getJSONArray("创建日期");
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+        Calendar c = Calendar.getInstance();
+        /*获取7天前的日期*/
+        c.add(Calendar.DATE, - 7);
+        Date monday = c.getTime();
+        String startDate = sdf.format(monday);
+        String endDate = sdf.format(new Date());
+        if (createDate!=null){
+            startDate=sdf.format(createDate.getDate(0));
+            endDate=sdf.format(createDate.getDate(1));
+        }
+        querySql=" and formatted_date>='"+startDate+"' AND formatted_date<='"+endDate+"'";
+        if (param.getJSONArray("库区")!=null&¶m.getJSONArray("库区").size()>0){
+            querySql=querySql+" and area_name in ("+ StringUtils.strInSql(JSONUtil.toList(param.getJSONArray("库区"), String.class))+")";
+        }
         /* 基础sql数据查询*/
         String sql=" select  Row_number() OVER(order by pt.sourceType,z.NAME,CONVERT(VARCHAR, t.OPERATE_TIME, 23)) as id, z.NAME as 'area_name',count(t.id) as 'task_count',max(bt.NAME) as 'bt_name',pt.sourceType as 'sap_name', "
                 +"  CONVERT(VARCHAR, t.OPERATE_TIME, 23) AS formatted_date "
@@ -53,7 +71,9 @@ public class JianHuoBiaoDanController {
                 +"  left join [ZONE] z on z.id=loc.ZONE_ID "
                 +"  where t.PLAN_QUANTITY>0 "
                 +"  group by pt.sourceType,z.NAME,CONVERT(VARCHAR, t.OPERATE_TIME, 23) ";
-        String sqlCount = "select count(t.id) as nums from (" + sql+") t";
+        String sqlCount = " select count(t.id) as nums from ( "
+                +"  select max(id) id from ( " + sql+" ) t group by t.sap_name,t.area_name "
+                +" ) t ";
         /* 总条数*/
         List counts = entityManager.createNativeQuery(sqlCount).getResultList();
         /* 当前页数据*/
@@ -61,70 +81,145 @@ public class JianHuoBiaoDanController {
         int pageSize = query.getPageSize();//条数
         String sqlFy = "select t.* from(" + sql+") t";
         sqlFy+= " WHERE id BETWEEN " + (pageNum-1) * pageSize + " AND " + (pageNum) * pageSize;
+        sqlFy+= querySql;
         List sapDos=new ArrayList<>();
+        /* 返回的数据*/
+        List jhBdReturn=new ArrayList<>();
+        /*返回时间列*/
+        List columnList=new ArrayList<>();
+        /* 初始化表格*/
+        columnList.add(new Column("sapName", "150px", "SAP类型"));
+        columnList.add(new Column("areaName", "150px", "库区"));
         /* 查询所有数据*/
         List jhBdList = entityManager.createNativeQuery(sqlFy,JhBd.class).getResultList();
         if (jhBdList.size()>0){
+            /* 添加大汇总*/
+            JSONObject jhBdDJson = new JSONObject();
+
             /*table 合并列行*/
             int m=0;//列
             int n=0;//行
+            /* 获取动态时间列-按时间进行分组获取全部动态时间列*/
+            /* 提取列表所有时间列并去重*/
+            Set uniqueNames = new HashSet<>();
+            for (JhBd jhBd : jhBdList) {
+                String formattedDate=jhBd.getFormattedDate();
+                if (formattedDate!=null) {
+                    uniqueNames.add(jhBd.getFormattedDate());
+                }else {
+                    uniqueNames.add("unknown");
+                }
+            }
+            /* 去重后排序并转为List类型*/
+            List sortedUniqueNames = uniqueNames.stream()
+                    .sorted()
+                    .collect(Collectors.toList());
+            /* 格式化数据*/
+            for (String label:sortedUniqueNames){
+                String prop=label;
+                if (label==null){
+                    prop=null;
+                }
+                Column column=new Column(prop,"150px",label);
+                columnList.add(column);
+            }
+
             /* 按SAP类型分组*/
             Map> groupedMap = jhBdList.stream()
                     .collect(Collectors.groupingBy(jhBd -> Objects.toString(jhBd.getSapName(), "unknown")));
             /*遍历所有SAP类型*/
             List sapKeys = panxu(groupedMap);
             for (int i = 0; i < sapKeys.size(); i++) {
+                /* 添加汇总*/
+                JSONObject jhBdXJson = new JSONObject();
+
                 String sapName=sapKeys.get(i);
                 List sapJhBdList=groupedMap.get(sapName);
-                /*合并第一列*/
-                int[] sapMn={sapJhBdList.size(),1};
                 /* 按库区分组*/
                 Map> sapJhBdMap = sapJhBdList.stream()
                         .collect(Collectors.groupingBy(jhBd -> Objects.toString(jhBd.getAreaName(), "unknown")));
                 /*遍历所有库区*/
                 List areaDos=new ArrayList<>();// 返回AreaDos
+                /*按库区合并第sap 行数+合计1行*/
+                int[] sapMn={sapJhBdMap.size()+1,1};
+                int[] areaMn={1,1};
                 List areaNames = panxu(sapJhBdMap);//按表的id进行排序
                 for (int j = 0; j < areaNames.size(); j++) {
                     String areaName=areaNames.get(j);
                     List areaJhBdList=sapJhBdMap.get(areaName);
-                    /*合并第二列*/
-                    int[] areaMn={areaJhBdList.size(),1};
+
+                    /*合并在第一条数据*/
+                    JhBd jhBdHb = jhBdList.stream()
+                            .filter(person -> person.getId() == areaJhBdList.get(0).getId())
+                            .findFirst().get();
+                    jhBdHb.setMergeData(sapMn, areaMn);
+                    /* 合并后重置*/
+                    sapMn = new int[2];
+
                     /*按时间FormattedDate进行分组*/
                     Map> dateJhBdMap = areaJhBdList.stream()
                             .collect(Collectors.groupingBy(jhBd -> Objects.toString(jhBd.getFormattedDate(), "unknown")));
                     /*遍历所有FormattedDate*/
                     List formattedDos=new ArrayList<>();// 返回FormattedDos
                     List formattedDates=panxu(dateJhBdMap);
-                    for (int k = 0; k < formattedDates.size(); k++) {
-                        String formatted=formattedDates.get(k);
-                        List jhBds =dateJhBdMap.get(formatted);
-                        JhBd jhBd = jhBdList.stream()
-                                .filter(person -> person.getId() == jhBds.get(0).getId())
-                                .findFirst().get();
-                        jhBd.setMergeData(sapMn, areaMn);
-                        /* 合并后重置*/
-                        sapMn=new int[2];
-                        areaMn=new int[2];
 
-                        FormattedDo formattedDo=new FormattedDo(formatted, jhBds);
-                        formattedDos.add(formattedDo);
+                    /* 转为JSONObject类型*/
+                    JSONObject jhBdJson = JSONUtil.parseObj(jhBdHb);
+                    if (jhBdXJson.size()<1){
+                        jhBdXJson.accumulate("areaName", "汇总");
+                        /* 隐藏SAP类型列*/
+                        JSONObject sapMergeData=new JSONObject();
+                        sapMergeData.accumulate("sapName",new int[]{0,0});
+                        jhBdXJson.accumulate("mergeData",sapMergeData);
                     }
-                    /*写入库区*/
-                    AreaDo areaDo=new AreaDo();
-                    areaDo.setAreaName(areaName);
-                    areaDo.setFormatted(formattedDos);
-                    areaDos.add(areaDo);
+                    if (jhBdDJson.size()<1){
+                        jhBdDJson.accumulate("areaName", "汇总");
+                        /* 隐藏SAP类型列*/
+                        JSONObject sapMergeData=new JSONObject();
+                        sapMergeData.accumulate("sapName",new int[]{0,0});
+                        sapMergeData.accumulate("areaName",new int[]{1,2});
+                        jhBdDJson.accumulate("mergeData",sapMergeData);
+                    }
+                    for (int k = 0; k < formattedDates.size(); k++) {
+                        //日期
+                        String formatted=formattedDates.get(k);
+                        //日期关联的数据
+                        List jhBds =dateJhBdMap.get(formatted);
+                        /* 写入返回数据*/
+                        //任务数量
+                        int taskCount= jhBds.get(0).getTaskCount();
+                        //添加到返回类列
+                        jhBdJson.accumulate(formatted,taskCount);
+                        /*写入小汇总*/
+                        if (jhBdXJson.getInt(formatted)==null){
+                            jhBdXJson.set(formatted,taskCount);
+                        }else {
+                            jhBdXJson.set(formatted,Integer.valueOf(jhBdXJson.getStr(formatted))+taskCount);
+                        }
+                        /*写入大汇总*/
+                        if (jhBdDJson.getInt(formatted)==null){
+                            jhBdDJson.set(formatted,taskCount);
+                        }else {
+                            jhBdDJson.set(formatted,Integer.valueOf(jhBdDJson.getStr(formatted))+taskCount);
+                        }
+                    }
+                    jhBdReturn.add(jhBdJson);
                 }
-                SapDo sapDo=new SapDo(sapName,areaDos);
-                sapDos.add(sapDo);
+                /* 添加小汇总*/
+                jhBdReturn.add(jhBdXJson);
             }
-            System.out.println("返回数据:"+sapDos);
+            /* 添加大汇总*/
+            jhBdReturn.add(jhBdDJson);
+            System.out.println("返回数据:"+jhBdReturn);
         }else {
             System.out.println("为查询到值");
         }
 
+        JSONObject returnBody=new JSONObject();
+        returnBody.accumulate("tableList", jhBdReturn);
+        returnBody.accumulate("columnList", columnList);
 //        long total=counts.get(0);
-        Result result=Result.result(200,"操作成功",Long.parseLong(counts.get(0).toString()), jhBdList);
+        Result result=Result.result(200,"操作成功",Long.parseLong(counts.get(0).toString()), returnBody);
 
         return result;
     }
@@ -245,14 +340,20 @@ class JhBd implements Serializable {
     /* 库区名称*/
     private String areaName="";
     /* 任务数量*/
-    private int taskCount;
+    private int taskCount=0;
     /* sap类型*/
     private String sapName="";
     /* 其他出库*/
     private String btName="";
     private String formattedDate="";
+    /* 合并行,列设置*/
     @Transient
-    private Map mergeData;
+    private Map mergeData = new HashMap() {{
+        put("sapName", new int[]{0, 0});
+        put("areaName", new int[]{0, 0});
+        put("taskCount", new int[]{1, 1});
+        put("formattedDate", new int[]{1, 1});
+    }};
 
     public void setMergeData(int[] sap,int[] area){
         int[] mn={1,1};
@@ -264,14 +365,16 @@ class JhBd implements Serializable {
         map.put("formattedDate", mn);
         this.mergeData = map;
     }
-    public JhBd(){
-        int[] mn={1,1};
-        int[] mnc={0,0};/*默认不显示*/
-        Map map=new HashMap<>();
-        map.put("sapName", mnc);
-        map.put("areaName", mnc);
-        map.put("taskCount", mn);
-        map.put("formattedDate", mn);
-        this.mergeData = map;
-    }
+}
+
+@Data
+@AllArgsConstructor
+/*动态列*/
+class Column {
+    /*数据映射*/
+    private String prop;
+    /*宽度*/
+    private String minWidth="150px";
+    /*列明*/
+    private String label;
 }
\ No newline at end of file
diff --git a/wms/src/main/java/com/yc/wms/controller/JianHuoXiaoLvController.java b/wms/src/main/java/com/yc/wms/controller/JianHuoXiaoLvController.java
index 87dfda3..66473ca 100644
--- a/wms/src/main/java/com/yc/wms/controller/JianHuoXiaoLvController.java
+++ b/wms/src/main/java/com/yc/wms/controller/JianHuoXiaoLvController.java
@@ -6,6 +6,7 @@ import com.yc.wms.bean.Xuliehao;
 import com.yc.wms.service.Xuliehaoqingdan;
 import com.yc.wms.until.QueryPageUtil;
 import com.yc.wms.until.Result;
+import com.yc.wms.utils.StringUtils;
 import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.extern.slf4j.Slf4j;
@@ -31,6 +32,25 @@ public class JianHuoXiaoLvController {
     @Autowired
     private Xuliehaoqingdan xuliehaoqingdan;
 
+    private static /* 基础sql数据查询*/
+            String sql=" select t.id,bt.NAME as '单据类型',pt.sourceType as '出库类型',pt.id as '任务号',t.BILLCODE as '子任务号', "
+            +"    z.NAME as '库区',ptd.LINE_NUMBER as '拣货行' ,pt.UPDATE_TIME as '创建时间',t.dateBill3 as '生成合单任务时间', "
+            +"    t.dateBill1 as '下发时间',t.OPERATE_TIME as '拣货时间',t.ARRIVAL_TIME as '清点时间',t.operator_Date as '合单时间', "
+            +"    t.dateline as '交单时间',  "
+            +"   DATEDIFF(second, pt.UPDATE_TIME,t.dateBill1 )/60  as '创建-下发时间',  "
+            +"   DATEDIFF(second, t.dateBill1,t.OPERATE_TIME )/60 as '下发-拣货时间', "
+            +"    DATEDIFF(second, t.OPERATE_TIME,t.operator_Date )/60 as '拣货-合单时间', "
+            +"    DATEDIFF(second, t.operator_Date,t.dateline )/60 as '合单-交单时间', "
+            +"    DATEDIFF(second, t.OPERATE_TIME,t.ARRIVAL_TIME )/60 as '拣货-清点时间', "
+            +"    DATEDIFF(second, t.ARRIVAL_TIME,t.operator_Date )/60 as '清点-合单时间', "
+            +"    DATEDIFF(second, t.OPERATE_TIME,t.dateline )/60 as '拣货-交单时间' "
+            +"  from task t "
+            +"  left join PICK_TICKET_DETAIL ptd on  ptd.id=t.PICK_TICKET_DETAIL_ID "
+            +"  left join PICK_TICKET pt on pt.id=ptd.PICK_TICKET_ID "
+            +"  left join BILL_TYPE bt on bt.id=pt.BILL_TYPE_ID "
+            +"  left join LOCATION loc on loc.id=t.SRC_LOC_ID "
+            +"  left join [ZONE] z on z.id=loc.ZONE_ID "
+            +"  where t.PLAN_QUANTITY>0 ";
     @PostMapping("/queryList")
     public Result queryList(@RequestBody String  json) {
         /* 返回data设置*/
@@ -40,8 +60,8 @@ public class JianHuoXiaoLvController {
         query.setPageNum((int)jsonObject.get("pageNum"));
         String querySql="";//查询条件
         JSONObject param= (JSONObject)jsonObject.get("param");
-        if (param.getStr("出库类型")!=null&¶m.getStr("出库类型").length()>0){
-            querySql=querySql+" and 出库类型 like '%"+param.getStr("出库类型")+"%'";
+        if (param.getJSONArray("出库类型").size()>0){
+            querySql=querySql+" and 出库类型 in ("+ StringUtils.strInSql(JSONUtil.toList(param.getJSONArray("出库类型"), String.class))+")";
         }
         if (param.getStr("任务号")!=null&¶m.getStr("任务号").length()>0){
             querySql=querySql+" and 任务号 like '%"+param.getStr("任务号")+"%'";
@@ -49,33 +69,14 @@ public class JianHuoXiaoLvController {
         if (param.getStr("子任务号")!=null&¶m.getStr("子任务号").length()>0){
             querySql=querySql+" and 子任务号 like '%"+param.getStr("子任务号")+"%'";
         }
-        if (param.getStr("库区")!=null&¶m.getStr("库区").length()>0){
-            querySql=querySql+" and 库区 like '%"+param.getStr("库区")+"%'";
+        if (param.getJSONArray("库区")!=null&¶m.getJSONArray("库区").size()>0){
+            querySql=querySql+" and 库区 in ("+ StringUtils.strInSql(JSONUtil.toList(param.getJSONArray("库区"), String.class))+")";
         }
         if (param.getStr("创建日期")!=null&¶m.getStr("创建日期").length()>0){
             SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
             querySql=querySql+" and 创建时间 >= '"+sdf.format(param.getJSONArray("创建日期").getDate(0))+"'";
             querySql=querySql+" and 创建时间 <= '"+sdf.format(param.getJSONArray("创建日期").getDate(1))+"'";
         }
-        /* 基础sql数据查询*/
-        String sql=" select t.id,bt.NAME as '单据类型',pt.sourceType as '出库类型',pt.id as '任务号',t.BILLCODE as '子任务号', "
-                +"    z.NAME as '库区',ptd.LINE_NUMBER as '拣货行' ,pt.UPDATE_TIME as '创建时间',t.dateBill3 as '生成合单任务时间', "
-                +"    t.dateBill1 as '下发时间',t.OPERATE_TIME as '拣货时间',t.ARRIVAL_TIME as '清点时间',t.operator_Date as '合单时间', "
-                +"    t.dateline as '交单时间',  "
-                +"   DATEDIFF(second, pt.UPDATE_TIME,t.dateBill1 )/60  as '创建-下发时间',  "
-                +"   DATEDIFF(second, t.dateBill1,t.OPERATE_TIME )/60 as '下发-拣货时间', "
-                +"    DATEDIFF(second, t.OPERATE_TIME,t.operator_Date )/60 as '拣货-合单时间', "
-                +"    DATEDIFF(second, t.operator_Date,t.dateline )/60 as '合单-交单时间', "
-                +"    DATEDIFF(second, t.OPERATE_TIME,t.ARRIVAL_TIME )/60 as '拣货-清点时间', "
-                +"    DATEDIFF(second, t.ARRIVAL_TIME,t.operator_Date )/60 as '清点-合单时间', "
-                +"    DATEDIFF(second, t.OPERATE_TIME,t.dateline )/60 as '拣货-交单时间' "
-                +"  from task t "
-                +"  left join PICK_TICKET_DETAIL ptd on  ptd.id=t.PICK_TICKET_DETAIL_ID "
-                +"  left join PICK_TICKET pt on pt.id=ptd.PICK_TICKET_ID "
-                +"  left join BILL_TYPE bt on bt.id=pt.BILL_TYPE_ID "
-                +"  left join LOCATION loc on loc.id=t.SRC_LOC_ID "
-                +"  left join [ZONE] z on z.id=loc.ZONE_ID "
-                +"  where t.PLAN_QUANTITY>0 ";
         /* 当前页数据*/
         int pageNum = query.getPageNum();//当前页
         int pageSize = query.getPageSize();//条数
@@ -97,7 +98,18 @@ public class JianHuoXiaoLvController {
 
         return result;
     }
+    @PostMapping("/inputPt")
+    public Result inputPt(@RequestBody String  json) {
+        String sqlInput=" select 出库类型 as 'name' from ( "
+                +sql
+                +"  ) t "
+                +" WHERE 出库类型 is not null group by 出库类型 ";
+        List ptList = entityManager.createNativeQuery(sqlInput).getResultList();
 
+        Result result=Result.result(200,"操作成功",1, ptList);
+
+        return result;
+    }
     @PostMapping(value = "/download")
     public void exportCompany(HttpServletResponse response, @RequestBody String  json) throws Exception {
 
@@ -137,7 +149,7 @@ class JhXl implements Serializable {
     @Transient
     private Map mergeData=new HashMap() {{
         put("单据类型", new int[]{1, 1});
-    }};;
+    }};
 
     public void setMergeData(int[] sap,int[] area){
         int[] mn={1,1};
diff --git a/wms/src/main/java/com/yc/wms/utils/StringUtils.java b/wms/src/main/java/com/yc/wms/utils/StringUtils.java
new file mode 100644
index 0000000..efadf01
--- /dev/null
+++ b/wms/src/main/java/com/yc/wms/utils/StringUtils.java
@@ -0,0 +1,21 @@
+package com.yc.wms.utils;
+
+import java.util.List;
+
+public class StringUtils {
+    /*把list集合转为 in sql语句*/
+    public static String strInSql(List strList){
+        StringBuffer sb = new StringBuffer();
+        if (strList.size()<1){
+            System.out.println("list集合为空");
+        }
+        for (int i = 0; i< strList.size(); i++){
+            if(sb.length()<1){
+                sb.append("'"+ strList.get(i)+"'");
+            }else {
+                sb.append(",'"+ strList.get(i)+"'");
+            }
+        }
+        return sb.toString();
+    }
+}