This commit is contained in:
2022-08-23 08:50:49 +08:00
18 changed files with 184 additions and 39 deletions

View File

@@ -198,6 +198,7 @@ public class MaterialParametersServiceImpl implements MaterialParametersService
jsonProduc.put("technology_code", map.get("technology_code"));
jsonProduc.put("ball_rate", map.get("ball_rate"));
jsonProduc.put("liquid_rate", map.get("liquid_rate"));
json.put("standard_mark", map.get("standard_mark"));
producTab.insert(jsonProduc);
} else {
json.put("standard_weight", map.get("standard_weight"));
@@ -221,6 +222,7 @@ public class MaterialParametersServiceImpl implements MaterialParametersService
json.put("technology_code", map.get("technology_code"));
json.put("ball_rate", map.get("ball_rate"));
json.put("liquid_rate", map.get("liquid_rate"));
json.put("standard_mark", map.get("standard_mark"));
producTab.update(json);
}
JSONObject jsonMater = materTab.query("material_id = '" + material_id + "' and is_delete = '0'").uniqueResult(0);

View File

@@ -1,10 +1,10 @@
[交易说明]
交易名: 产品参数分页查询
所属模块:
功能简述:
版权所有:
表引用:
版本经历:
所属模块:
功能简述:
版权所有:
表引用:
版本经历:
[数据库]
--指定数据库为空采用默认值默认为db.properties中列出的第一个库
@@ -22,26 +22,26 @@
[临时表]
--这边列出来的临时表就会在运行期动态创建
[临时变量]
--所有中间过程变量均可在此处定义
[业务过程]
##########################################
# 1、输入输出检查 #
##########################################
##########################################
# 2、主过程前处理 #
##########################################
##########################################
# 3、业务主过程 #
##########################################
IF 输入.flag = "1"
PAGEQUERY
SELECT
@@ -58,6 +58,7 @@
s.is_pure,
s.is_need_move AS stock_is_need_move,
p.old_mark,
p.standard_mark,
p.product_mode,
p.is_auto_open,
p.waste_limit_down,

View File

