no message

main
暴炳林 2025-03-21 15:44:38 +08:00
parent 0fca534de3
commit c6e60d517d
22 changed files with 314 additions and 167 deletions

View File

@ -38,8 +38,8 @@
style="width: 100%;">
<el-table-column v-for="item in columns" :key="item.prop" :prop="item.prop" :label="item.label" :min-width="item.minWidth">
<el-table-column v-if="item.label===''"
prop="出库"
label="出库"
prop="拣货"
label="拣货"
width="120">
</el-table-column>
<el-table-column v-if="item.label===''"
@ -126,12 +126,12 @@ export default {
{
prop: '有效时效',
minWidth: '150px',
label: '有效时'
label: '有效时'
},
{
prop: '有效时占比',
prop: '有效时占比',
minWidth: '150px',
label: '有效时占比'
label: '有效时占比'
}
],
/*columns:[

View File

@ -7,7 +7,7 @@
<el-row :gutter="24">
<el-col :span="4">
<el-form-item label="出库类型">
<el-select v-model="param.出库类型" multiple filterable placeholder="请选择库区" style="width: 155px;">
<el-select v-model="param.出库类型" multiple filterable placeholder="请选择出库类型" style="width: 155px;">
<el-option
v-for="item in Pt"
:key="item"
@ -19,8 +19,8 @@
</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-input type="textarea" v-model="param.工单号" :rows="1"></el-input>
</el-form-item>
</el-col>
<el-col :span="4">
@ -141,9 +141,9 @@ export default {
label: '出库类型'
},
{
prop: '任务号',
prop: '工单号',
minWidth: '150px',
label: '任务号'
label: '工单号'
},
{
prop: '子任务号',
@ -156,9 +156,9 @@ export default {
label: '库区'
},
{
prop: '拣货行',
prop: '拣货行',
minWidth: '150px',
label: '拣货行'
label: '拣货行'
},
{
prop: '创建时间',
@ -243,7 +243,7 @@ export default {
total: 3,
param: {
出库类型:'',
任务:'',
工单:'',
子任务号:'',
库区:'',
创建日期:[]

View File

@ -30,7 +30,7 @@
</el-col>
<el-col :span="5">
<el-form-item label="所在库位:">
<el-form-item label="目标容器:">
<el-input type="textarea" v-model="param.lc2_code" :rows="1"></el-input>
</el-form-item>
</el-col>
@ -92,7 +92,7 @@
</el-col>
<el-col :span="4">
<el-form-item label="容器:">
<el-form-item label="容器:">
<el-input type="text" v-model="param.LP"></el-input>
</el-form-item>
</el-col>
@ -673,7 +673,7 @@ export default {
sourceType: '',
//
z_name: [],
//
//
lc2_code: '',
//
i_code: '',
@ -834,10 +834,9 @@ export default {
})
},
remoteMethod(query) {
if (query !== '') {
if(query.length>2) {
if(query.length>=2) {
console.log("远程搜索")
this.$axios.post(this.$httpUrl + '/Jianhuojiemian/kw', {
query
}).then(res => res.data)

View File

@ -67,7 +67,16 @@
</el-col>
<el-col :span="4">
<el-form-item label="工厂">
<el-input type="textarea" v-model="param.PROP_C9" :rows="1"></el-input>
<el-select v-model="param.PROP_C9" multiple filterable placeholder="请选择工厂" style="width: 100%;">
<el-option
v-for="item in GcS"
:key="item.index"
:label="item.code"
:value="item.code"
>
</el-option>
</el-select>
<!-- <el-input type="textarea" v-model="param.PROP_C9" :rows="1"></el-input>-->
</el-form-item>
</el-col>
<el-col :span="4">
@ -422,6 +431,7 @@ export default {
LP: ''
},
LOCS: [],
GcS: [],
Log: [],
checked: false,
}
@ -438,6 +448,7 @@ export default {
mounted() {
this.queryUser();
this.LOC();
this.Gc();
this.JdbcLogType();
},
methods: {
@ -475,6 +486,23 @@ export default {
this.tableloding=false;
})
},
Gc(){
//
this.$axios.post(this.$httpUrl + '/Enumerate/Gc', {
}).then(res => res.data)
.then(res => {
if (res.code == 200) {
this.GcS = res.data;
} else {
this.$message.error('获取数据失败');
}
// eslint-disable-next-line no-unused-vars
},err=>{
this.tableloding=false;
})
},
JdbcLogType(){
//LOC
this.$axios.post(this.$httpUrl + '/Enumerate/InventoryLogType', {

View File

@ -21,7 +21,7 @@
<el-col :span="4">
<el-form-item label="是否在库:" >
<el-select v-model="param.agvFlag" placeholder="请选择是否在库" >
<el-select v-model="param.agvFlag" clearable placeholder="请选择是否在库" >
<el-option
v-for="item in agvFlag"
:key="item.label"
@ -78,7 +78,7 @@
</template>
</el-table-column>
<el-table-column
label=""
label="类型"
width="100"
>
<template slot-scope="scope">

View File

@ -64,8 +64,17 @@
<el-col :span="4">
<el-form-item label="工作站:">
<el-input type="textarea" v-model="param.targetArea" :rows="1"></el-input>
<el-select v-model="param.targetArea" multiple filterable placeholder="请选择工作站" style="width: 100%;">
<el-option
v-for="item in Gz"
:key="item.index"
:label="item.code"
:value="item.code"
>
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="4">
@ -76,7 +85,7 @@
<el-col :span="4">
<el-form-item label="是否盘点:">
<el-select v-model="param.NEED_COUNT" placeholder="请选择" style="width: 100%;">
<el-select v-model="param.NEED_COUNT" clearable placeholder="请选择" style="width: 100%;">
<el-option
v-for="item in pd"
:key="item.label"
@ -105,7 +114,7 @@
<el-col :span="4">
<el-form-item label="是否差异:">
<el-select v-model="param.sfcy" placeholder="请选择" style="width: 100%;">
<el-select v-model="param.sfcy" clearable placeholder="请选择" style="width: 100%;">
<el-option
v-for="item in xy"
:key="item.label"
@ -333,7 +342,7 @@
width="100">
<template slot-scope="scope">
<div slot="reference" class="name-wrapper">
<span>{{new Date(scope.row.issued_Date).toISOString().replace('T','').substring(1,10)}}</span>
<span>{{new Date(scope.row.issued_Date).toISOString().replace('T','').substring(0,10)}}</span>
</div>
</template>
</el-table-column>
@ -342,7 +351,7 @@
width="80">
<template slot-scope="scope">
<div slot="reference" class="name-wrapper">
<span>{{new Date(scope.row.issued_Date).toISOString().replace('T','').substring(10,19)}}</span>
<span>{{new Date(scope.row.issued_Date).toISOString().replace('T','').substring(10,18)}}</span>
</div>
</template>
</el-table-column>
@ -492,6 +501,7 @@ export default {
},
Ku: [],
Gz: [],
//
pd: [
{
@ -524,6 +534,7 @@ export default {
mounted: function () {
this.queryUser();
this.KuS();
this.GzzS();
},
methods: {
@ -561,6 +572,23 @@ export default {
this.tableloding=false;
})
},
GzzS(){
this.$axios.post(this.$httpUrl + '/Enumerate/Gzz ', {
}).then(res => res.data)
.then(res => {
if (res.code == 200) {
this.Gz = res.data;
} else {
this.$message.error('获取数据失败');
}
// eslint-disable-next-line no-unused-vars
},err=>{
this.tableloding=false;
})
},
queryUser() {
//
this.$axios.post(this.$httpUrl + '/Pandianmingxi/queryPan', {

View File

@ -19,6 +19,16 @@
</el-date-picker>
</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>
</el-col>
<el-col :span="4">
<el-form-item label="组别:">
<el-input type="textarea" v-model="param.组别" :rows="1"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-button type="success" @click="find"></el-button>
<el-button type="success" @click="down"></el-button>
@ -174,7 +184,9 @@ export default {
total: 3,
//
param: {
issued_Date: []
issued_Date: [],
操作人: '',
组别: ''
},
loading: false,
checked: false,
@ -241,7 +253,7 @@ export default {
this.tableData = res.data
this.total = res.total
} else {
this.$message.error('获取数据失败');
this.$message.error(res.msg);
}
// eslint-disable-next-line no-unused-vars

View File

@ -115,7 +115,7 @@
<el-col :span="4">
<el-form-item label="是否批次号管理:">
<el-select v-model="param.Status" placeholder="请选择" style="width: 100%;">
<el-select v-model="param.sfpc" clearable placeholder="请选择" style="width: 100%;">
<el-option
v-for="item in pc"
:key="item.label"
@ -129,7 +129,7 @@
<el-col :span="4">
<el-form-item label="盘点是否锁定:">
<el-select v-model="param.sfpd" placeholder="请选择" style="width: 100%;">
<el-select v-model="param.sfpd" clearable placeholder="请选择" style="width: 100%;">
<el-option
v-for="item in pd"
:key="item.label"
@ -316,7 +316,7 @@
width="210">
<template slot-scope="scope">
<div slot="reference" class="name-wrapper">
<span>{{new Date(scope.row.STORAGE_DATE).toISOString().replace('T','')}}</span>
<span>{{ scope.row.STORAGE_DATE}}</span>
</div>
</template>
</el-table-column>
@ -417,11 +417,11 @@ export default {
//
PROP_C5: '',
//
//public String ;
//
STORAGE_DATE: [],
//
sfpc: '',
//
sfpd: '',

View File

@ -8,9 +8,9 @@ import VueRouter from "vue-router";
import router from "@/router/router";
import store from "@/store/store";
Vue.prototype.$axios=axios;
// Vue.prototype.$httpUrl='http://127.0.0.1:8083';
Vue.prototype.$httpUrl='http://127.0.0.1:8083';
//Vue.prototype.$httpUrl='http://192.68.2.88:8081';
Vue.prototype.$httpUrl='http://10.1.112.23:8083';
// Vue.prototype.$httpUrl='http://10.1.112.23:8083';
Vue.config.productionTip = false;
Vue.use(VueRouter)
Vue.use(ElementUI,{size:'small'});

View File

@ -16,7 +16,7 @@ public class Jianhuojiemian {
//拣货库区
public String[] z_name;
//所在库位
//目标容器
public String lc2_code;
//料号

View File

@ -30,7 +30,7 @@ public class Kucunrizhi {
// 容器
public String LP;
// 工厂
public String PROP_C9;
public String[] PROP_C9;
// 备注
public String DESCRIPTION;
}

View File

@ -23,7 +23,7 @@ public class Pandianming {
public String[] z_name;
//工作站
public String targetArea;
public String[] targetArea;
//盘点人员
public String w_name;

View File

@ -19,6 +19,30 @@ import java.util.Map;
public class EnumerateController {
@Autowired
private JdbcQueryExample jdbcQueryExample;
/* 工厂*/
@PostMapping("/Gc")
public Result Gc() {
String sql = " SELECT "
+" commonCode.code, "
+" commonCode.name From COMMON_CODE commonCode "
+" where commonCode.code_Type = '工厂' ";
List<Map<String, Object>> mapList = jdbcQueryExample.sqlQuery(sql);
return Result.success(mapList);
}
/* 工作站*/
@PostMapping("/Gzz")
public Result Gzz() {
String sql = " SELECT "
+" ls.code, "
+" ls.name "
+" FROM Location_Storage ls "
+" WHERE 1=1 "
+" and ls.name in ('201','202','203','204','205','206','207','208','209','210','211','212', "
+" '213','214','215','101','102','103','104','105','106','107','602','603','604','605') ";
List<Map<String, Object>> mapList = jdbcQueryExample.sqlQuery(sql);
return Result.success(mapList);
}
/* 日志类型*/
@PostMapping("/InventoryLogType")
public Result InventoryLogType() {
List<Map<String, String>> logTypes = new ArrayList<>();

View File

@ -46,70 +46,104 @@ public class GGZXiaoLvController {
startDate=sdf.format(param.getJSONArray("日期").getDate(0));
endDate=sdf.format(param.getJSONArray("日期").getDate(1));
}
/* 基础sql数据查询*/
String sql=" select Row_number() OVER(order by v.库区,v.工作站,v.业务类型 asc) as id,v.库区, "
+" v.工作站,sum(v.有效时效) '有效时效', v.业务类型 ,sum(v.有效时效)/540 '有效时间占比' ," +
" count(DISTINCT(v.任务号)) 任务数 from ( "
+" select (case when left(agv.targetArea,1)='1' then '货架到人' when left(agv.targetArea,1)='2' then '料箱到人' end) as '库区', "
+" (agv.id) ID,(agv.robotJobId) as '任务号',left(agv.targetArea,3) as '工作站',(agv.status) as '状态', "
+" (CONVERT(VARCHAR,agv.createTime , 23)) as '创建时间', "
+" (agv.arrivalTime),(agv.agvCode) as '车子',(agv.type) as '类型',(agv.classification) as '业务类型', "
+" (agv.founderName) as '创建人', "
+" (agv.jobPriorityType) as '加急', (agv.leaveTime) as '到站时间',(agv.returnTime) as '返库时间', "
+" DATEDIFF(second,(agv.leaveTime), (agv.returnTime) )/60 as '有效时效' "
+" from agvtask agv "
+" where CONVERT(VARCHAR,agv.createTime , 23)>='"+startDate+"' "
+" and CONVERT(VARCHAR,agv.createTime , 23)<='"+endDate+"' ) v "
+" GROUP BY v.库区,v.工作站 ,v.业务类型 ";
String sqlCount = "select count(t.id) as nums from (" + sql+") t";
/* 总条数*/
List<Integer> counts = entityManager.createNativeQuery(sqlCount).getResultList();
/* 当前页数据*/
int pageNum = query.getPageNum();//当前页
int pageSize = query.getPageSize();//条数
String querySql="";//查询条件
String sqlFy = "select * from( "
+ sql
+ ") t where 1=1 "
+ querySql
+" ORDER BY id "
+" OFFSET "+ (pageNum-1) * pageSize +" ROWS "
+" FETCH NEXT "+pageSize+" ROWS ONLY; ";
String sqlFy =" SELECT "
+" ROW_NUMBER() OVER (ORDER BY v.库区, v.工作站) AS id, "
+" v.库区, "
+" v.工作站, "
+" SUM(v.有效时效)/60 AS 有效时效, "
+" SUM(v.有效时效)/60/9 AS 有效时效占比, "
+" COUNT(DISTINCT CASE WHEN v.业务类型 = '入库' THEN v.任务号 END) AS 入库, "
+" COUNT(DISTINCT CASE WHEN v.业务类型 = '拣货' THEN v.任务号 END) AS 拣货, "
+" COUNT(DISTINCT CASE WHEN v.业务类型 = '料箱整理' THEN v.任务号 END) AS 整理, "
+" COUNT(DISTINCT CASE WHEN v.业务类型 = '盘点' THEN v.任务号 END) AS 盘点 "
+" FROM "
+" ( "
+" SELECT "
+" (CASE WHEN LEFT(agv.targetArea, 1) = '1' THEN '货架到人' WHEN LEFT(agv.targetArea, 1) = '2' THEN '料箱到人' END) AS '库区', "
+" (agv.id) ID, "
+" (agv.robotJobId) AS '任务号', "
+" LEFT(agv.targetArea, 3) AS '工作站', "
+" (agv.status) AS '状态', "
+" (CONVERT(VARCHAR, agv.createTime, 23)) AS '创建时间', "
+" (agv.arrivalTime), "
+" (agv.agvCode) AS '车子', "
+" (agv.type) AS '类型', "
+" (agv.classification) AS '业务类型', "
+" (agv.founderName) AS '创建人', "
+" (agv.jobPriorityType) AS '加急', "
+" (agv.leaveTime) AS '到站时间', "
+" (agv.returnTime) AS '返库时间', "
+" agv.arrivalTime AS '更新时间', "
+" CASE "
+" WHEN agv.classification IN ('拣货', '料箱整理') THEN ISNULL(DATEDIFF(SECOND, (agv.leaveTime), (agv.returnTime)), 0) "
+" WHEN agv.classification = '盘点' AND agv.type = '货架返库' THEN ISNULL(DATEDIFF(SECOND, (agv.leaveTime), (agv.arrivalTime)), 0) "
+" WHEN agv.classification = '入库' THEN (CASE WHEN agv.classification = '入库' THEN 1 ELSE 0 END) * 10 "
+" ELSE 0 "
+" END AS '有效时效', "
+" (CASE WHEN agv.classification = '入库' THEN 1 ELSE 0 END) AS '料箱入库任务数' "
+" FROM "
+" agvtask agv "
+" WHERE "
+" CONVERT(VARCHAR, agv.createTime, 23) >= '2025-01-01' "
+" AND CONVERT(VARCHAR, agv.createTime, 23) <= '2025-03-20' "
+" AND agv.classification IN ('入库', '拣货', '料箱整理', '盘点') "
+" ) v "
+" GROUP BY "
+" v.库区, "
+" v.工作站; ";
/* 返回数据*/
List<GGZXl> returnList=new ArrayList<>();
/* 查询所有数据*/
List<GGZXl> ggzXlList = entityManager.createNativeQuery(sqlFy, GGZXl.class).getResultList();
/* 按SAP类型分组*/
/* 按库区类型分组*/
Map<String, List<GGZXl>> groupedMap = ggzXlList.stream()
.collect(Collectors.groupingBy(ggzXl -> Objects.toString(ggzXl.get(), "unknown")));
GGZXl dhz=new GGZXl();
dhz.set("大汇总");
/*排序获取建*/
List<String> sapKeys = panxu(groupedMap);
for (int i = 0; i < sapKeys.size(); i++) {
List<GGZXl> ggzXls=groupedMap.get(sapKeys.get(i));
/* 按库区分组后,按工作站分组*/
GGZXl gz=ggzXls.get(0);
int l=1;//合并列
GGZXl xhz=new GGZXl();
xhz.set("库区汇总");
for (GGZXl ggzXl:ggzXls){
l=l+1;
xhz.set(xhz.get()+ggzXl.get());
xhz.set(xhz.get()+ggzXl.get());
xhz.set(xhz.get()+ggzXl.get());
xhz.set(xhz.get()+ggzXl.get());
xhz.set(xhz.get()+ggzXl.get());
xhz.set(xhz.get()+ggzXl.get());
}
Map<String,int[]> map=new HashMap<>();
map.put("库区", new int[]{l, 1});
gz.setMergeData(map);
returnList.addAll(ggzXls);
GGZXl xhz=new GGZXl();
xhz.set("汇总");
/* 添加汇总*/
returnList.add(xhz);
dhz.set(dhz.get()+xhz.get());
dhz.set(dhz.get()+xhz.get());
dhz.set(dhz.get()+xhz.get());
dhz.set(dhz.get()+xhz.get());
dhz.set(dhz.get()+xhz.get());
dhz.set(dhz.get()+xhz.get());
}
GGZXl dhz=new GGZXl();
dhz.set("汇总");
dhz.setMergeData(new HashMap() {{
put("库区", new int[]{1, 2});
put("库区", new int[]{1, 1});
}});
returnList.add(dhz);
Result result=Result.result(200,"操作成功",Long.parseLong(counts.get(0).toString()), returnList);
Result result=Result.result(200,"操作成功",Long.parseLong(returnList.size()+""), returnList);
return result;
}
@ -169,21 +203,13 @@ class GGZXl implements Serializable {
/* 库区名称*/
private String ="";
private String ="";
@NotNull
@Transient
private Integer =0;
@NotNull
@Transient
private Integer =0;
@NotNull
@Transient
private Integer =0;
@NotNull
@Transient
private Integer =0;
private Integer =0;
private Integer ;
private Integer ;
private Integer =0;
private Integer =0;
private Integer =0;
private Integer =0;
private Integer =0;
@Transient
private Map<String,int[]> mergeData=new HashMap() {{
put("库区", new int[]{0, 0});

View File

@ -75,7 +75,7 @@ public class JianHuoBiaoDanController {
+" 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();
/* 当前页数据*/
int pageNum = query.getPageNum();//当前页
int pageSize = query.getPageSize();//条数
@ -219,7 +219,7 @@ public class JianHuoBiaoDanController {
returnBody.accumulate("tableList", jhBdReturn);
returnBody.accumulate("columnList", columnList);
// long total=counts.get(0);
Result result=Result.result(200,"操作成功",Long.parseLong(counts.get(0).toString()), returnBody);
Result result=Result.result(200,"操作成功",Long.parseLong(columnList.size()+""), returnBody);
return result;
}

View File

@ -44,72 +44,93 @@ public class JianHuoXiaoLvController {
@Autowired
private QueryUtil queryUtil;
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 '拣货行' , "
+ " CONVERT(VARCHAR(19), pt.UPDATE_TIME, 20) as '创建时间', "
+ " CONVERT(VARCHAR(19), t.dateBill3, 20) as '生成合单任务时间', "
+ " CONVERT(VARCHAR(19), t.dateBill1, 20) as '下发时间', "
+ " CONVERT(VARCHAR(19), t.OPERATE_TIME, 20) as '拣货时间', "
+ " CONVERT(VARCHAR(19), t.ARRIVAL_TIME, 20) as '清点时间', "
+ " CONVERT(VARCHAR(19), t.operator_Date, 20) as '合单时间', "
+ " CONVERT(VARCHAR(19), t.dateline, 20) 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 ";
String querySql = "";
public static String buildSql() {
StringBuilder sql = new StringBuilder();
sql.append(" SELECT "
+" t.BILLCODE AS '子任务号', "
+" MIN(bt.NAME) AS '单据类型', "
+" MIN(pt.sourceType) AS '出库类型', "
+" MIN(pt.code) AS '工单号', "
+" MIN(z.NAME) AS '库区', "
+" COUNT(*) AS '拣货行数', "
+" CONVERT(VARCHAR(19), MIN(pt.UPDATE_TIME), 20) AS '创建时间', "
+" CONVERT(VARCHAR(19), MIN(t.dateBill3), 20) AS '生成合单任务时间', "
+" CONVERT(VARCHAR(19), MIN(t.dateBill1), 20) AS '下发时间', "
+" CONVERT(VARCHAR(19), MIN(t.OPERATE_TIME), 20) AS '拣货时间', "
+" CONVERT(VARCHAR(19), MIN(t.ARRIVAL_TIME), 20) AS '清点时间', "
+" CONVERT(VARCHAR(19), MIN(t.operator_Date), 20) AS '合单时间', "
+" CONVERT(VARCHAR(19), MIN(t.dateline), 20) AS '交单时间', "
+" DATEDIFF(SECOND, MIN(pt.UPDATE_TIME), MIN(t.dateBill1)) / 60 AS '创建 - 下发时间', "
+" DATEDIFF(SECOND, MIN(t.dateBill1), MIN(t.OPERATE_TIME)) / 60 AS '下发 - 拣货时间', "
+" DATEDIFF(SECOND, MIN(t.OPERATE_TIME), MIN(t.operator_Date)) / 60 AS '拣货 - 合单时间', "
+" DATEDIFF(SECOND, MIN(t.operator_Date), MIN(t.dateline)) / 60 AS '合单 - 交单时间', "
+" DATEDIFF(SECOND, MIN(t.OPERATE_TIME), MIN(t.ARRIVAL_TIME)) / 60 AS '拣货 - 清点时间', "
+" DATEDIFF(SECOND, MIN(t.ARRIVAL_TIME), MIN(t.operator_Date)) / 60 AS '清点 - 合单时间', "
+" DATEDIFF(SECOND, MIN(t.OPERATE_TIME), MIN(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 "
+" AND t.PICK_TICKET_DETAIL_ID IS NOT NULL ");
sql.append(querySql); // 动态条件
sql.append(" GROUP BY "
+" t.BILLCODE ");
return sql.toString();
}
@PostMapping("/queryList")
public Result queryList(@RequestBody String json) {
querySql="";
/* 返回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))+")";
querySql=querySql+" and pt.sourceType in ("+ StringUtils.strInSql(JSONUtil.toList(param.getJSONArray("出库类型"), String.class))+")";
}
if (param.getStr("任务号")!=null&&param.getStr("任务号").length()>0){
querySql=querySql+" and 任务号 like '%"+param.getStr("任务号")+"%'";
if (param.getStr("工单号")!=null&&param.getStr("工单号").length()>0){
querySql=querySql+" and pt.code like '%"+param.getStr("工单号")+"%'";
}
if (param.getStr("子任务号")!=null&&param.getStr("子任务号").length()>0){
querySql=querySql+" and 子任务号 like '%"+param.getStr("子任务号")+"%'";
querySql=querySql+" and t.BILLCODE like '%"+param.getStr("子任务号")+"%'";
}
if (param.getJSONArray("库区")!=null&&param.getJSONArray("库区").size()>0){
querySql=querySql+" and 库区 in ("+ StringUtils.strInSql(JSONUtil.toList(param.getJSONArray("库区"), String.class))+")";
querySql=querySql+" and z.NAME in ("+ StringUtils.strInSql(JSONUtil.toList(param.getJSONArray("库区"), String.class))+")";
}
if (param.getStr("创建日期")!=null&&param.getJSONArray("创建日期").size()>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))+"'";
querySql=querySql+" and pt.UPDATE_TIME >= '"+sdf.format(param.getJSONArray("创建日期").getDate(0))+"'";
querySql=querySql+" and pt.UPDATE_TIME <= '"+sdf.format(param.getJSONArray("创建日期").getDate(1))+"'";
}
/* 当前页数据*/
int pageNum = query.getPageNum();//当前页
int pageSize = query.getPageSize();//查询条数
String sqlFa = "select * from( "
+ sql
+ buildSql()
+ ") t where 1=1 "
+ querySql ;
;
/* 总条数*/
String sqlCount = "select count(t.id) as nums from (" + sqlFa+") t";
String sqlCount = "select count(t.子任务号 ) as nums from (" + sqlFa+") t";
List<Integer> counts = entityManager.createNativeQuery(sqlCount).getResultList();
/* 返回数据集合*/
List<Map<String,Object>> maps;
if (pageSize>100000){
maps = queryUtil.multiThreadedQuery(sqlFa, pageSize, pageNum);
}else {
String sqlFy= sqlFa+" ORDER BY id "
String sqlFy= sqlFa+" ORDER BY 子任务号 "
+" OFFSET "+ (pageNum-1) * pageSize +" ROWS "
+" FETCH NEXT "+pageSize+" ROWS ONLY ";
maps = jdbcTemplate.queryForList(sqlFy, new HashMap<>());
@ -128,7 +149,7 @@ public class JianHuoXiaoLvController {
@PostMapping("/inputPt")
public Result inputPt(@RequestBody String json) {
String sqlInput=" select 出库类型 as 'name' from ( "
+sql
+buildSql()
+" ) t "
+" WHERE 出库类型 is not null group by 出库类型 ";
List<String> ptList = entityManager.createNativeQuery(sqlInput).getResultList();
@ -147,10 +168,10 @@ public class JianHuoXiaoLvController {
Map<String, Object> map = new LinkedHashMap<>();
map.put("单据类型", company.get("单据类型"));
map.put("出库类型", company.get("出库类型"));
map.put("任务号", company.get("任务号"));
map.put("工单号", company.get("工单号"));
map.put("子任务号", company.get("子任务号"));
map.put("库区", company.get("库区"));
map.put("拣货行", company.get("拣货行"));
map.put("拣货行", company.get("拣货行"));
map.put("创建时间", company.get("创建时间"));
map.put("生成合单任务时间", company.get("生成合单任务时间"));
map.put("下发时间", company.get("下发时间"));
@ -179,10 +200,10 @@ class JhXl implements Serializable {
/* 库区名称*/
private String ="";
private String ="";
private String ="";
private String ="";
private String ="";
private String ="";
private Integer =0;
private Integer =0;
private Date ;
private Date ;
private Date ;

View File

@ -42,6 +42,13 @@ public class RenXiaoController {
query.setPageNum((int)jsonObject.get("pageNum"));
JSONObject param= (JSONObject)jsonObject.get("param");
JSONArray jsonArray=param.getJSONArray("issued_Date");
if (jsonArray.size()==0){
Result result=Result.result(400,"请选择日期范围",Long.parseLong("0"), null);
return result;
}
String operator=param.getStr("操作人");
String describe=param.getStr("组别");
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String startDate="";
String endDate="";
@ -55,6 +62,14 @@ public class RenXiaoController {
Date date = new Date();
endDate=sdf.format(date);
}
String querySql="";//查询条件
if (operator!=null&&operator.length()>0){
querySql=" and t.操作人 like '%"+operator+"%'";
}
if (describe!=null&&describe.length()>0){
querySql=" and t.组别 like '%"+describe+"%'";
}
/* 基础sql数据查询*/
String sql=" select Row_number() OVER(order by v.操作人 asc) as id,max(v.组别) '组别',max(v.账号) '账号',v.操作人,sum(v.整理 ) '整理',sum(v.拣货 ) as '拣货',sum(v.清点 ) as '清点',sum(v.合单 ) as '合单', "
+" sum(v.交单 ) as '交单',sum(v.盘点) as '盘点',sum(v.入库) as '入库',sum(v.移库) as '移库' from ( "
@ -116,7 +131,6 @@ public class RenXiaoController {
/* 当前页数据*/
int pageNum = query.getPageNum();//当前页
int pageSize = query.getPageSize();//条数
String querySql="";//查询条件
String sqlFy = "select * from( "
+ sql

View File

@ -109,7 +109,7 @@ public class JianhuojiemianImpl implements Jianhuojiemian {
sql+=" and z.NAME in ("+sb.toString()+")";;
}
//所在库位
//目标容器
if(jianhuojiemian.lc2_code!=null){
if(!jianhuojiemian.lc2_code.trim().equals("")){
String[] str=jianhuojiemian.lc2_code.trim().split("\n");
@ -192,7 +192,7 @@ public class JianhuojiemianImpl implements Jianhuojiemian {
//容器码
if(jianhuojiemian.LP!=null){
if(!jianhuojiemian.LP.trim().equals("")){
sql+=" and wd.CODE="+"'"+jianhuojiemian.LP.trim()+"'";
sql+=" and st.LP="+"'"+jianhuojiemian.LP.trim()+"'";
}
}
@ -298,7 +298,7 @@ public class JianhuojiemianImpl implements Jianhuojiemian {
@Override
public Result Kw(String w) {
String sql="select distinct CODE from LOCATION where CODE like "+"'%"+w+"%'";
String sql="select TOP 20 CODE from LOCATION where CODE like "+"'%"+w+"%'";
List<Map<String,Object>> list=jdbcTemplate.queryForList(sql,new HashMap<>());
return Result.success(list);
}

View File

@ -91,23 +91,19 @@ public class KucunrizhiImpl implements Kucunrizhi {
sql+=" and log.DESCRIPTION in ("+sb.toString()+")";
}
}
//工厂
if(kucunrizhi.PROP_C9!=null){
if(!kucunrizhi.PROP_C9.trim().equals("")){
String[] str=kucunrizhi.PROP_C9.trim().split("\n");
if(kucunrizhi.PROP_C9!=null&& kucunrizhi.PROP_C9.length>0){
StringBuffer sb = new StringBuffer();
for (int i=0;i<str.length;i++){
if(str.length-1==i){
sb.append("'"+ str[i]+"'");
for (int i = 0; i< kucunrizhi.PROP_C9.length; i++){
if(kucunrizhi.PROP_C9.length-1==i){
sb.append("'"+ kucunrizhi.PROP_C9[i]+"'");
}else {
sb.append("'"+ str[i]+"'"+",");
sb.append("'"+ kucunrizhi.PROP_C9[i]+"'"+",");
}
}
sql+=" and ik.PROP_C9 in ("+sb.toString()+")";
sql+=" and ik.PROP_C9 in ("+sb.toString()+")";;
}
}
//日志类型
if(kucunrizhi.LOG_TYPE!=null&& kucunrizhi.LOG_TYPE.length>0){
StringBuffer sb = new StringBuffer();

View File

@ -130,20 +130,17 @@ public class PandianmingxiImpl implements Pandianmingxi {
}
//工作站
if(pandianming.targetArea!=null){
if(!pandianming.targetArea.trim().equals("")){
String[] str=pandianming.targetArea.trim().split("\n");
StringBuffer sb = new StringBuffer();
for (int i=0;i<str.length;i++){
if(pandianming.targetArea!=null&& pandianming.targetArea.length>0){
if(str.length-1==i){
sb.append("'"+ str[i]+"'");
StringBuffer sb = new StringBuffer();
for (int i = 0; i< pandianming.targetArea.length; i++){
if(pandianming.targetArea.length-1==i){
sb.append("'"+ pandianming.targetArea[i]+"'");
}else {
sb.append("'"+ str[i]+"'"+",");
sb.append("'"+ pandianming.targetArea[i]+"'"+",");
}
}
sql+=" and cr.targetArea in ("+sb.toString()+")";
}
sql+=" and cr.targetArea in ("+sb.toString()+")";;
}
//盘点人员

View File

@ -32,7 +32,7 @@ public class XuliehaoqingdanImpl implements Xuliehaoqingdan {
String sql="select Row_number() OVER(ORDER BY inv.id) as Row_Num, inv.id,lc.CODE lc_code,i.CODE i_code,inv.BAR_CODE ,i.NAME i_name,i.UNIT ,\n" +
"inv.STATUS ,inv.QUANTITY ,inv.QUEUED_QUANTITY ,\n" +
"ik.PROP_C1 ,ik.PROP_C2 ,ik.PROP_C3 ,ik.PROP_C5 ,ik.PROP_C9 ,ik.PROP_D2 ,\n" +
"z.NAME z_name,inv.STORAGE_DATE ,case when inv.coun_Plan is null then '否' else '是' end as sfpd\n" +
"z.NAME z_name,CONVERT(VARCHAR(10), inv.STORAGE_DATE, 23) AS STORAGE_DATE ,case when inv.coun_Plan is null then '否' else '是' end as sfpd\n" +
" from INVENTORY inv\n" +
" left join ITEM_KEY ik on ik.id=inv.ITEM_KEY_ID\n" +
" left join item i on i.id=ik.ITEM_ID\n" +
@ -91,7 +91,7 @@ public class XuliehaoqingdanImpl implements Xuliehaoqingdan {
sb.append("'"+ str[i]+"'"+",");
}
}
sql+=" and i_code in ("+sb.toString()+")";
sql+=" and i.CODE in ("+sb.toString()+")";
}
}
@ -130,7 +130,7 @@ public class XuliehaoqingdanImpl implements Xuliehaoqingdan {
sb.append("'"+ xuliehao.STATUS[i]+"'"+",");
}
}
sql+=" and z.NAME in ("+sb.toString()+")";;
sql+=" and inv.STATUS in ("+sb.toString()+")";;
}
//库区
@ -151,9 +151,9 @@ public class XuliehaoqingdanImpl implements Xuliehaoqingdan {
StringBuffer sb = new StringBuffer();
for (int i = 0; i< xuliehao.PROP_C2.length; i++){
if(xuliehao.PROP_C2.length-1==i){
sb.append("'"+ xuliehao.z_name[i]+"'");
sb.append("'"+ xuliehao.PROP_C2[i]+"'");
}else {
sb.append("'"+ xuliehao.z_name[i]+"'"+",");
sb.append("'"+ xuliehao.PROP_C2[i]+"'"+",");
}
}
sql+=" and ik.PROP_C2 in ("+sb.toString()+")";;
@ -171,9 +171,9 @@ public class XuliehaoqingdanImpl implements Xuliehaoqingdan {
StringBuffer sb = new StringBuffer();
for (int i = 0; i< xuliehao.PROP_C9.length; i++){
if(xuliehao.PROP_C9.length-1==i){
sb.append("'"+ xuliehao.z_name[i]+"'");
sb.append("'"+ xuliehao.PROP_C9[i]+"'");
}else {
sb.append("'"+ xuliehao.z_name[i]+"'"+",");
sb.append("'"+ xuliehao.PROP_C9[i]+"'"+",");
}
}
sql+=" and ik.PROP_C9 in ("+sb.toString()+")";;
@ -198,7 +198,7 @@ public class XuliehaoqingdanImpl implements Xuliehaoqingdan {
//是否盘点
if(xuliehao.sfpd!=null&& !xuliehao.sfpd.equals("")){
if (Integer.parseInt(xuliehao.sfpd)==1) {
if (Integer.parseInt(xuliehao.sfpd)==0) {
sql+=" and inv.coun_Plan is null";
}else {
sql+=" and inv.coun_Plan is not null";
@ -208,7 +208,7 @@ public class XuliehaoqingdanImpl implements Xuliehaoqingdan {
//是否批次号管理
if(xuliehao.sfpc!=null&& !xuliehao.sfpc.equals("")){
if (Integer.parseInt(xuliehao.sfpc)==1) {
if (Integer.parseInt(xuliehao.sfpc)==0) {
sql+=" and ik.PROP_C1 is null";
}else {
sql+=" and ik.PROP_C1 is not null";

View File

@ -21,7 +21,9 @@ public class JdbcQueryExample {
public List<Map<String, Object>> sqlQuery(String sql, Object... params) {
return jdbcTemplate.queryForList(sql, params);
}
public List<Map<String, Object>> sqlQuery(String sql) {
return jdbcTemplate.queryForList(sql);
}
public int executeUpdate(String sql, Object... params) {
return jdbcTemplate.update(sql, params);
}