no message

main
暴炳林 2025-01-13 10:38:53 +08:00
parent 84fa3cdc01
commit 889db214d8
6 changed files with 994 additions and 3 deletions

View File

@ -0,0 +1,494 @@
<template>
<div class="div1">
<div class="div2" style="padding-bottom: 10px">
<el-form ref="form" :model="param" label-width="80px">
<el-row>
<el-col :span="1">
<el-form-item label="波次号:">
<el-input type="textarea" v-model="param.wdCode" :rows="1" style="width: 280px;"></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>
<el-button type="success" @click="rest"></el-button>&nbsp;&nbsp;
</el-form>
</div>
<div class="table-title">命中率</div>
<el-table
v-loading="this.tableloding"
:data="rqMzList"
id="educe-table"
ref="tableData"
border
style="width: 100%;">
<el-table-column prop="workstation" label="工作站" width="180"></el-table-column>
<el-table-column prop="g201.mz" label="201" width="50"></el-table-column>
<el-table-column prop="g202.mz" label="202" width="50"></el-table-column>
<el-table-column prop="g203.mz" label="203" width="50"></el-table-column>
<el-table-column prop="g204.mz" label="204" width="50"></el-table-column>
<el-table-column prop="g205.mz" label="205" width="50"></el-table-column>
<el-table-column prop="g206.mz" label="206" width="50"></el-table-column>
<el-table-column prop="g207.mz" label="207" width="50"></el-table-column>
<el-table-column prop="g208.mz" label="208" width="50"></el-table-column>
<el-table-column prop="g209.mz" label="209" width="50"></el-table-column>
<el-table-column prop="g210.mz" label="210" width="50"></el-table-column>
<el-table-column prop="g211.mz" label="211" width="50"></el-table-column>
<el-table-column prop="g212.mz" label="212" width="50"></el-table-column>
<el-table-column prop="g213.mz" label="213" width="50"></el-table-column>
<el-table-column prop="g214.mz" label="214" width="50"></el-table-column>
<el-table-column prop="g215.mz" label="215" width="50"></el-table-column>
<el-table-column prop="total.mz" label="平均值" width="60"></el-table-column>
</el-table>
<div class="table-title">箱子流通数</div>
<el-table
v-loading="this.tableloding"
:data="rqLtList"
id="educe-table"
ref="tableData"
border
style="width: 100%;">
<el-table-column prop="workstation" label="工作站" width="180"></el-table-column>
<el-table-column prop="g201" label="201" width="50"></el-table-column>
<el-table-column prop="g202" label="202" width="50"></el-table-column>
<el-table-column prop="g203" label="203" width="50"></el-table-column>
<el-table-column prop="g204" label="204" width="50"></el-table-column>
<el-table-column prop="g205" label="205" width="50"></el-table-column>
<el-table-column prop="g206" label="206" width="50"></el-table-column>
<el-table-column prop="g207" label="207" width="50"></el-table-column>
<el-table-column prop="g208" label="208" width="50"></el-table-column>
<el-table-column prop="g209" label="209" width="50"></el-table-column>
<el-table-column prop="g210" label="210" width="50"></el-table-column>
<el-table-column prop="g211" label="211" width="50"></el-table-column>
<el-table-column prop="g212" label="212" width="50"></el-table-column>
<el-table-column prop="g213" label="213" width="50"></el-table-column>
<el-table-column prop="g214" label="214" width="50"></el-table-column>
<el-table-column prop="g215" label="215" width="50"></el-table-column>
<el-table-column prop="total" label="汇总" width="60"></el-table-column>
</el-table>
<div class="table-title" v-if="false">
<el-table
v-loading="this.tableloding"
:height="MaxHeight"
:header-cell-style="{background:'#000',color:'#fff'}"
:data="tableData"
id="educe-table"
ref="tableData"
border
style="width: 100%;">
<el-table-column
fixed
label="容器"
v-if="true"
width="180">
<template slot-scope="scope">
<span style="margin-left: 10px">{{ scope.row.rqh }}</span>
</template>
</el-table-column>
<el-table-column
fixed
label="201"
v-if="true"
width="50">
<template slot-scope="scope">
<span style="margin-left: 10px">{{ scope.row.g201 }}</span>
</template>
</el-table-column>
<el-table-column
fixed
label="202"
v-if="true"
width="50">
<template slot-scope="scope">
<span style="margin-left: 10px">{{ scope.row.g202 }}</span>
</template>
</el-table-column>
<el-table-column
fixed
label="203"
v-if="true"
width="50">
<template slot-scope="scope">
<span style="margin-left: 10px">{{ scope.row.g203 }}</span>
</template>
</el-table-column>
<el-table-column
fixed
label="204"
v-if="true"
width="50">
<template slot-scope="scope">
<span style="margin-left: 10px">{{ scope.row.g204 }}</span>
</template>
</el-table-column>
<el-table-column
fixed
label="205"
v-if="true"
width="50">
<template slot-scope="scope">
<span style="margin-left: 10px">{{ scope.row.g205 }}</span>
</template>
</el-table-column>
<el-table-column
fixed
label="206"
v-if="true"
width="50">
<template slot-scope="scope">
<span style="margin-left: 10px">{{ scope.row.g206 }}</span>
</template>
</el-table-column>
<el-table-column
fixed
label="207"
v-if="true"
width="50">
<template slot-scope="scope">
<span style="margin-left: 10px">{{ scope.row.g207 }}</span>
</template>
</el-table-column>
<el-table-column
fixed
label="208"
v-if="true"
width="50">
<template slot-scope="scope">
<span style="margin-left: 10px">{{ scope.row.g208 }}</span>
</template>
</el-table-column>
<el-table-column
fixed
label="209"
v-if="true"
width="50">
<template slot-scope="scope">
<span style="margin-left: 10px">{{ scope.row.g209 }}</span>
</template>
</el-table-column>
<el-table-column
fixed
label="210"
v-if="true"
width="50">
<template slot-scope="scope">
<span style="margin-left: 10px">{{ scope.row.g210 }}</span>
</template>
</el-table-column>
<el-table-column
fixed
label="211"
v-if="true"
width="50">
<template slot-scope="scope">
<span style="margin-left: 10px">{{ scope.row.g211 }}</span>
</template>
</el-table-column>
<el-table-column
fixed
label="212"
v-if="true"
width="50">
<template slot-scope="scope">
<span style="margin-left: 10px">{{ scope.row.g212 }}</span>
</template>
</el-table-column>
<el-table-column
fixed
label="213"
v-if="true"
width="50">
<template slot-scope="scope">
<span style="margin-left: 10px">{{ scope.row.g213 }}</span>
</template>
</el-table-column>
<el-table-column
fixed
label="214"
v-if="true"
width="50">
<template slot-scope="scope">
<span style="margin-left: 10px">{{ scope.row.g214 }}</span>
</template>
</el-table-column>
<el-table-column
fixed
label="215"
v-if="true"
width="50">
<template slot-scope="scope">
<span style="margin-left: 10px">{{ scope.row.g215 }}</span>
</template>
</el-table-column>
</el-table>
<el-pagination
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="pageNum"
:page-sizes="[ 50, 100, 200,500]"
:page-size="pageSize"
layout="total, sizes, prev, pager, next, jumper"
:total="total">
</el-pagination>
</div>
</div>
</template>
<script>
import FileSaver from 'file-saver'
// eslint-disable-next-line no-unused-vars
import XLSX from 'xlsx'
export default {
data() {
return {
rqLtList: [],
rqMzList: [],
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]);
}
}]
},
tableloding: false,
isShow:false,//
tableData: [],
pageSize: 50,
spanArr: [], //
pos: 0, //
pageNum: 1,
total: 3,
//
param: {
wdCode: ''
},
loading: false,
checked: false,
}
},
computed:{
existingLogicTotal() {
return this.existingLogic.reduce((total, num) => total + num, 0);
},
headLogicTotal() {
return this.headLogic.reduce((total, num) => total + num, 0);
},
MaxHeight(){
return window.innerHeight - 240 +"px";
}
},
mounted: function () {
this.queryUser();
},
updated() {
// Table
this.$nextTick(() => {
if (this.$refs.mutipleTable !== undefined) {
this.$refs.mutipleTable.doLayout()
}
})
},
methods: {
//
cellStyle({ row, column }) {
// >1
if (row['mergeData'][column.property] && row['mergeData'][column.property][1] && row['mergeData'][column.property][1] > 1) {
return { 'text-align': 'left' }
} else {
return {}
}
},
objectSpanMethod({ row, column }) {
//
return row['mergeData'][column.property]
},
handleEdit(index, row) {
console.log(index, row);
},
handleDelete(index, row) {
console.log(index, row);
},
handleSizeChange(val) {
console.log(`每页 ${val}`);
this.pageNum = 1;
this.pageSize = val;
this.queryUser();
},
handleCurrentChange(val) {
console.log(`当前页: ${val}`);
this.pageNum = val;
this.queryUser();
},
queryUser() {
//
this.$axios.post(this.$httpUrl + '/RongQi/queryList', {
pageSize: this.pageSize,
pageNum: this.pageNum,
param: this.param,
}).then(res => res.data)
.then(res => {
if (res.code == 200) {
this.tableData = res.data.rqList
this.total = this.tableData.length
this.pageSize=this.tableData.length
this.rqLtList=res.data.rqLtList
this.rqMzList=res.data.rqMzList
console.log(this.rqMzList)
/*const rqLtMap=res.data.rqLtMap
/!* 获取新逻辑数据*!/
const rqLtMapNew=rqLtMap.NEW
/!* 添加汇总*!/
rqLtMapNew.push(rqLtMapNew.reduce((acc, current) => acc + current, 0));
/!* 添加表头*!/
rqLtMapNew.unshift("头物料+容器逻辑");
const propertyKeys = ['workstation', '201', '202', '203', '204', '205', '206', '207', '208', '209', '210', '211', 'total'];
const newObj = {};
for (let i = 0; i < propertyKeys.length; i++) {
newObj[propertyKeys[i]] = rqLtMapNew[i];
}
this.rqLtList[1]=newObj;
/!* 获取旧逻辑数据*!/
const rqLtMapOLD=rqLtMap.OLD
/!* 添加汇总*!/
rqLtMapOLD.push(rqLtMapOLD.reduce((acc, current) => acc + current, 0));
/!* 添加表头*!/
rqLtMapOLD.unshift("现有逻辑");
const oldObj = {};
for (let i = 0; i < propertyKeys.length; i++) {
oldObj[propertyKeys[i]] = rqLtMapOLD[i];
}
this.rqLtList[0]=oldObj;
console.log(this.rqLtList)*/
} else {
this.$message.error('获取数据失败');
}
// eslint-disable-next-line no-unused-vars
},err=>{
this.tableloding=false;
})
},
find(){
this.pageNum=1;
this.queryUser();
},
down(){
this.exportToExcel();
},
// excelExcel
exportToExcel(){
/*const worksheet = XLSX.utils.json_to_sheet(this.tableData);
const workbook = XLSX.utils.book_new();
XLSX.utils.book_append_sheet(workbook, worksheet, 'Sheet1');
XLSX.writeFile(workbook, 'table_data.xlsx');*/
const XLSX = require('xlsx')
console.log('XLSX',XLSX,FileSaver)
// 使 this.$nextTick dom
this.$nextTick(function () {
// false true:
const xlsxParam = { raw: true }
const wb = XLSX.utils.table_to_book(document.querySelector('#educe-table'), xlsxParam)
// excel
let fileName = '容器流通' + new Date().getTime() + '.xlsx'
const wbout = XLSX.write(wb, { bookType: 'xlsx', bookSST: true, type: 'array' })
try {
//
FileSaver.saveAs(new Blob([wbout], { type: 'application/octet-stream' }), fileName)
} catch (e) {
if (typeof console !== 'undefined') {
console.log(e, wbout)
}
}
return wbout
})
},
parseTime(time, cFormat) {
//
if (arguments.length === 0) {
return null
}
const format = cFormat || '{y}-{m}-{d} {h}:{i}:{s}'
let date
if (typeof time === 'undefined' || time === null || time === 'null') {
return ''
} else if (typeof time === 'object') {
date = time
} else {
if ((typeof time === 'string') && (/^[0-9]+$/.test(time))) {
time = parseInt(time)
}
if ((typeof time === 'number') && (time.toString().length === 10)) {
time = time * 1000
}
date = new Date(time)
}
const formatObj = {
y: date.getFullYear(),
m: date.getMonth() + 1,
d: date.getDate(),
h: date.getHours(),
i: date.getMinutes(),
s: date.getSeconds(),
a: date.getDay()
}
const time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => {
let value = formatObj[key]
// Note: getDay() returns 0 on Sunday
if (key === 'a') { return ['日', '一', '二', '三', '四', '五', '六'][value ] }
if (result.length > 0 && value < 10) {
value = '0' + value
}
return value || 0
})
return time_str
},
Allquesr(){
//
if(this.checked){
this.isShow=true;
}else {
this.isShow=false;
}
},
rest() {
//
this.checked=false;
this.isShow=false;
this.param={};
}
}
}
</script>
<style scoped>
</style>

