手动开单优化

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')", ""),
YL_AND_BCP(21, "22", "原料和半成品", "('1503644353019645952','1503644359155912704')", ""),
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")
@Log("查询工令")
@ApiOperation("查询工令")
public ResponseEntity<Object> queryivt(@RequestParam Map whereJson){
return new ResponseEntity<>(initformulaService.queryAll(whereJson),HttpStatus.OK);
public ResponseEntity<Object> queryivt(@RequestParam Map whereJson, Pageable page){
return new ResponseEntity<>(initformulaService.queryAll(whereJson,page),HttpStatus.OK);
}
@GetMapping("/queryivt2")
@Log("查询工令")

View File

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

View File

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

View File

@@ -50,7 +50,7 @@
##########################################
IF 输入.flag = "1"
QUERY
PAGEQUERY
SELECT
structivt.*,
mb.material_name,
@@ -127,7 +127,7 @@
structivt.is_active = 输入.is_active
ENDOPTION
ENDSELECT
ENDQUERY
ENDPAGEQUERY
ENDIF
@@ -156,6 +156,28 @@
ENDQUERY
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"
QUERY
SELECT
@@ -502,6 +524,31 @@
ENDQUERY
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"
PAGEQUERY
SELECT

View File

@@ -19,121 +19,152 @@
</span>
</div>
</span>
<!-- 搜索 -->
<el-row>
<el-col :span="6">
产品bom物料 <el-select
v-model="query.material_id"
placeholder="产品bom物料"
@change="storChange"
>
<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
<div class="head-container">
<div >
<el-form
:inline="true"
class="demo-form-inline"
label-position="right"
label-width="120px"
label-suffix=":"
>
<el-option
v-for="item in dict.ST_IVT_LEVEL"
:key="item.id"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-col>
<el-col :span="6">
品质类型<el-select
v-model="query.quality_scode"
placeholder="品质类型"
clearable
>
<el-option
v-for="item in dict.ST_QUALITY_SCODE"
:key="item.id"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-col>
<el-col :span="6">
是否可用<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-col>
<el-col :span="6">
<el-button class="filter-item" size="mini" type="success" icon="el-icon-search" @click="queryStruct">搜索</el-button>
</el-col>
</el-row>
<!--表格渲染-->
<el-table
ref="table"
:data="tableDtl"
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>
<el-form-item label="产品bom物料">
<el-select
v-model="query.material_id"
placeholder="产品bom物料"
@change="storChange"
>
<el-option
v-for="item in mateList"
:key="item.material_id"
:label="item.material_name"
:value="item.material_id"
/>
</el-select>
</el-form-item>
<el-form-item>
<el-checkbox v-model="query.is_bom" @change="storChange2">参考bom</el-checkbox>
</el-form-item>
<el-form-item label="配粉序号">
<el-input
v-model="query.seq_no"
disabled
style="width: 200px"
size="mini"
placeholder="配粉序号"
class="filter-item"
/>
</el-form-item>
<el-form-item label="含量(%)">
<el-input
v-model="query.standard_rate"
disabled
style="width: 200px"
size="mini"
placeholder="含量%"
class="filter-item"
/>
</el-form-item>
<el-form-item label="最低库存等级">
<el-select
v-model="query.ivt_level"
placeholder="最低库存等级"
clearable
>
<el-option
v-for="item in dict.ST_IVT_LEVEL"
:key="item.id"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
<el-form-item label="品质类型">
<el-select
v-model="query.quality_scode"
placeholder="品质类型"
clearable
>
<el-option
v-for="item in dict.ST_QUALITY_SCODE"
: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>
</template>
<script>
import CRUD, { header} from '@crud/crud'
import initformula from "@/api/wms/pf/initformula"
import CRUD, {crud, header, presenter} from '@crud/crud'
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 {
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'],
props: {
dialogShow: {
@@ -147,10 +178,8 @@ export default {
data() {
return {
dialogVisible: false,
queryrow: {},
mateList: [],
tableDtl:[],
query: { material_id: '', quality_scode: '01', ivt_level: '', is_active: '1', seq_no: '', standard_rate: '',workorder_qty:'0' },
queryrow: {},
rows: []
}
},
@@ -168,31 +197,39 @@ export default {
},
methods: {
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
if(this.mateList.length != 0){
this.query.seq_no = this.mateList[0].seqno
this.query.standard_rate = this.mateList[0].standard_rate
this.query.ivt_level = this.mateList[0].prior_level
this.query.material_id = this.mateList[0].material_id
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.queryStruct()
this.crud.toQuery()
})
},
storChange(row) {
for (let i = 0; i < this.mateList.length; i++) {
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.standard_rate = this.mateList[i].standard_rate
this.query.ivt_level = this.mateList[i].prior_level
}
}
},
queryStruct() {
this.query.workorder_qty = this.queryrow.workorder_qty
initformula.queryivt(this.query).then(res => {
this.tableDtl = res
storChange2(row) {
initformula.getlist({'material_id': this.queryrow.material_id, 'is_bom': row}).then(res => {
this.mateList = 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) {
@@ -205,7 +242,7 @@ export default {
return this.dict.label.is_usable[row.is_active]
},
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)
},
submit() {