rev:软废碳平衡修正维护,袋标签打印,分配货位重复,球磨工艺酒精计算,入库删除

This commit is contained in:
2023-07-10 17:18:48 +08:00
parent 01980f65df
commit 71edee2319
6 changed files with 160 additions and 10 deletions

View File

@@ -18,7 +18,9 @@ import org.nl.pda.pdm.service.PdmWorkTaskService;
import org.nl.pda.st.vehicle.service.impl.EmptyVehicleServiceImpl; import org.nl.pda.st.vehicle.service.impl.EmptyVehicleServiceImpl;
import org.nl.utils.SecurityUtils; import org.nl.utils.SecurityUtils;
import org.nl.utils.SpringContextHolder; import org.nl.utils.SpringContextHolder;
import org.nl.wms.basedata.master.constant.MaterOptTypeEnum;
import org.nl.wms.basedata.master.service.ClassstandardService; import org.nl.wms.basedata.master.service.ClassstandardService;
import org.nl.wms.basedata.master.service.MaterialbaseService;
import org.nl.wms.sch.manage.AbstractAcsTask; import org.nl.wms.sch.manage.AbstractAcsTask;
import org.nl.wms.st.core.task.InTask; import org.nl.wms.st.core.task.InTask;
import org.nl.wms.st.vehicle.task.ProductTask; import org.nl.wms.st.vehicle.task.ProductTask;
@@ -44,6 +46,8 @@ public class PdmWorkTaskServiceImpl implements PdmWorkTaskService {
private WmsToAcsService wmsToAcsService; private WmsToAcsService wmsToAcsService;
@Autowired @Autowired
private ClassstandardService classstandardService; private ClassstandardService classstandardService;
@Autowired
private MaterialbaseService materialbaseService;
@Override @Override
public Map<String, Object> queryWorkTask(Map jsonObject) { public Map<String, Object> queryWorkTask(Map jsonObject) {
@@ -805,6 +809,9 @@ public class PdmWorkTaskServiceImpl implements PdmWorkTaskService {
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Map<String, Object> issueQM(Map jsonObject) { public Map<String, Object> issueQM(Map jsonObject) {
WQLObject formDtlTab = WQLObject.getWQLObject("pdm_bi_formuladtl"); // 配方明细表
WQLObject materExtTab = WQLObject.getWQLObject("MD_ME_ProducMaterialExt"); // 成品扩展属性表
if (ObjectUtil.isEmpty(jsonObject)) { if (ObjectUtil.isEmpty(jsonObject)) {
throw new PdaRequestException("传入参数不能为空!"); throw new PdaRequestException("传入参数不能为空!");
} }
@@ -866,7 +873,55 @@ public class PdmWorkTaskServiceImpl implements PdmWorkTaskService {
data2.put("code", para.getString("ext_name")); data2.put("code", para.getString("ext_name"));
data2.put("value", row.getString("value")); data2.put("value", row.getString("value"));
//预磨1酒精设定值开单重量*工艺参数"预磨1酒精设定值改为比例" //预磨1酒精设定值开单重量*工艺参数"预磨1酒精设定值改为比例"
double masterbucket_qty = form_jo.getDoubleValue("masterbucket_qty"); // double masterbucket_qty = form_jo.getDoubleValue("masterbucket_qty");
/*
计算开单重量:
配方明细中【是否需要配粉】为是的和,其中若为软废,需要乘以物料扩展属性的纯粉系数
*/
// 1. 找出所有明细
List<JSONObject> 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<JSONObject> 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());
}
double masterbucket_qty = Double.valueOf(masterbucket_qty1);
if (para.getString("para_code").equals("QM006")) { if (para.getString("para_code").equals("QM006")) {
QM006_qty = NumberUtil.round(data2.getDoubleValue("value") * 0.01 * masterbucket_qty, 3); QM006_qty = NumberUtil.round(data2.getDoubleValue("value") * 0.01 * masterbucket_qty, 3);
data2.put("value", NumberUtil.round(data2.getDoubleValue("value") * 0.01 * masterbucket_qty, 3)); data2.put("value", NumberUtil.round(data2.getDoubleValue("value") * 0.01 * masterbucket_qty, 3));

View File

@@ -94,7 +94,14 @@ public class WastecchangeServiceImpl implements WastecchangeService {
} }
map.put("class_ids", MaterOptTypeEnum.THW.getClass_idStr()); map.put("class_ids", MaterOptTypeEnum.THW.getClass_idStr());
JSONObject allmaterialIds = WQL.getWO("PDM_WASTECCHANGE").addParamMap(map).pageQuery(WqlUtil.getHttpContext(page), "mater.material_code"); // 判断工艺是否为空
if (ObjectUtil.isEmpty(tech_type)) {
map.put("is_emp", "1");
} else {
map.put("is_emp", "2");
}
JSONObject allmaterialIds = WQL.getWO("PDM_WASTECCHANGE").addParamMap(map).pageQuery(WqlUtil.getHttpContext(page), "material_code");
JSONArray array = allmaterialIds.getJSONArray("content"); JSONArray array = allmaterialIds.getJSONArray("content");
//label:name;value:code //label:name;value:code
List<DictDetail> rfType = SpringContextHolder.getBean(DictDetailRepository.class).findByDictName("MD_MATERIAL_WASTE_TYPE"); List<DictDetail> rfType = SpringContextHolder.getBean(DictDetailRepository.class).findByDictName("MD_MATERIAL_WASTE_TYPE");
@@ -141,6 +148,8 @@ public class WastecchangeServiceImpl implements WastecchangeService {
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void update(JSONObject form) { public void update(JSONObject form) {
WQLObject wasTab = WQLObject.getWQLObject("pdm_bi_wastecchange");
List<String> rfType = SpringContextHolder.getBean(DictDetailRepository.class).findByDictName("MD_MATERIAL_WASTE_TYPE").stream().map(DictDetail::getValue).collect(Collectors.toList()); List<String> rfType = SpringContextHolder.getBean(DictDetailRepository.class).findByDictName("MD_MATERIAL_WASTE_TYPE").stream().map(DictDetail::getValue).collect(Collectors.toList());
JSONObject allData = new JSONObject(); JSONObject allData = new JSONObject();
for (String key : rfType) { for (String key : rfType) {
@@ -150,7 +159,24 @@ public class WastecchangeServiceImpl implements WastecchangeService {
form.put("create_name",SecurityUtils.getNickName()); form.put("create_name",SecurityUtils.getNickName());
form.put("create_time",DateUtil.now()); form.put("create_time",DateUtil.now());
form.put("alldata",allData); form.put("alldata",allData);
WQLObject.getWQLObject("pdm_bi_wastecchange").update(form);
JSONObject json = wasTab.query("material_id = '" + form.getString("material_id") + "' and tech_type = '" + form.getString("tech_type") + "'").uniqueResult(0);
if (ObjectUtil.isEmpty(json)) {
form.put("change_id", IdUtil.getSnowflake(1, 1).nextId());
wasTab.insert(form);
if (form.getString("tech_type").equals("01")) {
form.put("tech_type","02");
} else {
form.put("tech_type","01");
}
form.put("change_id", IdUtil.getSnowflake(1, 1).nextId());
wasTab.insert(form);
} else {
wasTab.update(form);
}
} }
@Override @Override
@@ -195,6 +221,8 @@ public class WastecchangeServiceImpl implements WastecchangeService {
// 2.找软废 // 2.找软废
String tech_type = whereJson.getString("tech_type"); String tech_type = whereJson.getString("tech_type");
if (ObjectUtil.isEmpty(tech_type)) throw new BadRequestException("工艺类型不能为空!");
for (int i = 0; i < rf_arr.size(); i++) { for (int i = 0; i < rf_arr.size(); i++) {
JSONObject json_rf_type = rf_arr.getJSONObject(i); JSONObject json_rf_type = rf_arr.getJSONObject(i);
// 校验修正值必须为 -0.5 ~ 0.5 之间 或者为 99 // 校验修正值必须为 -0.5 ~ 0.5 之间 或者为 99
@@ -247,7 +275,6 @@ public class WastecchangeServiceImpl implements WastecchangeService {
} }
} }
// 3.更新软废碳平衡修正表 // 3.更新软废碳平衡修正表
this.update(whereJson); this.update(whereJson);
} }

View File

@@ -17,6 +17,7 @@
输入.material_code TYPEAS s_string 输入.material_code TYPEAS s_string
输入.class_ids TYPEAS f_string 输入.class_ids TYPEAS f_string
输入.material_id TYPEAS s_string 输入.material_id TYPEAS s_string
输入.is_emp TYPEAS s_string
输入.code TYPEAS s_string 输入.code TYPEAS s_string
输入.tech_type TYPEAS s_string 输入.tech_type TYPEAS s_string
输入.materialIds TYPEAS f_string 输入.materialIds TYPEAS f_string
@@ -70,6 +71,15 @@
OPTION 输入.tech_type <> "" OPTION 输入.tech_type <> ""
chan.tech_type = 输入.tech_type chan.tech_type = 输入.tech_type
ENDOPTION ENDOPTION
OPTION 输入.is_emp = "1"
IFNULL(chan.tech_type,'') = ''
ENDOPTION
OPTION 输入.is_emp = "2"
IFNULL(chan.tech_type,'') <> ''
ENDOPTION
ENDSELECT ENDSELECT
ENDPAGEQUERY ENDPAGEQUERY
ENDIF ENDIF

View File

@@ -53,6 +53,7 @@ import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.stream.Collectors;
@Service @Service
@RequiredArgsConstructor @RequiredArgsConstructor
@@ -757,6 +758,7 @@ public class FormulaServiceImpl implements FormulaService {
String formula_id = MapUtil.getStr(whereJson, "formula_id"); String formula_id = MapUtil.getStr(whereJson, "formula_id");
WQLObject formMstTab = WQLObject.getWQLObject("PDM_BI_Formula"); // 配方主表 WQLObject formMstTab = WQLObject.getWQLObject("PDM_BI_Formula"); // 配方主表
WQLObject formDtlTab = WQLObject.getWQLObject("pdm_bi_formuladtl"); // 配方明细表
WQLObject workTab = WQLObject.getWQLObject("PDM_BI_WorkOrder"); // 工令表 WQLObject workTab = WQLObject.getWQLObject("PDM_BI_WorkOrder"); // 工令表
WQLObject deptTab = WQLObject.getWQLObject("sys_dept"); // 部门表 WQLObject deptTab = WQLObject.getWQLObject("sys_dept"); // 部门表
WQLObject materTab = WQLObject.getWQLObject("md_me_materialbase"); // 物料表 WQLObject materTab = WQLObject.getWQLObject("md_me_materialbase"); // 物料表
@@ -828,7 +830,54 @@ public class FormulaServiceImpl implements FormulaService {
oneMap.put("para_name", json92jj.getString("para_name")); oneMap.put("para_name", json92jj.getString("para_name"));
} }
} }
String masterbucket_qty = jsonMst.getString("masterbucket_qty"); // 开单重量
/*
计算开单重量:
配方明细中【是否需要配粉】为是的和,其中若为软废,需要乘以物料扩展属性的纯粉系数
*/
// 1. 找出所有明细
List<JSONObject> jsonDtlAll = formDtlTab.query("formula_id = '" + formula_id + "' and is_need_manage = '1'").getResultJSONArray(0).toJavaList(JSONObject.class);
if (ObjectUtil.isEmpty(jsonDtlAll)) throw new BadRequestException("开单重量异常,请检查!");
// 2.过滤出是物料的
List<JSONObject> jsonDtlAll_mater = jsonDtlAll.stream()
.filter(row -> row.getString("material_type").equals("01"))
.collect(Collectors.toList());
// 3.计算物料分类重量
double class_qty = jsonDtlAll.stream()
.filter(row -> row.getString("material_type").equals("02"))
.collect(Collectors.summarizingDouble(row -> row.getDoubleValue("formula_qty")))
.getSum();
String masterbucket_qty = 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_qty = NumberUtil.add(masterbucket_qty,rf_qty).toString();
} else {
// 直接相加
masterbucket_qty = NumberUtil.add(masterbucket_qty,formula_qty).toString();
}
}
} catch (Exception e) {
throw new BadRequestException("计算有误:"+e.getMessage());
}
// String masterbucket_qty = jsonMst.getString("masterbucket_qty"); // 开单重量
JSONObject jsonQM13 = paraTab.query("material_id = '" + material_id + "' and para_code = 'QM013'").uniqueResult(0); 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); JSONObject jsonQM14 = paraTab.query("material_id = '" + material_id + "' and para_code = 'QM014'").uniqueResult(0);
JSONObject jsonPW02 = paraTab.query("material_id = '" + material_id + "' and para_code = 'PW002'").uniqueResult(0); JSONObject jsonPW02 = paraTab.query("material_id = '" + material_id + "' and para_code = 'PW002'").uniqueResult(0);

View File

@@ -6,6 +6,7 @@
width="450px" width="450px"
:before-close="handleClose" :before-close="handleClose"
destroy-on-close destroy-on-close
:close-on-click-modal="false"
@close="close" @close="close"
> >
<el-form ref="form" :model="form1" :rules="rules" size="mini" label-width="110px"> <el-form ref="form" :model="form1" :rules="rules" size="mini" label-width="110px">
@@ -33,7 +34,7 @@
</el-form-item> </el-form-item>
<el-form-item label="粉料批号:" prop="pcsn"> <el-form-item label="粉料批号:" prop="pcsn">
<el-input v-model="form1.pcsn" disabled style="width: 250px;" /> <el-input v-model="form1.pcsn" readonly style="width: 250px;" />
</el-form-item> </el-form-item>
<el-form-item label="重量:" prop="storage_qty"> <el-form-item label="重量:" prop="storage_qty">
@@ -41,11 +42,11 @@
</el-form-item> </el-form-item>
<el-form-item label="还回人员编码:" prop="return_code"> <el-form-item label="还回人员编码:" prop="return_code">
<el-input v-model="form1.return_code" placeholder="请输入人员编码" style="width: 250px;" @blur="blurPerson(form1.return_code)" /> <el-input v-model="form1.return_code" placeholder="请输入人员编码" style="width: 250px;" @keyup.enter.native="blurPerson(form1.return_code)" />
</el-form-item> </el-form-item>
<el-form-item label="还回人员名称:" prop="return_person"> <el-form-item label="还回人员名称:" prop="return_person">
<el-input v-model="form1.return_person" disabled style="width: 250px;" /> <el-input v-model="form1.return_person" readonly style="width: 250px;" />
</el-form-item> </el-form-item>
<el-form-item label="软废类型:" prop="waste_type"> <el-form-item label="软废类型:" prop="waste_type">
@@ -136,6 +137,14 @@ export default {
// 根据单据号查询调用接口获取压制订单内信息 // 根据单据号查询调用接口获取压制订单内信息
crudBagrecord.blurQueryMater({ 'bill_code': val }).then(res => { crudBagrecord.blurQueryMater({ 'bill_code': val }).then(res => {
this.materialList = res.data this.materialList = res.data
if (this.materialList.length === 0) {
this.form1.material_code = null
this.form1.pcsn = null
} else {
this.form1.material_code = this.materialList[0].item_code
this.form1.pcsn = this.materialList[0].batch_seq
}
}) })
}, },
changePcsn(val) { changePcsn(val) {

View File

@@ -354,8 +354,7 @@ export default {
del: false, del: false,
download: false, download: false,
reset: true reset: true
}, }
query: { tech_type: '02' }
}) })
}, },
data() { data() {
@@ -392,6 +391,7 @@ export default {
this.form.tableData.splice(index, 1, row) // 通过splice 替换数据 触发视图更新 this.form.tableData.splice(index, 1, row) // 通过splice 替换数据 触发视图更新
}, },
confirm(row) { confirm(row) {
row.tech_type = this.query.tech_type
this.confirm_flg = true this.confirm_flg = true
crudWastecchange.confirm(row).then(res => { crudWastecchange.confirm(row).then(res => {
this.crud.notify('操作成功', CRUD.NOTIFICATION_TYPE.SUCCESS) this.crud.notify('操作成功', CRUD.NOTIFICATION_TYPE.SUCCESS)