no message
parent
70718abd1d
commit
ad92e11877
|
|
@ -4,6 +4,35 @@
|
|||
|
||||
<div class="div2" style="padding-bottom: 10px">
|
||||
<el-form ref="form" :model="param" label-width="80px">
|
||||
<el-row>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="库区">
|
||||
<el-select v-model="param.库区" multiple filterable placeholder="请选择库区" style="width: 100%;">
|
||||
<el-option
|
||||
v-for="item in Ku"
|
||||
:key="item.index"
|
||||
:label="item.name"
|
||||
:value="item.name"
|
||||
>
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="创建日期:">
|
||||
<el-date-picker style="width: 300px"
|
||||
v-model="param.创建日期"
|
||||
type="daterange"
|
||||
align="right"
|
||||
unlink-panels
|
||||
range-separator="至"
|
||||
start-placeholder="开始日期"
|
||||
end-placeholder="结束日期"
|
||||
:picker-options="pickerOptions">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-button type="success" @click="find">查找</el-button>
|
||||
<el-button type="success" @click="down">导出</el-button>
|
||||
<el-button type="success" @click="rest">重置</el-button>
|
||||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -6,8 +6,16 @@
|
|||
<el-form ref="form" :model="param" label-width="80px">
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="4">
|
||||
<el-form-item label="出库类型:">
|
||||
<el-input type="text" v-model="param.出库类型" style="width: 105px"></el-input>
|
||||
<el-form-item label="出库类型">
|
||||
<el-select v-model="param.出库类型" multiple filterable placeholder="请选择库区" style="width: 155px;">
|
||||
<el-option
|
||||
v-for="item in Pt"
|
||||
:key="item"
|
||||
:label="item"
|
||||
:value="item"
|
||||
>
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
|
|
@ -21,8 +29,16 @@
|
|||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="库区:">
|
||||
<el-input type="textarea" v-model="param.库区" :rows="1"></el-input>
|
||||
<el-form-item label="库区">
|
||||
<el-select v-model="param.库区" multiple filterable placeholder="请选择库区" style="width: 100%;">
|
||||
<el-option
|
||||
v-for="item in Ku"
|
||||
:key="item.index"
|
||||
:label="item.name"
|
||||
:value="item.name"
|
||||
>
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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<Integer> 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<SapDo> sapDos=new ArrayList<>();
|
||||
/* 返回的数据*/
|
||||
List<JSONObject> jhBdReturn=new ArrayList<>();
|
||||
/*返回时间列*/
|
||||
List<Column> columnList=new ArrayList<>();
|
||||
/* 初始化表格*/
|
||||
columnList.add(new Column("sapName", "150px", "SAP类型"));
|
||||
columnList.add(new Column("areaName", "150px", "库区"));
|
||||
/* 查询所有数据*/
|
||||
List<JhBd> jhBdList = entityManager.createNativeQuery(sqlFy,JhBd.class).getResultList();
|
||||
if (jhBdList.size()>0){
|
||||
/* 添加大汇总*/
|
||||
JSONObject jhBdDJson = new JSONObject();
|
||||
|
||||
/*table 合并列行*/
|
||||
int m=0;//列
|
||||
int n=0;//行
|
||||
/* 获取动态时间列-按时间进行分组获取全部动态时间列*/
|
||||
/* 提取列表所有时间列并去重*/
|
||||
Set<String> uniqueNames = new HashSet<>();
|
||||
for (JhBd jhBd : jhBdList) {
|
||||
String formattedDate=jhBd.getFormattedDate();
|
||||
if (formattedDate!=null) {
|
||||
uniqueNames.add(jhBd.getFormattedDate());
|
||||
}else {
|
||||
uniqueNames.add("unknown");
|
||||
}
|
||||
}
|
||||
/* 去重后排序并转为List类型*/
|
||||
List<String> 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<String, List<JhBd>> groupedMap = jhBdList.stream()
|
||||
.collect(Collectors.groupingBy(jhBd -> Objects.toString(jhBd.getSapName(), "unknown")));
|
||||
/*遍历所有SAP类型*/
|
||||
List<String> sapKeys = panxu(groupedMap);
|
||||
for (int i = 0; i < sapKeys.size(); i++) {
|
||||
/* 添加汇总*/
|
||||
JSONObject jhBdXJson = new JSONObject();
|
||||
|
||||
String sapName=sapKeys.get(i);
|
||||
List<JhBd> sapJhBdList=groupedMap.get(sapName);
|
||||
/*合并第一列*/
|
||||
int[] sapMn={sapJhBdList.size(),1};
|
||||
/* 按库区分组*/
|
||||
Map<String, List<JhBd>> sapJhBdMap = sapJhBdList.stream()
|
||||
.collect(Collectors.groupingBy(jhBd -> Objects.toString(jhBd.getAreaName(), "unknown")));
|
||||
/*遍历所有库区*/
|
||||
List<AreaDo> areaDos=new ArrayList<>();// 返回AreaDos
|
||||
/*按库区合并第sap 行数+合计1行*/
|
||||
int[] sapMn={sapJhBdMap.size()+1,1};
|
||||
int[] areaMn={1,1};
|
||||
List<String> areaNames = panxu(sapJhBdMap);//按表的id进行排序
|
||||
for (int j = 0; j < areaNames.size(); j++) {
|
||||
String areaName=areaNames.get(j);
|
||||
List<JhBd> 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<String, List<JhBd>> dateJhBdMap = areaJhBdList.stream()
|
||||
.collect(Collectors.groupingBy(jhBd -> Objects.toString(jhBd.getFormattedDate(), "unknown")));
|
||||
/*遍历所有FormattedDate*/
|
||||
List<FormattedDo> formattedDos=new ArrayList<>();// 返回FormattedDos
|
||||
List<String> formattedDates=panxu(dateJhBdMap);
|
||||
for (int k = 0; k < formattedDates.size(); k++) {
|
||||
String formatted=formattedDates.get(k);
|
||||
List<JhBd> 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<JhBd> 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<String,int[]> mergeData;
|
||||
private Map<String,int[]> 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<String,int[]> 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;
|
||||
}
|
||||
|
|
@ -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<String> 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<String,int[]> mergeData=new HashMap() {{
|
||||
put("单据类型", new int[]{1, 1});
|
||||
}};;
|
||||
}};
|
||||
|
||||
public void setMergeData(int[] sap,int[] area){
|
||||
int[] mn={1,1};
|
||||
|
|
|
|||
|
|
@ -0,0 +1,21 @@
|
|||
package com.yc.wms.utils;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class StringUtils {
|
||||
/*把list集合转为 in sql语句*/
|
||||
public static String strInSql(List<String> 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();
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue