no message
parent
70718abd1d
commit
ad92e11877
|
|
@ -4,6 +4,35 @@
|
||||||
|
|
||||||
<div class="div2" style="padding-bottom: 10px">
|
<div class="div2" style="padding-bottom: 10px">
|
||||||
<el-form ref="form" :model="param" label-width="80px">
|
<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="find">查找</el-button>
|
||||||
<el-button type="success" @click="down">导出</el-button>
|
<el-button type="success" @click="down">导出</el-button>
|
||||||
<el-button type="success" @click="rest">重置</el-button>
|
<el-button type="success" @click="rest">重置</el-button>
|
||||||
|
|
@ -26,7 +55,7 @@
|
||||||
@size-change="handleSizeChange"
|
@size-change="handleSizeChange"
|
||||||
@current-change="handleCurrentChange"
|
@current-change="handleCurrentChange"
|
||||||
:current-page="pageNum"
|
:current-page="pageNum"
|
||||||
:page-sizes="[ 50, 100, 200,500]"
|
:page-sizes="[ 100000]"
|
||||||
:page-size="pageSize"
|
:page-size="pageSize"
|
||||||
layout="total, sizes, prev, pager, next, jumper"
|
layout="total, sizes, prev, pager, next, jumper"
|
||||||
:total="total">
|
:total="total">
|
||||||
|
|
@ -39,41 +68,49 @@
|
||||||
export default {
|
export default {
|
||||||
data() {
|
data() {
|
||||||
return {
|
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: [
|
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,
|
tableloding: false,
|
||||||
isShow:false,//是否展示全部搜索条件
|
isShow:false,//是否展示全部搜索条件
|
||||||
tableData: [],
|
tableData: [],
|
||||||
pageSize: 50
|
pageSize: 100000
|
||||||
,spanArr: [], //每行合并数
|
,spanArr: [], //每行合并数
|
||||||
pos: 0, //角标索引
|
pos: 0, //角标索引
|
||||||
pageNum: 1,
|
pageNum: 1,
|
||||||
total: 3,
|
total: 3,
|
||||||
param: {
|
param: {
|
||||||
|
创建日期:[new Date().setTime(new Date().getTime() - 3600 * 1000 * 24 * 7), new Date()],
|
||||||
|
库区:[],
|
||||||
},
|
},
|
||||||
loading: false,
|
loading: false,
|
||||||
checked: false,
|
checked: false,
|
||||||
|
|
@ -87,6 +124,7 @@ export default {
|
||||||
},
|
},
|
||||||
mounted: function () {
|
mounted: function () {
|
||||||
this.queryUser();
|
this.queryUser();
|
||||||
|
this.KuS();
|
||||||
},
|
},
|
||||||
updated() {
|
updated() {
|
||||||
// 每次更新会重新对 Table 进行重新布局
|
// 每次更新会重新对 Table 进行重新布局
|
||||||
|
|
@ -101,7 +139,7 @@ export default {
|
||||||
cellStyle({ row, column }) {
|
cellStyle({ row, column }) {
|
||||||
// 找到数组中列>1那一个单元格,就是需要改变的样式
|
// 找到数组中列>1那一个单元格,就是需要改变的样式
|
||||||
if (row['mergeData'][column.property] && row['mergeData'][column.property][1] && row['mergeData'][column.property][1] > 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 {
|
} else {
|
||||||
return {}
|
return {}
|
||||||
}
|
}
|
||||||
|
|
@ -137,7 +175,8 @@ export default {
|
||||||
}).then(res => res.data)
|
}).then(res => res.data)
|
||||||
.then(res => {
|
.then(res => {
|
||||||
if (res.code == 200) {
|
if (res.code == 200) {
|
||||||
this.tableData = res.data
|
this.columns=res.data.columnList;
|
||||||
|
this.tableData = res.data.tableList
|
||||||
this.total = res.total
|
this.total = res.total
|
||||||
} else {
|
} else {
|
||||||
this.$message.error('获取数据失败');
|
this.$message.error('获取数据失败');
|
||||||
|
|
@ -168,7 +207,7 @@ export default {
|
||||||
},{responseType:'blob'}).then(res => {
|
},{responseType:'blob'}).then(res => {
|
||||||
this.tableloding=false;
|
this.tableloding=false;
|
||||||
//重命名文件
|
//重命名文件
|
||||||
this.downloadFile(res.data,'序列号库存清点'+ '数据', 'xlsx')
|
this.downloadFile(res.data,'拣货表单'+ '数据', 'xlsx')
|
||||||
});
|
});
|
||||||
//列表数据加载
|
//列表数据加载
|
||||||
|
|
||||||
|
|
@ -185,6 +224,23 @@ export default {
|
||||||
link.click()
|
link.click()
|
||||||
document.body.removeChild(link)
|
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) {
|
parseTime(time, cFormat) {
|
||||||
//获取当前时间
|
//获取当前时间
|
||||||
if (arguments.length === 0) {
|
if (arguments.length === 0) {
|
||||||
|
|
|
||||||
|
|
@ -6,8 +6,16 @@
|
||||||
<el-form ref="form" :model="param" label-width="80px">
|
<el-form ref="form" :model="param" label-width="80px">
|
||||||
<el-row :gutter="24">
|
<el-row :gutter="24">
|
||||||
<el-col :span="4">
|
<el-col :span="4">
|
||||||
<el-form-item label="出库类型:">
|
<el-form-item label="出库类型">
|
||||||
<el-input type="text" v-model="param.出库类型" style="width: 105px"></el-input>
|
<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-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="4">
|
<el-col :span="4">
|
||||||
|
|
@ -21,8 +29,16 @@
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="4">
|
<el-col :span="4">
|
||||||
<el-form-item label="库区:">
|
<el-form-item label="库区">
|
||||||
<el-input type="textarea" v-model="param.库区" :rows="1"></el-input>
|
<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-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="4">
|
<el-col :span="4">
|
||||||
|
|
@ -102,6 +118,10 @@ export default {
|
||||||
}
|
}
|
||||||
}]
|
}]
|
||||||
},
|
},
|
||||||
|
/*多选下拉框-库区*/
|
||||||
|
Ku: [],
|
||||||
|
/*多选下拉框-出库类型*/
|
||||||
|
Pt: [],
|
||||||
// 表头配置
|
// 表头配置
|
||||||
columns: [
|
columns: [
|
||||||
{
|
{
|
||||||
|
|
@ -237,6 +257,8 @@ export default {
|
||||||
},
|
},
|
||||||
mounted: function () {
|
mounted: function () {
|
||||||
this.queryUser();
|
this.queryUser();
|
||||||
|
this.KuS();
|
||||||
|
this.PtS();
|
||||||
},
|
},
|
||||||
updated() {
|
updated() {
|
||||||
// 每次更新会重新对 Table 进行重新布局
|
// 每次更新会重新对 Table 进行重新布局
|
||||||
|
|
@ -335,6 +357,40 @@ export default {
|
||||||
link.click()
|
link.click()
|
||||||
document.body.removeChild(link)
|
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) {
|
parseTime(time, cFormat) {
|
||||||
//获取当前时间
|
//获取当前时间
|
||||||
if (arguments.length === 0) {
|
if (arguments.length === 0) {
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,7 @@ import com.yc.wms.bean.Xuliehao;
|
||||||
import com.yc.wms.service.Xuliehaoqingdan;
|
import com.yc.wms.service.Xuliehaoqingdan;
|
||||||
import com.yc.wms.until.QueryPageUtil;
|
import com.yc.wms.until.QueryPageUtil;
|
||||||
import com.yc.wms.until.Result;
|
import com.yc.wms.until.Result;
|
||||||
|
import com.yc.wms.utils.StringUtils;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
@ -42,6 +43,23 @@ public class JianHuoBiaoDanController {
|
||||||
query.setPageSize((int)jsonObject.get("pageSize"));
|
query.setPageSize((int)jsonObject.get("pageSize"));
|
||||||
query.setPageNum((int)jsonObject.get("pageNum"));
|
query.setPageNum((int)jsonObject.get("pageNum"));
|
||||||
JSONObject param= (JSONObject)jsonObject.get("param");
|
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数据查询*/
|
/* 基础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', "
|
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 "
|
+" 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 "
|
+" left join [ZONE] z on z.id=loc.ZONE_ID "
|
||||||
+" where t.PLAN_QUANTITY>0 "
|
+" where t.PLAN_QUANTITY>0 "
|
||||||
+" group by pt.sourceType,z.NAME,CONVERT(VARCHAR, t.OPERATE_TIME, 23) ";
|
+" 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();
|
List<Integer> counts = entityManager.createNativeQuery(sqlCount).getResultList();
|
||||||
/* 当前页数据*/
|
/* 当前页数据*/
|
||||||
|
|
@ -61,70 +81,145 @@ public class JianHuoBiaoDanController {
|
||||||
int pageSize = query.getPageSize();//条数
|
int pageSize = query.getPageSize();//条数
|
||||||
String sqlFy = "select t.* from(" + sql+") t";
|
String sqlFy = "select t.* from(" + sql+") t";
|
||||||
sqlFy+= " WHERE id BETWEEN " + (pageNum-1) * pageSize + " AND " + (pageNum) * pageSize;
|
sqlFy+= " WHERE id BETWEEN " + (pageNum-1) * pageSize + " AND " + (pageNum) * pageSize;
|
||||||
|
sqlFy+= querySql;
|
||||||
List<SapDo> sapDos=new ArrayList<>();
|
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();
|
List<JhBd> jhBdList = entityManager.createNativeQuery(sqlFy,JhBd.class).getResultList();
|
||||||
if (jhBdList.size()>0){
|
if (jhBdList.size()>0){
|
||||||
|
/* 添加大汇总*/
|
||||||
|
JSONObject jhBdDJson = new JSONObject();
|
||||||
|
|
||||||
/*table 合并列行*/
|
/*table 合并列行*/
|
||||||
int m=0;//列
|
int m=0;//列
|
||||||
int n=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类型分组*/
|
/* 按SAP类型分组*/
|
||||||
Map<String, List<JhBd>> groupedMap = jhBdList.stream()
|
Map<String, List<JhBd>> groupedMap = jhBdList.stream()
|
||||||
.collect(Collectors.groupingBy(jhBd -> Objects.toString(jhBd.getSapName(), "unknown")));
|
.collect(Collectors.groupingBy(jhBd -> Objects.toString(jhBd.getSapName(), "unknown")));
|
||||||
/*遍历所有SAP类型*/
|
/*遍历所有SAP类型*/
|
||||||
List<String> sapKeys = panxu(groupedMap);
|
List<String> sapKeys = panxu(groupedMap);
|
||||||
for (int i = 0; i < sapKeys.size(); i++) {
|
for (int i = 0; i < sapKeys.size(); i++) {
|
||||||
|
/* 添加汇总*/
|
||||||
|
JSONObject jhBdXJson = new JSONObject();
|
||||||
|
|
||||||
String sapName=sapKeys.get(i);
|
String sapName=sapKeys.get(i);
|
||||||
List<JhBd> sapJhBdList=groupedMap.get(sapName);
|
List<JhBd> sapJhBdList=groupedMap.get(sapName);
|
||||||
/*合并第一列*/
|
|
||||||
int[] sapMn={sapJhBdList.size(),1};
|
|
||||||
/* 按库区分组*/
|
/* 按库区分组*/
|
||||||
Map<String, List<JhBd>> sapJhBdMap = sapJhBdList.stream()
|
Map<String, List<JhBd>> sapJhBdMap = sapJhBdList.stream()
|
||||||
.collect(Collectors.groupingBy(jhBd -> Objects.toString(jhBd.getAreaName(), "unknown")));
|
.collect(Collectors.groupingBy(jhBd -> Objects.toString(jhBd.getAreaName(), "unknown")));
|
||||||
/*遍历所有库区*/
|
/*遍历所有库区*/
|
||||||
List<AreaDo> areaDos=new ArrayList<>();// 返回AreaDos
|
List<AreaDo> areaDos=new ArrayList<>();// 返回AreaDos
|
||||||
|
/*按库区合并第sap 行数+合计1行*/
|
||||||
|
int[] sapMn={sapJhBdMap.size()+1,1};
|
||||||
|
int[] areaMn={1,1};
|
||||||
List<String> areaNames = panxu(sapJhBdMap);//按表的id进行排序
|
List<String> areaNames = panxu(sapJhBdMap);//按表的id进行排序
|
||||||
for (int j = 0; j < areaNames.size(); j++) {
|
for (int j = 0; j < areaNames.size(); j++) {
|
||||||
String areaName=areaNames.get(j);
|
String areaName=areaNames.get(j);
|
||||||
List<JhBd> areaJhBdList=sapJhBdMap.get(areaName);
|
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进行分组*/
|
/*按时间FormattedDate进行分组*/
|
||||||
Map<String, List<JhBd>> dateJhBdMap = areaJhBdList.stream()
|
Map<String, List<JhBd>> dateJhBdMap = areaJhBdList.stream()
|
||||||
.collect(Collectors.groupingBy(jhBd -> Objects.toString(jhBd.getFormattedDate(), "unknown")));
|
.collect(Collectors.groupingBy(jhBd -> Objects.toString(jhBd.getFormattedDate(), "unknown")));
|
||||||
/*遍历所有FormattedDate*/
|
/*遍历所有FormattedDate*/
|
||||||
List<FormattedDo> formattedDos=new ArrayList<>();// 返回FormattedDos
|
List<FormattedDo> formattedDos=new ArrayList<>();// 返回FormattedDos
|
||||||
List<String> formattedDates=panxu(dateJhBdMap);
|
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);
|
/* 转为JSONObject类型*/
|
||||||
formattedDos.add(formattedDo);
|
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);
|
||||||
}
|
}
|
||||||
/*写入库区*/
|
if (jhBdDJson.size()<1){
|
||||||
AreaDo areaDo=new AreaDo();
|
jhBdDJson.accumulate("areaName", "汇总");
|
||||||
areaDo.setAreaName(areaName);
|
/* 隐藏SAP类型列*/
|
||||||
areaDo.setFormatted(formattedDos);
|
JSONObject sapMergeData=new JSONObject();
|
||||||
areaDos.add(areaDo);
|
sapMergeData.accumulate("sapName",new int[]{0,0});
|
||||||
|
sapMergeData.accumulate("areaName",new int[]{1,2});
|
||||||
|
jhBdDJson.accumulate("mergeData",sapMergeData);
|
||||||
}
|
}
|
||||||
SapDo sapDo=new SapDo(sapName,areaDos);
|
for (int k = 0; k < formattedDates.size(); k++) {
|
||||||
sapDos.add(sapDo);
|
//日期
|
||||||
|
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);
|
||||||
}
|
}
|
||||||
System.out.println("返回数据:"+sapDos);
|
/*写入大汇总*/
|
||||||
|
if (jhBdDJson.getInt(formatted)==null){
|
||||||
|
jhBdDJson.set(formatted,taskCount);
|
||||||
|
}else {
|
||||||
|
jhBdDJson.set(formatted,Integer.valueOf(jhBdDJson.getStr(formatted))+taskCount);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
jhBdReturn.add(jhBdJson);
|
||||||
|
}
|
||||||
|
/* 添加小汇总*/
|
||||||
|
jhBdReturn.add(jhBdXJson);
|
||||||
|
}
|
||||||
|
/* 添加大汇总*/
|
||||||
|
jhBdReturn.add(jhBdDJson);
|
||||||
|
System.out.println("返回数据:"+jhBdReturn);
|
||||||
}else {
|
}else {
|
||||||
System.out.println("为查询到值");
|
System.out.println("为查询到值");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
JSONObject returnBody=new JSONObject();
|
||||||
|
returnBody.accumulate("tableList", jhBdReturn);
|
||||||
|
returnBody.accumulate("columnList", columnList);
|
||||||
// long total=counts.get(0);
|
// 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;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
@ -245,14 +340,20 @@ class JhBd implements Serializable {
|
||||||
/* 库区名称*/
|
/* 库区名称*/
|
||||||
private String areaName="";
|
private String areaName="";
|
||||||
/* 任务数量*/
|
/* 任务数量*/
|
||||||
private int taskCount;
|
private int taskCount=0;
|
||||||
/* sap类型*/
|
/* sap类型*/
|
||||||
private String sapName="";
|
private String sapName="";
|
||||||
/* 其他出库*/
|
/* 其他出库*/
|
||||||
private String btName="";
|
private String btName="";
|
||||||
private String formattedDate="";
|
private String formattedDate="";
|
||||||
|
/* 合并行,列设置*/
|
||||||
@Transient
|
@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){
|
public void setMergeData(int[] sap,int[] area){
|
||||||
int[] mn={1,1};
|
int[] mn={1,1};
|
||||||
|
|
@ -264,14 +365,16 @@ class JhBd implements Serializable {
|
||||||
map.put("formattedDate", mn);
|
map.put("formattedDate", mn);
|
||||||
this.mergeData = map;
|
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.service.Xuliehaoqingdan;
|
||||||
import com.yc.wms.until.QueryPageUtil;
|
import com.yc.wms.until.QueryPageUtil;
|
||||||
import com.yc.wms.until.Result;
|
import com.yc.wms.until.Result;
|
||||||
|
import com.yc.wms.utils.StringUtils;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
@ -31,33 +32,7 @@ public class JianHuoXiaoLvController {
|
||||||
@Autowired
|
@Autowired
|
||||||
private Xuliehaoqingdan xuliehaoqingdan;
|
private Xuliehaoqingdan xuliehaoqingdan;
|
||||||
|
|
||||||
@PostMapping("/queryList")
|
private static /* 基础sql数据查询*/
|
||||||
public Result queryList(@RequestBody String json) {
|
|
||||||
/* 返回data设置*/
|
|
||||||
QueryPageUtil query =new QueryPageUtil();
|
|
||||||
JSONObject jsonObject= JSONUtil.parseObj(json);
|
|
||||||
query.setPageSize((int)jsonObject.get("pageSize"));
|
|
||||||
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.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.getStr("库区")!=null&¶m.getStr("库区").length()>0){
|
|
||||||
querySql=querySql+" and 库区 like '%"+param.getStr("库区")+"%'";
|
|
||||||
}
|
|
||||||
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 '子任务号', "
|
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 '生成合单任务时间', "
|
+" 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.dateBill1 as '下发时间',t.OPERATE_TIME as '拣货时间',t.ARRIVAL_TIME as '清点时间',t.operator_Date as '合单时间', "
|
||||||
|
|
@ -76,6 +51,32 @@ public class JianHuoXiaoLvController {
|
||||||
+" left join LOCATION loc on loc.id=t.SRC_LOC_ID "
|
+" left join LOCATION loc on loc.id=t.SRC_LOC_ID "
|
||||||
+" left join [ZONE] z on z.id=loc.ZONE_ID "
|
+" left join [ZONE] z on z.id=loc.ZONE_ID "
|
||||||
+" where t.PLAN_QUANTITY>0 ";
|
+" where t.PLAN_QUANTITY>0 ";
|
||||||
|
@PostMapping("/queryList")
|
||||||
|
public Result queryList(@RequestBody String json) {
|
||||||
|
/* 返回data设置*/
|
||||||
|
QueryPageUtil query =new QueryPageUtil();
|
||||||
|
JSONObject jsonObject= JSONUtil.parseObj(json);
|
||||||
|
query.setPageSize((int)jsonObject.get("pageSize"));
|
||||||
|
query.setPageNum((int)jsonObject.get("pageNum"));
|
||||||
|
String querySql="";//查询条件
|
||||||
|
JSONObject param= (JSONObject)jsonObject.get("param");
|
||||||
|
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("任务号")+"%'";
|
||||||
|
}
|
||||||
|
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))+"'";
|
||||||
|
}
|
||||||
/* 当前页数据*/
|
/* 当前页数据*/
|
||||||
int pageNum = query.getPageNum();//当前页
|
int pageNum = query.getPageNum();//当前页
|
||||||
int pageSize = query.getPageSize();//条数
|
int pageSize = query.getPageSize();//条数
|
||||||
|
|
@ -97,7 +98,18 @@ public class JianHuoXiaoLvController {
|
||||||
|
|
||||||
return result;
|
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")
|
@PostMapping(value = "/download")
|
||||||
public void exportCompany(HttpServletResponse response, @RequestBody String json) throws Exception {
|
public void exportCompany(HttpServletResponse response, @RequestBody String json) throws Exception {
|
||||||
|
|
||||||
|
|
@ -137,7 +149,7 @@ class JhXl implements Serializable {
|
||||||
@Transient
|
@Transient
|
||||||
private Map<String,int[]> mergeData=new HashMap() {{
|
private Map<String,int[]> mergeData=new HashMap() {{
|
||||||
put("单据类型", new int[]{1, 1});
|
put("单据类型", new int[]{1, 1});
|
||||||
}};;
|
}};
|
||||||
|
|
||||||
public void setMergeData(int[] sap,int[] area){
|
public void setMergeData(int[] sap,int[] area){
|
||||||
int[] mn={1,1};
|
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