@@ -73,7 +73,11 @@ public class DailyplanServiceImpl implements DailyplanService {
String plan_finish_date = jo.getString("plan_finish_date");
Date date2 = DateUtil.parse(plan_finish_date);
long days = (int) DateUtil.between(date2,date, DateUnit.DAY);
jo.put("day_num",days);
if(date2.getTime() >= date.getTime()){
jo.put("day_num",days);
}else{
jo.put("day_num",-days);
}
ja.add(jo);
}
jret.put("content",ja);
@@ -108,7 +112,11 @@ public class DailyplanServiceImpl implements DailyplanService {
String plan_finish_date = jo.getString("plan_finish_date");
Date date2 = DateUtil.parse(plan_finish_date);
long days = (int) DateUtil.between(date2,date, DateUnit.DAY);
jo.put("day_num",days);
if(date2.getTime() >= date.getTime()){
jo.put("day_num",days);
}else{
jo.put("day_num",-days);
}
ja.add(jo);
}
return ja;
@@ -275,6 +283,7 @@ public class DailyplanServiceImpl implements DailyplanService {
new_jo.put("planstart_time",jo.getString("planstart_date").substring(0,10)+" 08:00:00");
new_jo.put("planend_time",jo.getString("planend_date").substring(0,10)+" 23:59:59");
new_jo.put("status","10");
new_jo.put("create_mode","03");
new_jo.put("source_bill_id",jo.getString("dailyplan_id"));
new_jo.put("source_bill_type",jo.getString("workorder_type"));
new_jo.put("source_bill_code",jo.getString("plan_code"));

View File

@@ -107,9 +107,9 @@ public class WorkOrderServiceImpl implements WorkOrdereService {
for(int i=0;i<pcsn_num;i++){
JSONObject jo = this.createPcsn(json);
pcsn = jo.getString("pcsn");
JSONObject old = mstTab.query("is_delete='0' and status<>'99' and material_id='"+material_id+"' and pcsn='"+pcsn+"'").uniqueResult(0);
JSONObject old = mstTab.query("is_delete='0' and material_id='"+material_id+"' and pcsn='"+pcsn+"'").uniqueResult(0);
if(old!=null){
throw new BadRequestException("已存在相同产品和批次的未完成工令!");
throw new BadRequestException("已存在相同产品牌号和批次的工令!");
}
json.put("pcsn", pcsn);
String product_series_id = json.getString("product_series_id");
@@ -146,9 +146,9 @@ public class WorkOrderServiceImpl implements WorkOrdereService {
String material_id = whereJson.getString("material_id");
String pcsn = whereJson.getString("pcsn");
String workorder_id = whereJson.getString("workorder_id");
JSONObject old = mstTab.query("is_delete='0' and status<>'99' and material_id='"+material_id+"' and pcsn='"+pcsn+"' and workorder_id<>'"+workorder_id+"'").uniqueResult(0);
JSONObject old = mstTab.query("is_delete='0' and material_id='"+material_id+"' and pcsn='"+pcsn+"' and workorder_id<>'"+workorder_id+"'").uniqueResult(0);
if(old!=null){
throw new BadRequestException("已存在相同产品和批次的未完成工令!");
throw new BadRequestException("已存在相同产品牌号和批次的工令!");
}
String product_series_id = whereJson.getString("product_series_id");
if (StrUtil.isEmpty(product_series_id)) {
@@ -688,9 +688,9 @@ public class WorkOrderServiceImpl implements WorkOrdereService {
if (ObjectUtil.isEmpty(mater)) {
throw new BadRequestException("成品物料扩展信息查询失败!");
}
String old_mark = mater.getString("old_mark");
if(StrUtil.isEmpty(old_mark)){
throw new BadRequestException("成品物料扩展信息表牌号不能为空!");
String standard_mark = mater.getString("standard_mark");
if(StrUtil.isEmpty(standard_mark)){
throw new BadRequestException("成品物料扩展信息表标准牌号不能为空!");
}
WQLObject pdm_bi_productdeptpcsn = WQLObject.getWQLObject("pdm_bi_productdeptpcsn");
JSONObject org = pdm_bi_productdeptpcsn.query("org_id='"+org_id+"'").uniqueResult(0);
@@ -712,7 +712,7 @@ public class WorkOrderServiceImpl implements WorkOrdereService {
WQLObject PDM_BI_BrandMaxPCSN = WQLObject.getWQLObject("PDM_BI_BrandMaxPCSN");
DateTime now = DateTime.now();
String year = now.year()+"";
JSONObject jo_pcsn = PDM_BI_BrandMaxPCSN.query("brand_code='"+old_mark+"' and year='"+year+"' and org_id='"+org_id+"'").uniqueResult(0);
JSONObject jo_pcsn = PDM_BI_BrandMaxPCSN.query("brand_code='"+standard_mark+"' and year='"+year+"' and org_id='"+org_id+"'").uniqueResult(0);
JSONObject ret = new JSONObject();
if(jo_pcsn==null){
String value = "";
@@ -775,18 +775,18 @@ public class WorkOrderServiceImpl implements WorkOrdereService {
if (ObjectUtil.isEmpty(mater)) {
throw new BadRequestException("成品物料扩展信息查询失败!");
}
String old_mark = mater.getString("old_mark");
if(StrUtil.isEmpty(old_mark)){
throw new BadRequestException("成品物料扩展信息表牌号不能为空!");
String standard_mark = mater.getString("standard_mark");
if(StrUtil.isEmpty(standard_mark)){
throw new BadRequestException("成品物料扩展信息表标准牌号不能为空!");
}
WQLObject PDM_BI_BrandMaxPCSN = WQLObject.getWQLObject("PDM_BI_BrandMaxPCSN");
DateTime now = DateTime.now();
String year = now.year()+"";
JSONObject jo_pcsn = PDM_BI_BrandMaxPCSN.query("brand_code='"+old_mark+"' and year='"+year+"' and org_id='"+org_id+"'").uniqueResult(0);
JSONObject jo_pcsn = PDM_BI_BrandMaxPCSN.query("brand_code='"+standard_mark+"' and year='"+year+"' and org_id='"+org_id+"'").uniqueResult(0);
if(jo_pcsn == null){
JSONObject ret = new JSONObject();
ret.put("brandmax_id", IdUtil.getSnowflake(1, 1).nextId());
ret.put("brand_code",old_mark);
ret.put("brand_code",standard_mark);
ret.put("year",year);
ret.put("org_id",org_id);
int length = param.getInteger("value");

View File

@@ -27,7 +27,7 @@
输入.device_id TYPEAS s_string
输入.pcsn TYPEAS s_string
输入.device_code TYPEAS s_string
输入.create_mode TYPEAS s_string
[临时表]
--这边列出来的临时表就会在运行期动态创建
@@ -83,6 +83,9 @@
OPTION 输入.status <> ""
WorkOrder.status = 输入.status
ENDOPTION
OPTION 输入.create_mode <> ""
WorkOrder.create_mode = 输入.create_mode
ENDOPTION
OPTION 输入.workorder_type <> ""
WorkOrder.workorder_type = 输入.workorder_type
ENDOPTION
@@ -142,6 +145,9 @@
ENDOPTION
OPTION 输入.pcsn <> ""
WorkOrder.pcsn like 输入.pcsn
ENDOPTION
OPTION 输入.create_mode <> ""
WorkOrder.create_mode = 输入.create_mode
ENDOPTION
OPTION 输入.workorder_type <> ""
WorkOrder.workorder_type = 输入.workorder_type

View File

@@ -80,7 +80,7 @@ public class FormulaServiceImpl implements FormulaService {
if (StrUtil.isNotEmpty(material_id)) {
map.put("material_id", "%" + material_id + "%");
}
JSONObject json = WQL.getWO("QPF_FORMULA01").addParamMap(map).pageQuery(WqlUtil.getHttpContext(page), "formula_code");
JSONObject json = WQL.getWO("QPF_FORMULA01").addParamMap(map).pageQuery(WqlUtil.getHttpContext(page), "Formula.create_time desc");
return json;
}
@Override
@@ -714,7 +714,8 @@ public class FormulaServiceImpl implements FormulaService {
HashMap<String, Object> oneMap = new HashMap<>();
// 工令相关
oneMap.put("workorder_code", jsonWork.getString("workorder_code"));
String workorder_code = jsonWork.getString("workorder_code");
oneMap.put("workorder_code", workorder_code.substring(workorder_code.length() - 9));
oneMap.put("material_code", jsonMater.getString("material_code"));
if (ObjectUtil.isNotEmpty(jsonDept)) oneMap.put("dept_name", jsonDept.getString("name"));
if (ObjectUtil.isNotEmpty(jsonMaterExt)) oneMap.put("old_mark", jsonMaterExt.getString("old_mark"));

View File

@@ -296,8 +296,9 @@ public class PhysicalMstServiceImpl implements PhysicalMstService {
json.put("remark", jsonDtl.getString("remark"));
json.put("is_ok", jsonDtl.getString("is_ok"));
} else {
String down_limit = json.getString("down_limit");
if (ObjectUtil.isNotEmpty(down_limit)) json.put("value",down_limit);
// 获取默认检测值 默认为下限检测值
// String down_limit = json.getString("down_limit");
// if (ObjectUtil.isNotEmpty(down_limit)) json.put("value",down_limit);
}
}
form.put("tableData", arr);

View File

@@ -74,6 +74,7 @@
<el-table-column prop="stock_is_report" label="原料是否生成理化报告" width="150px" :formatter="stockIsReport"/>
<el-table-column prop="wc_seqno" label="原料碳化钨顺序号" width="120px"/>
<el-table-column prop="old_mark" label="原牌号"/>
<el-table-column prop="standard_mark" label="标准牌号"/>
<el-table-column prop="product_mode" label="生产方式" :formatter="formatProductMode"/>
<el-table-column prop="is_auto_open" label="是否允许自动开单" width="120px" :formatter="isAutoOpen"/>
<el-table-column prop="waste_limit_down" label="软废添加比列下限" width="120px"/>

View File

@@ -211,20 +211,25 @@
<el-input-number :precision="2" :step="0.1" v-model="formData.liquid_rate" :controls="false" style="width: 200px;"/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="标准牌号">
<el-input v-model="formData.standard_mark" style="width: 200px;" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="是否允许自动开单" prop="is_auto_open">
<el-radio v-model="formData.is_auto_open" label="0"></el-radio>
<el-radio v-model="formData.is_auto_open" label="1"></el-radio>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="是否二次投料" prop="is_again_put">
<el-radio v-model="formData.is_again_put" label="0"></el-radio>
<el-radio v-model="formData.is_again_put" label="1"></el-radio>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="是否生成理化报告" prop="is_report">
<el-radio v-model="formData.is_report" label="0"></el-radio>

View File

@@ -179,7 +179,7 @@
<el-table-column prop="product_weight" label="需求重量" :formatter="crud.formatNum3"/>
<el-table-column prop="fact_weight" label="生产重量" :formatter="crud.formatNum3" width="150" align="center">
<template scope="scope">
<el-input-number size="mini" v-model="scope.row.fact_weight" :precision="3" :controls="false" :min="1" style="width: 120px" />
<el-input-number size="mini" v-model="scope.row.fact_weight" :precision="3" :controls="false" :min="1" style="width: 120px" :disabled="scope.row.is_proc > 0" />
</template>
</el-table-column>
<el-table-column prop="weight_unit_name" label="单位"/>

View File

@@ -137,6 +137,7 @@ const defaultForm = {
pcsn:'',
org_id:'',
status: '10',
create_mode: '01',
product_series_id:'',
workorder_qty: '500',
workorder_type: '01',

View File

@@ -169,6 +169,22 @@
/>
</el-select>
</el-form-item>
<el-form-item label="生成方式" prop="create_mode">
<el-select
v-model="form.create_mode"
placeholder=""
style="width: 210px"
class="filter-item"
disabled
>
<el-option
v-for="item in dict.ST_CREATE_MODE"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
<el-form-item label="出粉率" prop="product_rate">
<label slot="label">出粉率(%):</label>
<el-input v-model="form.product_rate" style="width: 210px" disabled />
@@ -246,7 +262,7 @@ export default {
type: Object
}
},
dicts: ['workorder_status', 'workorder_type', 'product_series', 'finish_type'],
dicts: ['workorder_status', 'workorder_type', 'product_series', 'finish_type', 'ST_CREATE_MODE'],
data() {
return {
dialogVisible: false,

View File

@@ -76,7 +76,23 @@
/>
</el-select>
</el-form-item>
<el-form-item label="生成方式">
<el-select
v-model="query.create_mode"
clearable
size="mini"
placeholder="生成方式"
class="filter-item"
@change="crud.toQuery"
>
<el-option
v-for="item in dict.ST_CREATE_MODE"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
<el-form-item label="所属组织">
<el-select
v-model="query.org_id"
@@ -245,6 +261,7 @@
<el-table-column min-width="100" prop="source_bill_type" :formatter="workorder_typeFormat2" label="源类型" />
<el-table-column prop="source_bill_code" label="来源单据编号" min-width="100" />
<el-table-column min-width="90" prop="workprocedure_id" label="当前工序" :formatter="seriesFormat2" />
<el-table-column :formatter="create_modeFormat" min-width="170" prop="create_mode" label="生成方式" />
<el-table-column prop="startwork_name" min-width="80" label="开工人"/>
<el-table-column prop="endwork_name" min-width="80" label="完工人"/>
<el-table-column prop="create_name" min-width="80" label="创建人"/>
@@ -292,7 +309,7 @@ export default {
},
mixins: [presenter(), header(), crud()],
// 数据字典
dicts: ['workorder_status', 'workorder_type', 'product_series', 'workorder_type2'],
dicts: ['workorder_status', 'workorder_type', 'product_series', 'workorder_type2', 'ST_CREATE_MODE'],
data() {
return {
height: document.documentElement.clientHeight - 180 + 'px;',
@@ -392,6 +409,9 @@ export default {
stateFormat(row) {
return this.dict.label.workorder_status[row.status]
},
create_modeFormat(row) {
return this.dict.label.ST_CREATE_MODE[row.create_mode]
},
bill_typeFormat(row) {
return this.dict.label.workorder_type[row.workorder_type]
},

View File

@@ -75,6 +75,23 @@
/>
</el-select>
</el-form-item>
<el-form-item label="生成方式">
<el-select
v-model="query.create_mode"
clearable
size="mini"
placeholder="生成方式"
class="filter-item"
@change="crud.toQuery"
>
<el-option
v-for="item in dict.ST_CREATE_MODE"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
<el-form-item label="批次">
<el-input
v-model="query.pcsn"
@@ -136,6 +153,7 @@
<el-table-column prop="pcsn" min-width="130" label="批次"/>
<el-table-column prop="workorder_qty" min-width="100" label="重量" :formatter="crud.formatNum3"/>
<el-table-column prop="bill_qty" min-width="100" label="开单总重量" :formatter="crud.formatNum3" />
<el-table-column :formatter="create_modeFormat" min-width="170" prop="create_mode" label="生成方式" />
<el-table-column prop="qty_unit_name" min-width="100" label="单位"/>
<el-table-column prop="formula_time" min-width="150" label="开单时间"/>
<el-table-column prop="formula_name" min-width="150" label="开单人"/>
@@ -176,7 +194,7 @@ export default {
},
mixins: [presenter(), header(), crud()],
// 数据字典
dicts: ['workorder_status', 'workorder_type', 'product_series'],
dicts: ['workorder_status', 'workorder_type', 'product_series', 'ST_CREATE_MODE'],
data() {
return {
height: document.documentElement.clientHeight - 180 + 'px;',
@@ -279,6 +297,9 @@ export default {
this.changeShow = true
})
},
create_modeFormat(row) {
return this.dict.label.ST_CREATE_MODE[row.create_mode]
},
autoAll(){
this.checkrows = this.$refs.table.selection
autoformula.autoAll({rows:this.checkrows}).then(res => {

View File

@@ -470,6 +470,37 @@ export default {
},
onSubmit() {
const msg = '是否继续!'
const data = this.form1.tableData
var flag = 0
for (var row of data) {
if (!row.value) {
flag = flag + 1
}
}
// 如果检测值一项都没填则提示是否继续
if (flag === data.length) {
this.$confirm(msg, '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
crudPhysicalMst.saveResult(this.form1).then(res => {
this.close()
this.crud.toQuery()
this.notify('操作成功', 'success')
})
})
} else {
crudPhysicalMst.saveResult(this.form1).then(res => {
this.close()
this.crud.toQuery()
this.notify('操作成功', 'success')
})
}
},
onSubmit2() {
const data = this.form1.tableData
var flag = 0
for (var row of data) {

View File

@@ -475,8 +475,38 @@ export default {
format_inspection_item_type(row, column) {
return this.dict.label.QL_TEST_POINTTYPE[row.inspection_item_type]
},
onSubmit() {
const msg = '是否继续!'
const data = this.form1.tableData
var flag = 0
for (var row of data) {
if (!row.value) {
flag = flag + 1
}
}
// 如果检测值一项都没填则提示是否继续
if (flag === data.length) {
this.$confirm(msg, '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
crudPhysicalMst.saveResult(this.form1).then(res => {
this.close()
this.crud.toQuery()
this.notify('操作成功', 'success')
})
})
} else {
crudPhysicalMst.saveResult(this.form1).then(res => {
this.close()
this.crud.toQuery()
this.notify('操作成功', 'success')
})
}
},
onSubmit2() {
const data = this.form1.tableData
var flag = 0
for (var row of data) {