View File

@ -128,7 +128,14 @@ const routes=[
},
component: () => import('@/components/duochaxun/Xuliehao.vue')
},
{
path:'/RongQi',
name:'RongQi',
meta:{
title:'容器流通'
},
component: () => import('@/components/duochaxun/RongQi.vue')
}
]
}
]

View File

@ -0,0 +1,24 @@
package com.yc.wms.controller;
import lombok.Data;
import javax.persistence.Entity;
import javax.persistence.Id;
import java.io.Serializable;
@Data
@Entity
public class RQTaskModel implements Serializable{
@Id
private Long id;
private int ts;
// 料号
private String liaohao;
// 工作站
private String gzz;
// 容器
private String rqh;
// 物料
private String zrwh;
private String agvId;
}

View File

@ -0,0 +1,462 @@
package com.yc.wms.controller;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
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 lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.persistence.*;
import javax.servlet.http.HttpServletResponse;
import java.io.Serializable;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
@RestController
@Slf4j
@RequestMapping("/RongQi")
public class RongQiController {
@PersistenceContext
private EntityManager entityManager;
@Autowired
private Xuliehaoqingdan xuliehaoqingdan;
@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"));
JSONObject param= (JSONObject)jsonObject.get("param");
String wdCode=param.getStr("wdCode");
// "BC241225094433013372";
/* JSONArray jsonArray=param.getJSONArray("issued_Date");
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String startDate="";
String endDate="";
if (jsonArray.size()>0){
Date date1=jsonArray.getDate(0);
startDate=sdf.format(date1);
Date date2=jsonArray.getDate(1);
endDate=sdf.format(date2);
}else {
startDate="2024-05-01";
Date date = new Date();
endDate=sdf.format(date);
}*/
/* 基础sql数据查询*/
String sql=" SELECT "
+" MAX(t.id) as id, "
+" count(t.id) as ts, "
+" MAX(t.agvTask_ID) as agv_id, "
+" item.code AS liaohao, "
+" MAX ( t.END_REGION ) AS gzz, "
+" MAX ( s2.LP ) AS rqh, "
+" t.BILLCODE AS zrwh "
+" 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 LOCATION loc ON loc.id= t.SRC_LOC_ID "
+" LEFT JOIN ZONE z ON z.id= loc.ZONE_ID "
+" LEFT JOIN ITEM_KEY ik ON ik.id= t.ITEM_KEY_ID "
+" LEFT JOIN ITEM item ON item.id= ik.ITEM_ID "
+" LEFT JOIN STOCK s2 ON s2.id= t.SRC_LP "
+" LEFT JOIN STOCK s1 ON s1.id= loc.stock "
+" LEFT JOIN WAVE_DOC wd ON wd.id= t.WAVE_DOC_ID "
+" WHERE "
+" 1 = 1 "
+" AND pt.BILL_TYPE_ID= 1094 "
+" AND wd.code= '"+wdCode+"' "
+" AND t.WAVE_DOC_ID IS NOT NULL and z.id=1763 "
+" GROUP BY "
+" pt.code, "
+" t.agvTask_ID, "
+" t.BILLCODE, "
+" item.id, "
+" item.code, "
+" item.BE_MARK_WEIGHT, "
+" loc.id, "
+" loc.code, "
+" ik.PROP_C1, "
+" ik.PROP_C2, "
+" ik.PROP_C3, "
+" ik.PROP_D1, "
+" ik.PROP_D2, "
+" item.ISBOM "
;
String sqlCount = "select count(t.id) as nums from (" + sql+") t";
/* 总条数*/
List<Integer> counts = entityManager.createNativeQuery(sqlCount).getResultList();
/* 当前页数据*/
int pageNum = query.getPageNum();//当前页
int pageSize = counts.get(0);//条数
String querySql="";//查询条件
String sqlFy = "select * from( "
+ sql
+ ") t where 1=1 "
+ querySql
+" ORDER BY rqh "
+ " ,id"
+" OFFSET "+ (pageNum-1) * pageSize +" ROWS "
+" FETCH NEXT "+pageSize+" ROWS ONLY; ";
/* 箱子流通数*/
List<RongQiLt> rqLtList=new ArrayList<>();
RongQiLt rongQiOLD=new RongQiLt();
rongQiOLD.setWorkstation("现有逻辑");
rqLtList.add(rongQiOLD);
RongQiLt rongQiNEW=new RongQiLt();
rongQiNEW.setWorkstation("头物料+容器逻辑");
rqLtList.add(rongQiNEW);
/* 工作站命中率*/
List<RongQiMz> rqMzList=new ArrayList<>();
RongQiMz rqMzOLD=new RongQiMz();
rqMzOLD.setWorkstation("现有逻辑");
rqMzList.add(rqMzOLD);
RongQiMz rqMzNEW=new RongQiMz();
rqMzNEW.setWorkstation("新逻辑");
rqMzList.add(rqMzNEW);
/* 详情数据*/
List<RongQi> rqList = new ArrayList<>();
/* 查询所有数据*/
List<RQTaskModel> listAll = entityManager.createNativeQuery(sqlFy, RQTaskModel.class).getResultList();
/* 按容器分组*/
Map<String, List<RQTaskModel>> groupedByRqh = listAll.stream()
.collect(Collectors.groupingBy(RQTaskModel::getRqh));
for (String rqh : groupedByRqh.keySet()) {
RongQi rongQi=new RongQi();
rongQi.setRqh(rqh);
List<RQTaskModel> listRqh=groupedByRqh.get(rqh);
rongQi.setId(listRqh.get(0).getId());
/* 按工作站分组*/
Map<String, List<RQTaskModel>> groupedByGzz = listRqh.stream()
.collect(Collectors.groupingBy(RQTaskModel::getGzz));
for (String gzz : groupedByGzz.keySet()) {
List<RQTaskModel> listGzz=groupedByGzz.get(gzz);
/* 按AgvId任务分组获取分组后的集合长度算出当前料箱到当前工作站的次数*/
Map<String, List<RQTaskModel>> groupedByAgvId = listGzz.stream()
.collect(Collectors.groupingBy(RQTaskModel::getAgvId));
/* 工作站搬运任务数*/
int gzzCount=groupedByAgvId.size();
/* 工作站拣货任务总行数*/
int taskCount=0;
for (RQTaskModel rqTaskModel : listGzz){
taskCount=taskCount+rqTaskModel.getTs();
}
int i=1;//1 新逻辑 0 原逻辑
RongQiMz rongQiMz=rqMzList.get(i);
switch (gzz){
case "201":
rongQi.setG201(taskCount);
rqLtList.get(i).setG201(rqLtList.get(i).getG201()+gzzCount);
rongQiMz.getG201().setTaskCount(rongQiMz.getG201().getTaskCount()+taskCount);
rongQiMz.getG201().setLxCount(rongQiMz.getG201().getLxCount()+1);
break;
case "202":
rongQi.setG202(taskCount);
rqLtList.get(i).setG202(rqLtList.get(i).getG202()+gzzCount);
rongQiMz.getG202().setTaskCount(rongQiMz.getG202().getTaskCount()+taskCount);
rongQiMz.getG202().setLxCount(rongQiMz.getG202().getLxCount()+1);
break;
case "203":
rongQi.setG203(taskCount);
rqLtList.get(i).setG203(rqLtList.get(i).getG203()+gzzCount);
rongQiMz.getG203().setTaskCount(rongQiMz.getG203().getTaskCount()+taskCount);
rongQiMz.getG203().setLxCount(rongQiMz.getG203().getLxCount()+1);
break;
case "204":
rongQi.setG204(taskCount);
rqLtList.get(i).setG204(rqLtList.get(i).getG204()+gzzCount);
rongQiMz.getG204().setTaskCount(rongQiMz.getG204().getTaskCount()+taskCount);
rongQiMz.getG204().setLxCount(rongQiMz.getG204().getLxCount()+1);
break;
case "205":
rongQi.setG205(taskCount);
rqLtList.get(i).setG205(rqLtList.get(i).getG205()+gzzCount);
rongQiMz.getG205().setTaskCount(rongQiMz.getG205().getTaskCount()+taskCount);
rongQiMz.getG205().setLxCount(rongQiMz.getG205().getLxCount()+1);
break;
case "206":
rongQi.setG206(taskCount);
rqLtList.get(i).setG206(rqLtList.get(i).getG206()+gzzCount);
rongQiMz.getG206().setTaskCount(rongQiMz.getG206().getTaskCount()+taskCount);
rongQiMz.getG206().setLxCount(rongQiMz.getG206().getLxCount()+1);
break;
case "207":
rongQi.setG207(taskCount);
rqLtList.get(i).setG207(rqLtList.get(i).getG207()+gzzCount);
rongQiMz.getG207().setTaskCount(rongQiMz.getG207().getTaskCount()+taskCount);
rongQiMz.getG207().setLxCount(rongQiMz.getG207().getLxCount()+1);
break;
case "208":
rongQi.setG208(taskCount);
rqLtList.get(i).setG208(rqLtList.get(i).getG208()+gzzCount);
rongQiMz.getG208().setTaskCount(rongQiMz.getG208().getTaskCount()+taskCount);
rongQiMz.getG208().setLxCount(rongQiMz.getG208().getLxCount()+1);
break;
case "209":
rongQi.setG209(taskCount);
rqLtList.get(i).setG209(rqLtList.get(i).getG209()+gzzCount);
rongQiMz.getG209().setTaskCount(rongQiMz.getG209().getTaskCount()+taskCount);
rongQiMz.getG209().setLxCount(rongQiMz.getG209().getLxCount()+1);
break;
case "210":
rongQi.setG210(taskCount);
rqLtList.get(i).setG210(rqLtList.get(i).getG210()+gzzCount);
rongQiMz.getG210().setTaskCount(rongQiMz.getG210().getTaskCount()+taskCount);
rongQiMz.getG210().setLxCount(rongQiMz.getG210().getLxCount()+1);
break;
case "211":
rongQi.setG211(taskCount);
rqLtList.get(i).setG211(rqLtList.get(i).getG211()+gzzCount);
rongQiMz.getG211().setTaskCount(rongQiMz.getG211().getTaskCount()+taskCount);
rongQiMz.getG211().setLxCount(rongQiMz.getG211().getLxCount()+1);
break;
case "212":
rongQi.setG212(taskCount);
rqLtList.get(i).setG212(rqLtList.get(i).getG212()+gzzCount);
rongQiMz.getG212().setTaskCount(rongQiMz.getG212().getTaskCount()+taskCount);
rongQiMz.getG212().setLxCount(rongQiMz.getG212().getLxCount()+1);
break;
case "213":
rongQi.setG213(taskCount);
rqLtList.get(i).setG213(rqLtList.get(i).getG213()+gzzCount);
rongQiMz.getG213().setTaskCount(rongQiMz.getG213().getTaskCount()+taskCount);
rongQiMz.getG213().setLxCount(rongQiMz.getG213().getLxCount()+1);
break;
case "214":
rongQi.setG214(taskCount);
rqLtList.get(i).setG214(rqLtList.get(i).getG214()+gzzCount);
rongQiMz.getG214().setTaskCount(rongQiMz.getG214().getTaskCount()+taskCount);
rongQiMz.getG214().setLxCount(rongQiMz.getG214().getLxCount()+1);
break;
case "215":
rongQi.setG215(taskCount);
rqLtList.get(i).setG215(rqLtList.get(i).getG215()+gzzCount);
rongQiMz.getG215().setTaskCount(rongQiMz.getG215().getTaskCount()+taskCount);
rongQiMz.getG215().setLxCount(rongQiMz.getG215().getLxCount()+1);
break;
default:
break;
}
rqLtList.get(i).setTotal(rqLtList.get(i).getTotal()+gzzCount);
}
rqList.add(rongQi);
}
// 使用 Comparator 进行排序
Collections.sort(rqList, new Comparator<RongQi>() {
@Override
public int compare(RongQi r1, RongQi r2) {
return r1.getRqh().compareTo(r2.getRqh());
}
});
JSONObject jsonF=new JSONObject();
jsonF.accumulate("rqList", rqList);
jsonF.accumulate("rqLtList", rqLtList);
for (int i = 0; i < rqMzList.size(); i++) {
RongQiMz rongQiMz=rqMzList.get(i);//工作站料箱数
if (rongQiMz.getG201().getLxCount()!=0){
rongQiMz.getG201().setMz(Math.round(rongQiMz.getG201().getTaskCount()/rongQiMz.getG201().getLxCount() * 100) / 100.0);
rongQiMz.getTotal().setTaskCount(rongQiMz.getTotal().getTaskCount()+rongQiMz.getG201().getMz());
rongQiMz.getTotal().setLxCount(rongQiMz.getTotal().getLxCount()+1);
}
if (rongQiMz.getG202().getLxCount()!=0) {
rongQiMz.getG202().setMz(Math.round(rongQiMz.getG202().getTaskCount() / rongQiMz.getG202().getLxCount() * 100) / 100.0);
rongQiMz.getTotal().setTaskCount(rongQiMz.getTotal().getTaskCount()+rongQiMz.getG202().getMz());
rongQiMz.getTotal().setLxCount(rongQiMz.getTotal().getLxCount()+1);
}
if (rongQiMz.getG203().getLxCount()!=0) {
rongQiMz.getG203().setMz(Math.round(rongQiMz.getG203().getTaskCount() / rongQiMz.getG203().getLxCount() * 100) / 100.0);
rongQiMz.getTotal().setTaskCount(rongQiMz.getTotal().getTaskCount()+rongQiMz.getG201().getMz());
rongQiMz.getTotal().setLxCount(rongQiMz.getTotal().getLxCount()+1);
}
if (rongQiMz.getG204().getLxCount()!=0) {
rongQiMz.getG204().setMz(Math.round(rongQiMz.getG204().getTaskCount() / rongQiMz.getG204().getLxCount() * 100) / 100.0);
rongQiMz.getTotal().setTaskCount(rongQiMz.getTotal().getTaskCount()+rongQiMz.getG201().getMz());
rongQiMz.getTotal().setLxCount(rongQiMz.getTotal().getLxCount()+1);
}
if (rongQiMz.getG205().getLxCount()!=0) {
rongQiMz.getG205().setMz(Math.round(rongQiMz.getG205().getTaskCount() / rongQiMz.getG205().getLxCount() * 100) / 100.0);
rongQiMz.getTotal().setTaskCount(rongQiMz.getTotal().getTaskCount()+rongQiMz.getG205().getMz());
rongQiMz.getTotal().setLxCount(rongQiMz.getTotal().getLxCount()+1);
}
if (rongQiMz.getG206().getLxCount()!=0) {
rongQiMz.getG206().setMz(Math.round(rongQiMz.getG206().getTaskCount() / rongQiMz.getG206().getLxCount() * 100) / 100.0);
rongQiMz.getTotal().setTaskCount(rongQiMz.getTotal().getTaskCount()+rongQiMz.getG206().getMz());
rongQiMz.getTotal().setLxCount(rongQiMz.getTotal().getLxCount()+1);
}
if (rongQiMz.getG207().getLxCount()!=0) {
rongQiMz.getG207().setMz(Math.round(rongQiMz.getG207().getTaskCount() / rongQiMz.getG207().getLxCount() * 100) / 100.0);
rongQiMz.getTotal().setTaskCount(rongQiMz.getTotal().getTaskCount()+rongQiMz.getG207().getMz());
rongQiMz.getTotal().setLxCount(rongQiMz.getTotal().getLxCount()+1);
}
if (rongQiMz.getG208().getLxCount()!=0) {
rongQiMz.getG208().setMz(Math.round(rongQiMz.getG208().getTaskCount() / rongQiMz.getG208().getLxCount() * 100) / 100.0);
rongQiMz.getTotal().setTaskCount(rongQiMz.getTotal().getTaskCount()+rongQiMz.getG208().getMz());
rongQiMz.getTotal().setLxCount(rongQiMz.getTotal().getLxCount()+1);
}
if (rongQiMz.getG209().getLxCount()!=0) {
rongQiMz.getG209().setMz(Math.round(rongQiMz.getG209().getTaskCount() / rongQiMz.getG209().getLxCount() * 100) / 100.0);
rongQiMz.getTotal().setTaskCount(rongQiMz.getTotal().getTaskCount()+rongQiMz.getG209().getMz());
rongQiMz.getTotal().setLxCount(rongQiMz.getTotal().getLxCount()+1);
}
if (rongQiMz.getG210().getLxCount()!=0) {
rongQiMz.getG210().setMz(Math.round(rongQiMz.getG210().getTaskCount() / rongQiMz.getG210().getLxCount() * 100) / 100.0);
rongQiMz.getTotal().setTaskCount(rongQiMz.getTotal().getTaskCount()+rongQiMz.getG210().getMz());
rongQiMz.getTotal().setLxCount(rongQiMz.getTotal().getLxCount()+1);
}
if (rongQiMz.getG211().getLxCount()!=0) {
rongQiMz.getG211().setMz(Math.round(rongQiMz.getG211().getTaskCount() / rongQiMz.getG211().getLxCount() * 100) / 100.0);
rongQiMz.getTotal().setTaskCount(rongQiMz.getTotal().getTaskCount()+rongQiMz.getG211().getMz());
rongQiMz.getTotal().setLxCount(rongQiMz.getTotal().getLxCount()+1);
}
if (rongQiMz.getG212().getLxCount()!=0) {
rongQiMz.getG212().setMz(Math.round(rongQiMz.getG212().getTaskCount() / rongQiMz.getG212().getLxCount() * 100) / 100.0);
rongQiMz.getTotal().setTaskCount(rongQiMz.getTotal().getTaskCount()+rongQiMz.getG212().getMz());
rongQiMz.getTotal().setLxCount(rongQiMz.getTotal().getLxCount()+1);
}
if (rongQiMz.getG213().getLxCount()!=0) {
rongQiMz.getG213().setMz(Math.round(rongQiMz.getG213().getTaskCount() / rongQiMz.getG213().getLxCount() * 100) / 100.0);
rongQiMz.getTotal().setTaskCount(rongQiMz.getTotal().getTaskCount()+rongQiMz.getG213().getMz());
rongQiMz.getTotal().setLxCount(rongQiMz.getTotal().getLxCount()+1);
}
if (rongQiMz.getG214().getLxCount()!=0) {
rongQiMz.getG214().setMz(Math.round(rongQiMz.getG214().getTaskCount() / rongQiMz.getG214().getLxCount() * 100) / 100.0);
rongQiMz.getTotal().setTaskCount(rongQiMz.getTotal().getTaskCount()+rongQiMz.getG214().getMz());
rongQiMz.getTotal().setLxCount(rongQiMz.getTotal().getLxCount()+1);
}
if (rongQiMz.getG215().getLxCount()!=0) {
rongQiMz.getG215().setMz(Math.round(rongQiMz.getG215().getTaskCount() / rongQiMz.getG215().getLxCount() * 100) / 100.0);
rongQiMz.getTotal().setTaskCount(rongQiMz.getTotal().getTaskCount()+rongQiMz.getG215().getMz());
rongQiMz.getTotal().setLxCount(rongQiMz.getTotal().getLxCount()+1);
}
if (rongQiMz.getTotal().getLxCount()!=0) {
rongQiMz.getTotal().setMz(Math.round(rongQiMz.getTotal().getTaskCount() / rongQiMz.getTotal().getLxCount() * 100) / 100.0);
}
}
jsonF.accumulate("rqMzList", rqMzList);
Result result=Result.result(200,"操作成功",Long.parseLong(counts.get(0).toString()), jsonF);
return result;
}
@PostMapping(value = "/download")
public void exportCompany(HttpServletResponse response, @RequestBody String json) throws Exception {
QueryPageUtil query =new QueryPageUtil();
JSONObject jsonObject= JSONUtil.parseObj(json);
query.setPageSize((int)jsonObject.get("pageSize"));
query.setPageNum((int)jsonObject.get("pageNum"));
JSONObject param= (JSONObject)jsonObject.get("param");
Xuliehao j = JSONUtil.toBean(param.toString(), Xuliehao.class);
xuliehaoqingdan.download( (List<Map<String,Object>>)xuliehaoqingdan.QueryJson(query,j).getData(), response);
}
}
@Data
@Entity
class RongQi implements Serializable{
@Id
private Long id;
/* 容器号*/
private String rqh;
private int g201=0;
private int g202=0;
private int g203=0;
private int g204=0;
private int g205=0;
private int g206=0;
private int g207=0;
private int g208=0;
private int g209=0;
private int g210=0;
private int g211=0;
private int g212=0;
private int g213=0;
private int g214=0;
private int g215=0;
}
@Data
@Entity
class RongQiLt implements Serializable{
@Id
private Long id;
/* 容器号*/
private String workstation;
private int g201=0;
private int g202=0;
private int g203=0;
private int g204=0;
private int g205=0;
private int g206=0;
private int g207=0;
private int g208=0;
private int g209=0;
private int g210=0;
private int g211=0;
private int g212=0;
private int g213=0;
private int g214=0;
private int g215=0;
private int total=0;
}
@Data
@Entity
class RongQiMz implements Serializable {
@Id
private Long id;
/* 容器号*/
private String workstation;
private RQMzModel g201=new RQMzModel();
private RQMzModel g202=new RQMzModel();
private RQMzModel g203=new RQMzModel();
private RQMzModel g204=new RQMzModel();
private RQMzModel g205=new RQMzModel();
private RQMzModel g206=new RQMzModel();
private RQMzModel g207=new RQMzModel();
private RQMzModel g208=new RQMzModel();
private RQMzModel g209=new RQMzModel();
private RQMzModel g210=new RQMzModel();
private RQMzModel g211=new RQMzModel();
private RQMzModel g212=new RQMzModel();
private RQMzModel g213=new RQMzModel();
private RQMzModel g214=new RQMzModel();
private RQMzModel g215=new RQMzModel();
private RQMzModel total=new RQMzModel();
}
@Data
class RQMzModel implements Serializable {
@Id
private Long id;
/*任务行*/
private double taskCount=0;
/*料箱数*/
private double lxCount=0;
/*命中率*/
private double mz=0;
}

View File

@ -34,7 +34,7 @@ public class UserController {
public Result login(@RequestBody String user) {
JSONArray array=new JSONArray();
JSONObject data=new JSONObject();
int menuCount=12;
int menuCount=13;
for (int i=1;i<=menuCount;i++){
JSONObject menu=new JSONObject();
menu.put("id",i);
@ -87,6 +87,10 @@ public class UserController {
menu.put("menuName", "人效管理");
menu.put("menuComponent","/RenXiao");
menu.put("menuClick","RenXiao");
}else if(i==13) {
menu.put("menuName", "容器流通");
menu.put("menuComponent","/RongQi");
menu.put("menuClick","RongQi");
}
menu.put("menuLevel",i);
menu.put("menuParentCode",i);

View File

@ -13,7 +13,7 @@ server:
spring:
datasource:
# url: jdbc:sqlserver://10.1.96.105:1433;DatabaseName=LD_WMSDB
url: jdbc:sqlserver://47.103.100.52:1433;DatabaseName=zwtest
url: jdbc:sqlserver://47.103.100.52:1433;DatabaseName=zwlgtest
driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
# username: wmsdb
# password: AmecDDbb32A