This commit is contained in:
zds
2022-09-13 00:09:41 +08:00
parent 72d3327cae
commit 8328a46cf1
6 changed files with 621 additions and 2 deletions

View File

@@ -47,6 +47,13 @@ public class DailyplanController {
return new ResponseEntity<>(dailyplanService.
queryday(whereJson,page),HttpStatus.OK);
}
@GetMapping("/querymouth")
@Log("查询月生产计划")
@ApiOperation("查询月生产计划")
public ResponseEntity<Object> querymouth(@RequestParam Map whereJson, Pageable page){
return new ResponseEntity<>(dailyplanService.
querymouth(whereJson,page),HttpStatus.OK);
}
@GetMapping("/query2")
@Log("查询月生产计划")
@ApiOperation("查询月生产计划")

View File

@@ -32,6 +32,13 @@ public interface DailyplanService {
* @return Map<String,Object>
*/
Map<String,Object> queryday(Map whereJson, Pageable page);
/**
* 查询数据分页
* @param whereJson 条件
* @param page 分页参数
* @return Map<String,Object>
*/
Map<String,Object> querymouth(Map whereJson, Pageable page);
/**
* 创建
* @param json /

View File

@@ -141,6 +141,67 @@ public class DailyplanServiceImpl implements DailyplanService {
return jret;
}
@Override
public Map<String, Object> querymouth(Map whereJson, Pageable page) {
HashMap<String, String> map = new HashMap<>(whereJson);
String material_code = map.get("material_code");
if (StrUtil.isNotEmpty(material_code)) {
map.put("material_code", "%" + material_code + "%");
}
String begin_time = map.get("begin_time");
if (StrUtil.isNotEmpty(begin_time)) {
map.put("begin_time", begin_time.substring(0,10)+" 00:00:00");
}
String end_time = map.get("end_time");
if (StrUtil.isNotEmpty(end_time)) {
map.put("end_time", end_time.substring(0,10)+" 23:59:59");
}
map.put("flag", "7");
JSONObject jret = WQL.getWO("QPDM_PRODUCTDAILYPLAN").addParamMap(map).pageQuery(WqlUtil.getHttpContext(page), "WorkOrder.device_id,materialbase.material_code");
JSONArray json = jret.getJSONArray("content");
JSONArray ja = new JSONArray();
for(int i=0;i<json.size();i++){
JSONObject jo = json.getJSONObject(i);
JSONObject last = WQL.getWO("QPDM_PRODUCTDAILYPLAN")
.addParam("flag", "44")
.addParam("begin_time", map.get("begin_time"))
.addParam("end_time",map.get("end_time"))
.addParam("device_id",jo.getString("device_id"))
.addParam("material_id",jo.getString("material_id"))
.process().uniqueResult(0);
if(last!=null){
jo.put("pw_time",last.getString("realend_time"));
}
JSONObject last5 = WQL.getWO("QPDM_PRODUCTDAILYPLAN")
.addParam("flag", "55")
.addParam("begin_time", map.get("begin_time"))
.addParam("end_time",map.get("end_time"))
.addParam("device_id",jo.getString("device_id"))
.addParam("material_id",jo.getString("material_id"))
.process().uniqueResult(0);
if(last5!=null){
jo.put("in_time",last5.getString("create_time"));
}
JSONObject last6 = WQL.getWO("QPDM_PRODUCTDAILYPLAN")
.addParam("flag", "66")
.addParam("begin_time", map.get("begin_time"))
.addParam("end_time",map.get("end_time"))
.addParam("device_id",jo.getString("device_id"))
.addParam("material_id",jo.getString("material_id"))
.process().uniqueResult(0);
if(StrUtil.isNotEmpty(last6.getString("total_qty"))){
jo.put("in_qty",last6.getDouble("total_qty")/1000.0);
}
if(StrUtil.isNotEmpty(last6.getString("in_num"))){
jo.put("in_num",last6.getDouble("in_num"));
}
jo.put("sum_qty",jo.getDouble("sum_qty")/1000.0);
ja.add(jo);
}
jret.put("content",ja);
return jret;
}
@Override
public JSONArray queryAll(Map whereJson) {
HashMap<String, String> map = new HashMap<>(whereJson);

View File

@@ -24,6 +24,7 @@
输入.end_time TYPEAS s_string
输入.device_id TYPEAS s_string
输入.old_mark TYPEAS s_string
输入.material_id TYPEAS s_string
输入.workorder_type TYPEAS s_string
@@ -159,8 +160,7 @@
COUNT(*) AS product_num,
sum(WorkOrder.workorder_qty) AS sum_qty,
ext.old_mark,
ext.standard_mark,
materialbase.material_code
ext.standard_mark
FROM
PDM_BI_WorkOrder WorkOrder
LEFT JOIN MD_ME_ProducMaterialExt ext ON WorkOrder.material_id = ext.material_id
@@ -267,6 +267,120 @@
ENDQUERY
ENDIF
IF 输入.flag = "7"
PAGEQUERY
SELECT
deviceinfo.device_code,
deviceinfo.device_name,
WorkOrder.device_id,
COUNT(*) AS product_num,
sum(WorkOrder.workorder_qty) AS sum_qty,
materialbase.material_code,
MIN(WorkOrder.planstart_time) AS workorder_date
FROM
PDM_BI_WorkOrder WorkOrder
LEFT JOIN md_me_materialbase materialbase ON WorkOrder.material_id = materialbase.material_id
LEFT JOIN em_bi_deviceinfo deviceinfo ON deviceinfo.device_id = WorkOrder.device_id
WHERE
1=1 and WorkOrder.is_delete='0'
OPTION 输入.begin_time <> ""
WorkOrder.planstart_time >= 输入.begin_time
ENDOPTION
OPTION 输入.end_time <> ""
WorkOrder.planstart_time <= 输入.end_time
ENDOPTION
OPTION 输入.material_code <> ""
(materialbase.material_code like 输入.material_code or materialbase.material_name like 输入.material_code)
ENDOPTION
group by WorkOrder.device_id,materialbase.material_code
ENDSELECT
ENDPAGEQUERY
ENDIF
IF 输入.flag = "44"
QUERY
SELECT
WorkOrder.*
FROM
PDM_BI_WorkOrder WorkOrder
WHERE
1=1 and WorkOrder.is_delete='0'
and WorkOrder.status='99'
OPTION 输入.begin_time <> ""
WorkOrder.planstart_time >= 输入.begin_time
ENDOPTION
OPTION 输入.end_time <> ""
WorkOrder.planstart_time <= 输入.end_time
ENDOPTION
OPTION 输入.device_id <> ""
WorkOrder.device_id = 输入.device_id
ENDOPTION
OPTION 输入.material_id <> ""
WorkOrder.material_id = 输入.material_id
ENDOPTION
order by WorkOrder.realend_time desc
ENDSELECT
ENDQUERY
ENDIF
IF 输入.flag = "55"
QUERY
SELECT
WorkOrder.workorder_id,
ProcedureOffline.diskrecord_id,
ProcedureOffline.qty,
ProcedureOffline.create_time
FROM
PDM_BI_WorkOrder WorkOrder
LEFT JOIN PDM_BI_ProcedureOffline ProcedureOffline ON ProcedureOffline.workorder_id = WorkOrder.workorder_id
WHERE
1=1 and WorkOrder.is_delete='0'
and ProcedureOffline.status='1'
OPTION 输入.begin_time <> ""
WorkOrder.planstart_time >= 输入.begin_time
ENDOPTION
OPTION 输入.end_time <> ""
WorkOrder.planstart_time <= 输入.end_time
ENDOPTION
OPTION 输入.device_id <> ""
WorkOrder.device_id = 输入.device_id
ENDOPTION
OPTION 输入.material_id <> ""
WorkOrder.material_id = 输入.material_id
ENDOPTION
order by ProcedureOffline.create_time desc
ENDSELECT
ENDQUERY
ENDIF
IF 输入.flag = "66"
QUERY
SELECT
sum(ProcedureOffline.qty) AS total_qty,
count(WorkOrder.workorder_id) AS in_num,
WorkOrder.device_id
FROM
PDM_BI_WorkOrder WorkOrder
LEFT JOIN PDM_BI_ProcedureOffline ProcedureOffline ON ProcedureOffline.workorder_id = WorkOrder.workorder_id
WHERE
1=1 and WorkOrder.is_delete='0'
and ProcedureOffline.status='1'
OPTION 输入.begin_time <> ""
WorkOrder.planstart_time >= 输入.begin_time
ENDOPTION
OPTION 输入.end_time <> ""
WorkOrder.planstart_time <= 输入.end_time
ENDOPTION
OPTION 输入.device_id <> ""
WorkOrder.device_id = 输入.device_id
ENDOPTION
OPTION 输入.material_id <> ""
WorkOrder.material_id = 输入.material_id
ENDOPTION
ENDSELECT
ENDQUERY
ENDIF

View File

@@ -0,0 +1,167 @@
<template>
<div class="app-container">
<!--工具栏-->
<div class="head-container">
<div v-if="crud.props.searchToggle">
<!-- 搜索 -->
<el-form
:inline="true"
class="demo-form-inline"
label-position="right"
label-width="90px"
label-suffix=":"
>
<el-form-item label="开始日期">
<el-date-picker
v-model="query.createTime"
type="daterange"
value-format="yyyy-MM-dd HH:mm:ss"
start-placeholder="开始日期"
end-placeholder="结束日期"
:default-time="['00:00:00', '23:59:59']"
@input="onInput()"
@change="mytoQuery"
/>
</el-form-item>
<el-form-item label="产品">
<el-input
v-model="query.material_code"
clearable
size="mini"
placeholder="请输入物料编码"
style="width: 200px"
class="filter-item"
@keyup.enter.native="crud.toQuery"
/>
</el-form-item>
<rrOperation />
</el-form>
</div>
<!--如果想在工具栏加入更多按钮可以使用插槽方式 slot = 'left' or 'right'-->
<crudOperation>
</crudOperation>
<!--表格渲染-->
<el-table ref="table" v-loading="crud.loading" :data="crud.data" size="mini" style="width: 100%;" @selection-change="crud.selectionChangeHandler">
<el-table-column type="index" label="序号" width="55" align="center" />
<el-table-column prop="material_code" label="产品编码" width="180" />
<el-table-column prop="sum_qty" label="计划重量(吨)" :formatter="crud.formatNum3" min-width="80" />
<el-table-column prop="product_num" label="计划批次" min-width="80" />
<el-table-column prop="device_name" label="关键设备" width="100" />
<el-table-column prop="workorder_date" min-width="85" label="粉料配粉时间" />
<el-table-column prop="pw_time" label="粉料喷雾时间" width="140" />
<el-table-column prop="in_time" label="最后入库时间" width="140" />
<el-table-column prop="in_qty" label="入库重量(吨)" :formatter="crud.formatNum3" min-width="80" />
<el-table-column prop="in_num" label="入库批数" width="80" />
</el-table>
<!--分页组件-->
<pagination />
</div>
</div>
</template>
<script>
import producetask from '@/api/wms/pdm/producetask'
import dailyplan from '@/api/wms/pdm/dailyplan'
import CRUD, { presenter, header, crud } from '@crud/crud'
import rrOperation from '@crud/RR.operation'
import pagination from '@crud/Pagination'
import crudOperation from '@crud/CRUD.operation'
import Date from '@/utils/datetime'
export default {
name: 'productmouth',
dicts: ['product_mode', 'workorder_type2', 'planstatus'],
components: { rrOperation, crudOperation, pagination },
mixins: [presenter(), header(), crud()],
cruds() {
return CRUD({
title: '日计划按月统计',
url: 'api/dailyplan/querymouth',
idField: 'material_code',
sort: '',
query: { device_id: '' },
crudMethod: { ...dailyplan },
optShow: {
add: false,
edit: false,
del: false,
download: false,
reset: true
}})
},
data() {
return {
dialogVisible: false,
Devices: [],
form: {},
query_flag: true,
rules: {
}}
},
computed: {
},
created() {
producetask.getDevices().then(res => {
this.Devices = res
})
this.crud.query.createTime = [new Date(), new Date().daysLater(0)]
},
methods: {
[CRUD.HOOK.beforeRefresh]() {
if(this.query_flag){
this.crud.query.begin_time = (new Date()).strftime('%F', 'zh')
this.crud.query.end_time = (new Date().daysLater(0)).strftime('%F', 'zh')
this.query_flag = false
}
return true
},
hand(value) {
this.crud.toQuery()
},
stateFormat(row) {
return this.dict.label.planstatus[row.status]
},
workorder_typeFormat(row) {
return this.dict.label.workorder_type2[row.workorder_type]
},
onInput() {
this.$forceUpdate()
},
MyQuery(value) {
this.crud.toQuery()
},
seriesFormat(row) {
for (const item of this.XLList) {
if (item.id === row.product_series) {
return item.name
}
}
},
seriesFormat2(row) {
for (const item of this.XLList) {
if (item.id === row.mater_product_series) {
return item.name
}
}
},
mytoQuery(array1){
if(array1 === null){
this.crud.query.begin_time = ''
this.crud.query.end_time = ''
}else{
this.crud.query.begin_time = array1[0]
this.crud.query.end_time = array1[1]
}
this.crud.toQuery()
},
querytable() {
this.crud.toQuery()
}
}
}
</script>
<style scoped>
</style>

View File

@@ -0,0 +1,263 @@
<template>
<div class="app-container">
<!--工具栏-->
<div class="head-container">
<div v-if="crud.props.searchToggle">
<!-- 搜索 -->
<el-form
:inline="true"
class="demo-form-inline"
label-position="right"
label-width="90px"
label-suffix=":"
>
<el-form-item label="喷雾日期">
<el-date-picker
v-model="query.createTime"
type="daterange"
value-format="yyyy-MM-dd HH:mm:ss"
start-placeholder="开始日期"
end-placeholder="结束日期"
:default-time="['00:00:00', '23:59:59']"
@input="onInput()"
@change="mytoQuery"
/>
</el-form-item>
<el-form-item label="产品">
<el-input
v-model="query.material_code"
clearable
size="mini"
placeholder="请输入物料编码"
style="width: 200px"
class="filter-item"
@keyup.enter.native="crud.toQuery"
/>
</el-form-item>
<el-form-item label="喷雾设备">
<label slot="label">喷雾设备:</label>
<el-select
v-model="query.device_id"
clearable
size="mini"
placeholder="喷雾设备"
class="filter-item"
style="width: 200px"
@change="hand"
>
<el-option
v-for="item in Devices"
:key="item.id"
:label="item.name"
:value="item.id"
/>
</el-select>
</el-form-item>
<rrOperation />
</el-form>
</div>
<!--如果想在工具栏加入更多按钮可以使用插槽方式 slot = 'left' or 'right'-->
<crudOperation>
</crudOperation>
<!--表格渲染-->
<el-table ref="table" v-loading="crud.loading" :data="crud.data" :max-height="590" size="mini" style="width: 100%;" @selection-change="crud.selectionChangeHandler">
<el-table-column type="index" label="序号" width="55" align="center" />
<el-table-column prop="workorder_date" min-width="85" label="日期" align="center" :formatter="workorder_dateFormat" />
<el-table-column prop="device_name" width="100" label="喷雾塔" align="center">
<template slot-scope="scope">
<el-link type="warning">{{ scope.row.device_name }}</el-link>
</template>
</el-table-column>
<el-table-column label="投入(kg)" align="center">
<el-table-column label="原材料/kg" align="center">
<el-table-column prop="sum_qty1" label="碳化钨" :formatter="crud.formatNum3" min-width="100" align="center" />
<el-table-column prop="sum_qty2" label="钴粉" :formatter="crud.formatNum3" min-width="80" align="center" />
<el-table-column prop="sum_qty3" label="镍粉" :formatter="crud.formatNum3" min-width="80" align="center" />
<el-table-column prop="sum_qty4" label="碳化铬" :formatter="crud.formatNum3" min-width="100" align="center" />
<el-table-column prop="sum_qty5" label="碳化钒" :formatter="crud.formatNum3" min-width="80" align="center" />
<el-table-column prop="sum_qty6" label="碳化钽/铌" :formatter="crud.formatNum3" min-width="80" align="center" />
<el-table-column prop="sum_qty7" label="碳粉" :formatter="crud.formatNum3" min-width="100" align="center" />
<el-table-column prop="sum_qty8" label="钨粉" :formatter="crud.formatNum3" min-width="80" align="center" />
</el-table-column>
<el-table-column prop="sum_qty9" label="合计" :formatter="crud.formatNum3" min-width="100" align="center" />
<el-table-column label="二次粉" align="center">
<el-table-column prop="sum_qty10" label="PG粉" :formatter="crud.formatNum3" min-width="100" align="center" />
<el-table-column prop="sum_qty11" label="软废" :formatter="crud.formatNum3" min-width="80" align="center" />
</el-table-column>
<el-table-column label="成型剂" align="center">
<el-table-column prop="sum_qty12" label="PEG2000\PEG" :formatter="crud.formatNum3" min-width="120" align="center" />
<el-table-column prop="sum_qty13" label="石蜡/kg" :formatter="crud.formatNum3" min-width="80" align="center" />
<el-table-column prop="sum_qty14" label="白油" :formatter="crud.formatNum3" min-width="80" align="center" />
</el-table-column>
<el-table-column prop="sum_qty15" label="合计" :formatter="crud.formatNum3" min-width="100" align="center" />
<el-table-column prop="sum_qty16" label="投入汇总" :formatter="crud.formatNum3" min-width="100" align="center" />
</el-table-column>
<el-table-column label="产出(kg)" align="center">
<el-table-column prop="out_qty1" label="PG粉重量" :formatter="crud.formatNum3" min-width="100" align="center" />
<el-table-column prop="out_qty2" label="残料" :formatter="crud.formatNum3" min-width="80" align="center" />
<el-table-column prop="out_qty3" label="总重量" :formatter="crud.formatNum3" min-width="80" align="center" />
</el-table-column>
<el-table-column prop="in_num" label="投入产出比/%" width="100" align="center" />
</el-table>
<!--分页组件-->
<pagination />
<!--表格渲染-->
<el-table ref="table2" v-loading="crud.loading" :data="tableDtl" size="mini" style="width: 100%;" @selection-change="crud.selectionChangeHandler">
<el-table-column type="index" label="序号" width="55" align="center" />
<el-table-column prop="pw_time" label="配粉日期" width="140" align="center" />
<el-table-column prop="material_code" label="物料编码" width="100" align="center" />
<el-table-column prop="old_mark" label="牌号" width="100" align="center" />
<el-table-column prop="pcsn" label="批号" width="100" align="center" />
<el-table-column prop="org_name" label="归属部门" width="100" align="center" />
<el-table-column label="投入(kg)" align="center">
<el-table-column label="原材料/kg" align="center">
<el-table-column prop="sum_qty1" label="碳化钨" :formatter="crud.formatNum3" min-width="100" align="center" />
<el-table-column prop="sum_qty2" label="钴粉" :formatter="crud.formatNum3" min-width="80" align="center" />
<el-table-column prop="sum_qty3" label="镍粉" :formatter="crud.formatNum3" min-width="80" align="center" />
<el-table-column prop="sum_qty4" label="碳化铬" :formatter="crud.formatNum3" min-width="100" align="center" />
<el-table-column prop="sum_qty5" label="碳化钒" :formatter="crud.formatNum3" min-width="80" align="center" />
<el-table-column prop="sum_qty6" label="碳化钽/铌" :formatter="crud.formatNum3" min-width="80" align="center" />
<el-table-column prop="sum_qty7" label="碳粉" :formatter="crud.formatNum3" min-width="100" align="center" />
<el-table-column prop="sum_qty8" label="钨粉" :formatter="crud.formatNum3" min-width="80" align="center" />
</el-table-column>
<el-table-column prop="sum_qty9" label="合计" :formatter="crud.formatNum3" min-width="100" align="center" />
<el-table-column label="二次粉" align="center">
<el-table-column prop="sum_qty10" label="PG粉" :formatter="crud.formatNum3" min-width="100" align="center" />
<el-table-column prop="sum_qty11" label="软废" :formatter="crud.formatNum3" min-width="80" align="center" />
</el-table-column>
<el-table-column label="成型剂" align="center">
<el-table-column prop="sum_qty12" label="PEG2000\PEG" :formatter="crud.formatNum3" min-width="120" align="center" />
<el-table-column prop="sum_qty13" label="石蜡/kg" :formatter="crud.formatNum3" min-width="80" align="center" />
<el-table-column prop="sum_qty14" label="白油" :formatter="crud.formatNum3" min-width="80" align="center" />
<el-table-column prop="sum_qty15" label="合计" :formatter="crud.formatNum3" min-width="100" align="center" />
</el-table-column>
<el-table-column prop="sum_qty16" label="投入汇总" :formatter="crud.formatNum3" min-width="100" align="center" />
</el-table-column>
<el-table-column label="投料工序流记录" align="center">
<el-table-column label="球磨" align="center">
<el-table-column prop="task_qty1" label="开工日期" :formatter="crud.formatNum3" min-width="100" align="center" />
<el-table-column prop="task_qty2" label="设备号" :formatter="crud.formatNum3" min-width="80" align="center" />
<el-table-column prop="task_qty3" label="操作人员" :formatter="crud.formatNum3" min-width="80" align="center" />
</el-table-column>
<el-table-column label="喷雾" align="center">
<el-table-column prop="task_qty4" label="计划日期" :formatter="crud.formatNum3" min-width="100" align="center" />
<el-table-column prop="task_qty5" label="执行日期" :formatter="crud.formatNum3" min-width="80" align="center" />
<el-table-column prop="task_qty6" label="设备号" :formatter="crud.formatNum3" min-width="100" align="center" />
<el-table-column prop="task_qty7" label="产出Kg" :formatter="crud.formatNum3" min-width="80" align="center" />
<el-table-column prop="task_qty8" label="操作人员" :formatter="crud.formatNum3" min-width="80" align="center" />
</el-table-column>
<el-table-column label="锤磨 压团 制粒" align="center">
<el-table-column prop="task_qty9" label="日期" :formatter="crud.formatNum3" min-width="80" align="center" />
<el-table-column prop="task_qty10" label="生产线号" :formatter="crud.formatNum3" min-width="80" align="center" />
<el-table-column prop="task_qty11" label="操作人员" :formatter="crud.formatNum3" min-width="100" align="center" />
</el-table-column>
</el-table-column>
<el-table-column label="产出" align="center">
<el-table-column prop="out_qty1" label="入库日期" :formatter="crud.formatNum3" min-width="100" align="center" />
<el-table-column prop="out_qty2" label="PG粉重量" :formatter="crud.formatNum3" min-width="100" align="center" />
</el-table-column>
</el-table>
</div>
</div>
</template>
<script>
import producetask from '@/api/wms/pdm/producetask'
import dailyplan from '@/api/wms/pdm/dailyplan'
import CRUD, { presenter, header, crud } from '@crud/crud'
import rrOperation from '@crud/RR.operation'
import pagination from '@crud/Pagination'
import crudOperation from '@crud/CRUD.operation'
import Date from '@/utils/datetime'
export default {
name: 'producttask',
dicts: ['product_mode', 'workorder_type2', 'planstatus'],
components: { rrOperation, crudOperation, pagination },
mixins: [presenter(), header(), crud()],
cruds() {
return CRUD({
title: '日计划按月统计',
url: 'api/dailyplan/querymouth',
idField: 'material_code',
sort: '',
query: { device_id: '' },
crudMethod: { ...dailyplan },
props: {
// 每页数据条数
size: 20
},
optShow: {
add: false,
edit: false,
del: false,
download: false,
reset: true
}})
},
data() {
return {
dialogVisible: false,
Devices: [],
form: {},
tableDtl: [],
query_flag: true,
rules: {
}}
},
computed: {
},
created() {
producetask.getDevices().then(res => {
this.Devices = res
})
this.crud.query.createTime = [new Date(), new Date().daysLater(0)]
},
methods: {
[CRUD.HOOK.beforeRefresh]() {
if(this.query_flag){
this.crud.query.begin_time = (new Date()).strftime('%F', 'zh')
this.crud.query.end_time = (new Date().daysLater(0)).strftime('%F', 'zh')
this.query_flag = false
}
return true
},
hand(value) {
this.crud.toQuery()
},
workorder_dateFormat(row) {
return row.workorder_date.substring(0, 10)
},
workorder_typeFormat(row) {
return this.dict.label.workorder_type2[row.workorder_type]
},
onInput() {
this.$forceUpdate()
},
MyQuery(value) {
this.crud.toQuery()
},
mytoQuery(array1){
if(array1 === null){
this.crud.query.begin_time = ''
this.crud.query.end_time = ''
}else{
this.crud.query.begin_time = array1[0]
this.crud.query.end_time = array1[1]
}
this.crud.toQuery()
},
querytable() {
this.crud.toQuery()
}
}
}
</script>
<style scoped>
</style>