手动开单优化

This commit is contained in:
zds
2022-06-30 21:36:15 +08:00
parent 37a01777a6
commit c1faf249fd
6 changed files with 252 additions and 150 deletions

View File

@@ -31,7 +31,9 @@ public enum MaterOptTypeEnum {
RD_AND_PG(20, "21", "pg粉和软废", "('1503644362108702720','1503644362150645760')", ""), RD_AND_PG(20, "21", "pg粉和软废", "('1503644362108702720','1503644362150645760')", ""),
YL_AND_BCP(21, "22", "原料和半成品", "('1503644353019645952','1503644359155912704')", ""), YL_AND_BCP(21, "22", "原料和半成品", "('1503644353019645952','1503644359155912704')", ""),
SPARE(22, "23", "备品备件", "('1503644361789935616')", ""), SPARE(22, "23", "备品备件", "('1503644361789935616')", ""),
SBGZ(23, "24", "设备故障", "('1541964046385942528')", ""); SBGZ(23, "24", "设备故障", "('1541964046385942528')", ""),
TJJ_AND_OTHER(24, "22", "添加剂和其他有色金属粉", "('1503644361697660928','1503644362838511616')", "");
//顺序号 //顺序号

View File

@@ -29,8 +29,8 @@ public class InitformulaController {
@GetMapping("/queryivt") @GetMapping("/queryivt")
@Log("查询工令") @Log("查询工令")
@ApiOperation("查询工令") @ApiOperation("查询工令")
public ResponseEntity<Object> queryivt(@RequestParam Map whereJson){ public ResponseEntity<Object> queryivt(@RequestParam Map whereJson, Pageable page){
return new ResponseEntity<>(initformulaService.queryAll(whereJson),HttpStatus.OK); return new ResponseEntity<>(initformulaService.queryAll(whereJson,page),HttpStatus.OK);
} }
@GetMapping("/queryivt2") @GetMapping("/queryivt2")
@Log("查询工令") @Log("查询工令")

View File

@@ -11,11 +11,12 @@ import java.util.Map;
public interface InitformulaService { public interface InitformulaService {
/** /**
* 查询数据分页 * 查询数据分页
* @param whereJson 条件 * @param whereJson 条件
* @return Map<String,Object> * @param page 分页参数
*/ * @return Map<String,Object>
JSONArray queryAll(Map whereJson); */
Map<String, Object> queryAll(Map whereJson, Pageable page);
/** /**
* 查询数据分页 * 查询数据分页
* @param whereJson 条件 * @param whereJson 条件

View File

@@ -34,13 +34,20 @@ import java.util.Map;
public class InitformulaServiceImpl implements InitformulaService { public class InitformulaServiceImpl implements InitformulaService {
@Override @Override
public JSONArray queryAll(Map whereJson) { public Map<String, Object> queryAll(Map whereJson, Pageable page) {
HashMap<String, String> map = new HashMap<>(whereJson); HashMap<String, String> map = new HashMap<>(whereJson);
map.put("flag", "1"); map.put("flag", "1");
JSONArray json = WQL.getWO("QPF_INITFORMULA01").addParamMap(map).process().getResultJSONArray(0); JSONObject ret_jo = WQL.getWO("QPF_INITFORMULA01").addParamMap(map).pageQuery(WqlUtil.getHttpContext(page), "structivt.material_id");
double workorder_qty = Double.valueOf(map.get("workorder_qty")); JSONArray json = ret_jo.getJSONArray("content");
double standard_rate = Double.valueOf(map.get("standard_rate"));
JSONArray ja = new JSONArray(); JSONArray ja = new JSONArray();
double workorder_qty = 0;
double standard_rate = 0;
if(map.containsKey("workorder_qty")){
workorder_qty = Double.valueOf(map.get("workorder_qty"));
}
if(map.containsKey("standard_rate")){
standard_rate = Double.valueOf(map.get("standard_rate"));
}
for(int i=0;i<json.size();i++){ for(int i=0;i<json.size();i++){
JSONObject jo = json.getJSONObject(i); JSONObject jo = json.getJSONObject(i);
//需配总量 //需配总量
@@ -72,7 +79,8 @@ public class InitformulaServiceImpl implements InitformulaService {
} }
ja.add(jo); ja.add(jo);
} }
return ja; ret_jo.put("content",ja);
return ret_jo;
} }
@Override @Override
public Map<String, Object> queryAll2(Map whereJson,Pageable page) { public Map<String, Object> queryAll2(Map whereJson,Pageable page) {
@@ -176,7 +184,7 @@ public class InitformulaServiceImpl implements InitformulaService {
@Override @Override
public JSONArray queryAll4(Map whereJson) { public JSONArray queryAll4(Map whereJson) {
HashMap<String, String> map = new HashMap<>(whereJson); HashMap<String, String> map = new HashMap<>(whereJson);
map.put("flag", "7"); map.put("flag", "77");
String material_code = map.get("material_code"); String material_code = map.get("material_code");
if (StrUtil.isNotEmpty(material_code)) { if (StrUtil.isNotEmpty(material_code)) {
map.put("material_code", "%" + material_code + "%"); map.put("material_code", "%" + material_code + "%");
@@ -189,18 +197,19 @@ public class InitformulaServiceImpl implements InitformulaService {
} }
double workorder_qty = Double.valueOf(map.get("workorder_qty")); double workorder_qty = Double.valueOf(map.get("workorder_qty"));
map.put("bom_id", bom.getString("bom_id")); map.put("bom_id", bom.getString("bom_id"));
map.put("material_ids", MaterOptTypeEnum.TJJ_AND_OTHER.getClass_idStr());
JSONArray json = WQL.getWO("QPF_INITFORMULA01").addParamMap(map).process().getResultJSONArray(0); JSONArray json = WQL.getWO("QPF_INITFORMULA01").addParamMap(map).process().getResultJSONArray(0);
JSONArray ja = new JSONArray(); // JSONArray ja = new JSONArray();
for(int i=0;i<json.size();i++){ // for(int i=0;i<json.size();i++){
JSONObject jo = json.getJSONObject(i); // JSONObject jo = json.getJSONObject(i);
if(StrUtil.isNotEmpty(jo.getString("mater_standard_rate"))){ // if(StrUtil.isNotEmpty(jo.getString("mater_standard_rate"))){
double mater_standard_rate = jo.getDouble("mater_standard_rate"); // double mater_standard_rate = jo.getDouble("mater_standard_rate");
//需配总量 // //需配总量
jo.put("need_sum_qty",workorder_qty*mater_standard_rate/100.0); // jo.put("need_sum_qty",workorder_qty*mater_standard_rate/100.0);
} // }
ja.add(jo); // ja.add(jo);
} // }
return ja; return json;
} }
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@@ -861,7 +870,13 @@ public class InitformulaServiceImpl implements InitformulaService {
@Override @Override
public JSONArray getlist(Map json) { public JSONArray getlist(Map json) {
HashMap<String, String> map = new HashMap<>(json); HashMap<String, String> map = new HashMap<>(json);
map.put("flag", "2"); String is_bom = map.get("is_bom");
if("true".equals(is_bom)){
map.put("flag", "2");
}else{
map.put("flag", "22");
map.put("material_ids", MaterOptTypeEnum.THW_AND_GF.getClass_idStr());
}
JSONArray ret = WQL.getWO("QPF_INITFORMULA01").addParamMap(map).process().getResultJSONArray(0); JSONArray ret = WQL.getWO("QPF_INITFORMULA01").addParamMap(map).process().getResultJSONArray(0);
if(ret.size() == 0){ if(ret.size() == 0){
throw new BadRequestException("当前bom明细查询失败"); throw new BadRequestException("当前bom明细查询失败");

View File

@@ -50,7 +50,7 @@
########################################## ##########################################
IF 输入.flag = "1" IF 输入.flag = "1"
QUERY PAGEQUERY
SELECT SELECT
structivt.*, structivt.*,
mb.material_name, mb.material_name,
@@ -127,7 +127,7 @@
structivt.is_active = 输入.is_active structivt.is_active = 输入.is_active
ENDOPTION ENDOPTION
ENDSELECT ENDSELECT
ENDQUERY ENDPAGEQUERY
ENDIF ENDIF
@@ -156,6 +156,28 @@
ENDQUERY ENDQUERY
ENDIF ENDIF
IF 输入.flag = "22"
QUERY
SELECT
mb.material_id,
mb.material_name,
'' AS prior_level,
0 AS standard_rate,
0 AS seqno
FROM
md_me_materialbase mb
LEFT JOIN md_me_stockmaterialext stockmaterialext ON mb.material_id = stockmaterialext.material_id
WHERE
mb.is_delete = '0'
and stockmaterialext.is_need_move = '1'
OPTION 输入.material_ids <> ""
mb.material_type_id in 输入.material_ids
ENDOPTION
order by mb.material_type_id
ENDSELECT
ENDQUERY
ENDIF
IF 输入.flag = "3" IF 输入.flag = "3"
QUERY QUERY
SELECT SELECT
@@ -502,6 +524,31 @@
ENDQUERY ENDQUERY
ENDIF ENDIF
IF 输入.flag = "77"
QUERY
SELECT
mb.*, stockmaterialext.is_need_move,
measureunit.unit_name AS qty_unit_name,
mb.base_unit_id AS qty_unit_id,
classstandard.class_name,
classstandard.class_code
FROM
md_me_materialbase mb
LEFT JOIN md_me_stockmaterialext stockmaterialext ON mb.material_id = stockmaterialext.material_id
LEFT JOIN md_pb_classstandard classstandard ON classstandard.class_id = mb.material_type_id
LEFT JOIN md_pb_measureunit measureunit ON measureunit.measure_unit_id = mb.base_unit_id
WHERE
1 = 1 and stockmaterialext.is_need_move='0'
OPTION 输入.material_code <> ""
mb.material_code like 输入.material_code
ENDOPTION
OPTION 输入.material_ids <> ""
mb.material_type_id in 输入.material_ids
ENDOPTION
ENDSELECT
ENDQUERY
ENDIF
IF 输入.flag = "8" IF 输入.flag = "8"
PAGEQUERY PAGEQUERY
SELECT SELECT

View File

@@ -19,121 +19,152 @@
</span> </span>
</div> </div>
</span> </span>
<!-- 搜索 --> <div class="head-container">
<el-row> <div >
<el-col :span="6"> <el-form
产品bom物料 <el-select :inline="true"
v-model="query.material_id" class="demo-form-inline"
placeholder="产品bom物料" label-position="right"
@change="storChange" label-width="120px"
> label-suffix=":"
<el-option
v-for="item in mateList"
:key="item.material_id"
:label="item.material_name"
:value="item.material_id"
/>
</el-select>
</el-col>
<el-col :span="6">
配粉序号<el-input
v-model="query.seq_no"
disabled
style="width: 200px"
size="mini"
placeholder="配粉序号"
class="filter-item"
/>
</el-col>
<el-col :span="6">
含量(%)<el-input
v-model="query.standard_rate"
disabled
style="width: 200px"
size="mini"
placeholder="含量%"
class="filter-item"
/>
</el-col>
</el-row>
<el-row style="padding-top: 10px;padding-bottom: 10px;">
<el-col :span="6">
最低库存等级<el-select
v-model="query.ivt_level"
placeholder="最低库存等级"
clearable
> >
<el-option <el-form-item label="产品bom物料">
v-for="item in dict.ST_IVT_LEVEL" <el-select
:key="item.id" v-model="query.material_id"
:label="item.label" placeholder="产品bom物料"
:value="item.value" @change="storChange"
/> >
</el-select> <el-option
</el-col> v-for="item in mateList"
<el-col :span="6"> :key="item.material_id"
品质类型<el-select :label="item.material_name"
v-model="query.quality_scode" :value="item.material_id"
placeholder="品质类型" />
clearable </el-select>
> </el-form-item>
<el-option <el-form-item>
v-for="item in dict.ST_QUALITY_SCODE" <el-checkbox v-model="query.is_bom" @change="storChange2">参考bom</el-checkbox>
:key="item.id" </el-form-item>
:label="item.label" <el-form-item label="配粉序号">
:value="item.value" <el-input
/> v-model="query.seq_no"
</el-select> disabled
</el-col> style="width: 200px"
<el-col :span="6"> size="mini"
是否可用<el-select placeholder="配粉序号"
v-model="query.is_active" class="filter-item"
placeholder="是否可用" />
clearable </el-form-item>
> <el-form-item label="含量(%)">
<el-option <el-input
v-for="item in dict.is_usable" v-model="query.standard_rate"
:key="item.id" disabled
:label="item.label" style="width: 200px"
:value="item.value" size="mini"
/> placeholder="含量%"
</el-select> class="filter-item"
</el-col> />
<el-col :span="6"> </el-form-item>
<el-button class="filter-item" size="mini" type="success" icon="el-icon-search" @click="queryStruct">搜索</el-button> <el-form-item label="最低库存等级">
</el-col> <el-select
</el-row> v-model="query.ivt_level"
<!--表格渲染--> placeholder="最低库存等级"
<el-table clearable
ref="table" >
:data="tableDtl" <el-option
style="width: 100%;" v-for="item in dict.ST_IVT_LEVEL"
border :key="item.id"
:highlight-current-row="true" :label="item.label"
:header-cell-style="{background:'#f5f7fa',color:'#606266'}" :value="item.value"
> />
<el-table-column type="selection" width="55" /> </el-select>
<el-table-column prop="material_name" label="物料名称" align="center" /> </el-form-item>
<el-table-column prop="material_code" label="物料编码" align="center" /> <el-form-item label="品质类型">
<el-table-column prop="pcsn" label="批次号" align="center" /> <el-select
<el-table-column prop="quality_scode" label="品质类型" align="center" width="110px" :formatter="quality_scodeFormat" /> v-model="query.quality_scode"
<el-table-column prop="ivt_level" label="库存等级" align="center" width="100px" :formatter="ivt_levelFormat" /> placeholder="品质类型"
<el-table-column prop="is_active" label="是否可用" align="center" width="110px" :formatter="is_activeFormat" /> clearable
<el-table-column prop="sum_ivt_qty" label="库存重量" :formatter="crud.formatNum3" align="center" /> >
<el-table-column prop="need_sum_qty" label="需配重量(KG)" :formatter="crud.formatNum3" align="center" /> <el-option
<el-table-column prop="qty_unit_name" label="单位" align="center" /> v-for="item in dict.ST_QUALITY_SCODE"
</el-table> :key="item.id"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
<el-form-item label="是否可用">
<el-select
v-model="query.is_active"
placeholder="是否可用"
clearable
>
<el-option
v-for="item in dict.is_usable"
:key="item.id"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
<rrOperation />
</el-form>
</div>
<!--表格渲染-->
<el-table
ref="table"
v-loading="crud.loading"
:data="crud.data"
style="width: 100%;"
border
:highlight-current-row="true"
:header-cell-style="{background:'#f5f7fa',color:'#606266'}"
>
<el-table-column type="selection" width="55" />
<el-table-column prop="material_name" label="物料名称" align="center" />
<el-table-column prop="material_code" label="物料编码" align="center" />
<el-table-column prop="pcsn" label="批次号" align="center" />
<el-table-column prop="quality_scode" label="品质类型" align="center" width="110px" :formatter="quality_scodeFormat" />
<el-table-column prop="ivt_level" label="库存等级" align="center" width="100px" :formatter="ivt_levelFormat" />
<el-table-column prop="is_active" label="是否可用" align="center" width="110px" :formatter="is_activeFormat" />
<el-table-column prop="sum_ivt_qty" label="库存重量" :formatter="crud.formatNum3" align="center" />
<el-table-column prop="need_sum_qty" label="需配重量(KG)" :formatter="crud.formatNum3" align="center" />
<el-table-column prop="qty_unit_name" label="单位" align="center" />
</el-table>
<!--分页组件-->
<pagination />
</div>
</el-dialog> </el-dialog>
</template> </template>
<script> <script>
import CRUD, { header} from '@crud/crud' import CRUD, {crud, header, presenter} from '@crud/crud'
import initformula from "@/api/wms/pf/initformula" import pagination from "@crud/Pagination";
import rrOperation from "@crud/RR.operation";
import crudOperation from "@crud/CRUD.operation";
import initformula from "@/api/wms/pf/initformula";
export default { export default {
name: 'StructIvt', name: 'StructIvt',
mixins: [header()], components: { pagination, rrOperation, crudOperation },
mixins: [presenter(), header(), crud()],
cruds() {
return CRUD({
url: 'api/initformula/queryivt',
idField: 'material_id',
sort: 'material_id',
optShow: {
add: false,
edit: false,
del: false,
download: false,
reset: false
},
query:{
is_bom: true, bom_material_id: '', material_id: '', quality_scode: '01', ivt_level: '', is_active: '1', seq_no: '', standard_rate: '',workorder_qty:'0'
}
})
},
dicts: ['ST_QUALITY_SCODE', 'ST_IVT_LEVEL', 'is_usable'], dicts: ['ST_QUALITY_SCODE', 'ST_IVT_LEVEL', 'is_usable'],
props: { props: {
dialogShow: { dialogShow: {
@@ -147,10 +178,8 @@ export default {
data() { data() {
return { return {
dialogVisible: false, dialogVisible: false,
queryrow: {},
mateList: [], mateList: [],
tableDtl:[], queryrow: {},
query: { material_id: '', quality_scode: '01', ivt_level: '', is_active: '1', seq_no: '', standard_rate: '',workorder_qty:'0' },
rows: [] rows: []
} }
}, },
@@ -168,31 +197,39 @@ export default {
}, },
methods: { methods: {
open() { open() {
initformula.getlist({'material_id': this.queryrow.material_id}).then(res => { initformula.getlist({'material_id': this.queryrow.material_id, 'is_bom': true}).then(res => {
this.mateList = res this.mateList = res
if(this.mateList.length != 0){ if(this.mateList.length != 0){
this.query.seq_no = this.mateList[0].seqno this.crud.query.workorder_qty = this.queryrow.workorder_qty
this.query.standard_rate = this.mateList[0].standard_rate this.crud.query.seq_no = this.mateList[0].seqno
this.query.ivt_level = this.mateList[0].prior_level this.crud.query.standard_rate = this.mateList[0].standard_rate
this.query.material_id = this.mateList[0].material_id this.crud.query.ivt_level = this.mateList[0].prior_level
this.crud.query.material_id = this.mateList[0].material_id
} }
this.queryStruct() this.crud.toQuery()
}) })
}, },
storChange(row) { storChange(row) {
for (let i = 0; i < this.mateList.length; i++) { for (let i = 0; i < this.mateList.length; i++) {
const material_id = this.mateList[i].material_id const material_id = this.mateList[i].material_id
if(material_id===row){ if(material_id === row){
this.query.seq_no = this.mateList[i].seqno this.query.seq_no = this.mateList[i].seqno
this.query.standard_rate = this.mateList[i].standard_rate this.query.standard_rate = this.mateList[i].standard_rate
this.query.ivt_level = this.mateList[i].prior_level this.query.ivt_level = this.mateList[i].prior_level
} }
} }
}, },
queryStruct() { storChange2(row) {
this.query.workorder_qty = this.queryrow.workorder_qty initformula.getlist({'material_id': this.queryrow.material_id, 'is_bom': row}).then(res => {
initformula.queryivt(this.query).then(res => { this.mateList = res
this.tableDtl = res if(this.mateList.length != 0){
this.crud.query.workorder_qty = this.queryrow.workorder_qty
this.crud.query.seq_no = this.mateList[0].seqno
this.crud.query.standard_rate = this.mateList[0].standard_rate
this.crud.query.ivt_level = this.mateList[0].prior_level
this.crud.query.material_id = this.mateList[0].material_id
}
this.crud.toQuery()
}) })
}, },
quality_scodeFormat(row, column) { quality_scodeFormat(row, column) {
@@ -205,7 +242,7 @@ export default {
return this.dict.label.is_usable[row.is_active] return this.dict.label.is_usable[row.is_active]
}, },
close() { close() {
this.query = { material_id: '', quality_scode: '01', ivt_level: '', is_active: '1', seq_no: '', standard_rate: '' } this.crud.resetQuery(false)
this.$emit('update:dialogShow', false) this.$emit('update:dialogShow', false)
}, },
submit() { submit() {