diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pf/service/impl/FormulaServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pf/service/impl/FormulaServiceImpl.java index ab905982..b34d6a7c 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pf/service/impl/FormulaServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pf/service/impl/FormulaServiceImpl.java @@ -879,6 +879,15 @@ public class FormulaServiceImpl implements FormulaService { throw new BadRequestException("计算有误:"+e.getMessage()); } + // 水含量计算:开单重量*液料比*含水量 + double liquid_rate = NumberUtil.mul(masterbucket_qty, jsonMaterExt.getString("liquid_rate")).doubleValue(); + double waterL = NumberUtil.mul(liquid_rate, NumberUtil.div(json98jj.getDoubleValue("value"), 100)); + oneMap.put("water", NumberUtil.round(waterL, 2).toString()); + + // 酒精含量计算:开单重量*液料比*含酒精量 + double alcoholL = NumberUtil.mul(liquid_rate, NumberUtil.div(json92jj.getDoubleValue("value"), 100)); + oneMap.put("alcohol", NumberUtil.round(alcoholL, 2).toString()); + // String masterbucket_qty = jsonMst.getString("masterbucket_qty"); // 开单重量 JSONObject jsonQM13 = paraTab.query("material_id = '" + material_id + "' and para_code = 'QM013'").uniqueResult(0); JSONObject jsonQM14 = paraTab.query("material_id = '" + material_id + "' and para_code = 'QM014'").uniqueResult(0); @@ -1042,6 +1051,70 @@ public class FormulaServiceImpl implements FormulaService { workBook.finish(); } + /** + * 纯粉重量计算 + * @param workorder_code、 + * @return 纯粉重量 + */ + private double calculatePureWeight (String workorder_code) { + /* + 计算纯粉重量: + 配方明细中【是否需要配粉】为是的和,其中若为软废,需要乘以物料扩展属性的纯粉系数 + */ + WQLObject formDtlTab = WQLObject.getWQLObject("pdm_bi_formuladtl"); // 配方明细表 + WQLObject materExtTab = WQLObject.getWQLObject("MD_ME_ProducMaterialExt"); // 成品扩展属性表 + + // 查询出配方主表 + JSONObject form_jo = WQLObject.getWQLObject("PDM_BI_Formula").query("is_delete='0' and workorder_code = '" +workorder_code + "' AND bucket_type = '01'").uniqueResult(0); + if (ObjectUtil.isEmpty(form_jo)) { + throw new BadRequestException("没有工令号为【"+workorder_code+"】的配方!"); + } + + // 1. 找出所有明细 + List jsonDtlAll = formDtlTab.query("formula_id = '" + form_jo.getString("formula_id") + "' and is_need_manage = '1'").getResultJSONArray(0).toJavaList(JSONObject.class); + + if (ObjectUtil.isEmpty(jsonDtlAll)) throw new BadRequestException("纯粉重量异常,请检查!"); + + // 2.过滤出是物料的 + List jsonDtlAll_mater = jsonDtlAll.stream() + .filter(item -> item.getString("material_type").equals("01")) + .collect(Collectors.toList()); + + // 3.计算物料分类重量 + double class_qty = jsonDtlAll.stream() + .filter(item -> item.getString("material_type").equals("02")) + .collect(Collectors.summarizingDouble(item -> item.getDoubleValue("formula_qty"))) + .getSum(); + + String masterbucket_qty1 = String.valueOf(class_qty); + try { + for (JSONObject jsonDtl : jsonDtlAll_mater) { + String formula_qty = jsonDtl.getString("formula_qty"); + + // 判断是否是软废 + boolean is_rf = materialbaseService.isAlongMaterType(MaterOptTypeEnum.RF.getCode(), jsonDtl.getString("material_id"), null); + + if (is_rf) { + // 软废:重量*纯粉系数 + String net_rate = materExtTab.query("material_id ='" + jsonDtl.getString("material_id") + "'").uniqueResult(0).getString("net_rate"); + + // 软废纯粉计算 + String rf_qty = NumberUtil.mul(formula_qty, NumberUtil.div(net_rate, "100").toString()).toString(); + + masterbucket_qty1 = NumberUtil.add(masterbucket_qty1, rf_qty).toString(); + } else { + // 直接相加 + masterbucket_qty1 = NumberUtil.add(masterbucket_qty1, formula_qty).toString(); + } + + } + } catch (Exception e) { + throw new BadRequestException("纯粉计算有误:" + e.getMessage()); + } + + return Double.parseDouble(masterbucket_qty1); + } + @Override @Transactional(rollbackFor = Exception.class) public Map localStorage(Map whereJson, Pageable page) { diff --git a/mes/qd/src/views/wms/basedata/pdm/productProcessParam/SetDialog.vue b/mes/qd/src/views/wms/basedata/pdm/productProcessParam/SetDialog.vue index 6672cf01..abc2fd9c 100644 --- a/mes/qd/src/views/wms/basedata/pdm/productProcessParam/SetDialog.vue +++ b/mes/qd/src/views/wms/basedata/pdm/productProcessParam/SetDialog.vue @@ -47,6 +47,7 @@ v-model="tableData[scope.$index].value" :controls="false" controls-position="right" + @blur="blurOne(scope.row)" precision="2" style="width: 100px" :min="0" @@ -120,6 +121,46 @@ export default { duration: 2500 }) }, + blurOne(data) { + if (data.para_code === 'QM001') { + if (data.value !== undefined) { + if (parseFloat(data.value) >= 0 && parseFloat(data.value) <= 100) { + const QM002 = 100 - parseFloat(data.value) + for (let i = 0; i < this.tableData.length; i++) { + if (this.tableData[i].para_code === 'QM002') { + this.tableData[i].value = QM002 + } + } + } else { + for (let i = 0; i < this.tableData.length; i++) { + if (this.tableData[i].para_code === 'QM001') { + this.tableData[i].value = undefined + } + } + this.notify('含水量参数必须在0-100之间', 'info') + } + } + } + if (data.para_code === 'QM002') { + if (data.value !== undefined) { + if (parseFloat(data.value) >= 0 && parseFloat(data.value) <= 100) { + const QM001 = 100 - parseFloat(data.value) + for (let i = 0; i < this.tableData.length; i++) { + if (this.tableData[i].para_code === 'QM001') { + this.tableData[i].value = QM001 + } + } + } else { + for (let i = 0; i < this.tableData.length; i++) { + if (this.tableData[i].para_code === 'QM002') { + this.tableData[i].value = undefined + } + } + this.notify('含酒精量参数必须在0-100之间', 'info') + } + } + } + }, close() { this.$emit('update:dialogShow', false) }