rev:清洗相关功能优化

This commit is contained in:
zhangzhiqiang
2023-08-23 11:01:29 +08:00
parent cc96dd2031
commit f5ae3ef903
11 changed files with 71 additions and 46 deletions

View File

@@ -46,7 +46,7 @@ public enum AcsTaskEnum {
TASK_STRUCT_HR_EMP_IN("29","入库-海柔半成品-空托盘"),
TASK_STRUCT_HR_EMP_OUT("30","出库-海柔半成品-空托盘"),
TASK_STRUCT_CP_CHECK("13","成品-盘点"),
TASK_WASH_LACK("20","清洗机-料请求"),
TASK_WASH_SEND_MATERIAL("20","清洗机-料请求"),
TASK_WASH_EMP("21","清洗机-空框请求"),
TASK_WASH_FULL_AUTO("22","清洗机-满料请求自动"),//去半成品入库:参数不全也去异常处理位
TASK_WASH_FULL_QZ("23","清洗机-强制搬出"),//去异常位:

View File

@@ -183,13 +183,13 @@ public class PdaWashController {
LIMIT_WEIGHT = Double.valueOf(one.getValue());
}
if (sum>LIMIT_WEIGHT){
throw new BadRequestException("选择的储料仓物料总重量大于"+LIMIT_WEIGHT+"公斤");
throw new BadRequestException("选择的储料仓物料总重量大于"+LIMIT_WEIGHT/1000+"公斤");
}
Param limit_time = paramService.getOne(new QueryWrapper<Param>().eq("code", "pda_wash_time"));
//开启清洗上料时间限制
if (limit_time!=null && !limit_time.getValue().equals("0")){
SchBaseTask lastTask = taskService.getOne(new QueryWrapper<SchBaseTask>()
.eq("task_type", AcsTaskEnum.REQUEST_WASH_SEND_MATERIAL.getCode()).orderByDesc("task_code").last("limit 1"));
.eq("task_type", AcsTaskEnum.TASK_WASH_SEND_MATERIAL.getCode()).orderByDesc("task_code").last("limit 1"));
if (lastTask!=null){
if (DateUtil.between(new Date(), lastTask.getCreate_time(), DateUnit.MINUTE)<Integer.valueOf(limit_time.getValue())){
throw new BadRequestException("清洗上料任务间隔不小于"+limit_time.getValue()+"分钟,任务:"+lastTask.getTask_code());

View File

@@ -76,27 +76,27 @@ public class EngraveCallService {
kzDevice.remove("A1_KZ_14");
StIvtStructivtBcp stIvtStructivt = iStIvtStructivtBcpService.getOne(new QueryWrapper<StIvtStructivtBcp>()
.eq("struct_code", struct_code));
if (!CollectionUtils.isEmpty(kzDevice)){
List<PdmProduceWorkorder> workorders = workorderService.list(new QueryWrapper<PdmProduceWorkorder>()
.eq("workprocedure_id", ENGRAVE_WORKPRODURE)
.in("device_code", kzDevice)
.eq("workorder_status", WorkerOrderEnum.PRODUCTING.getCode()));
if (workorders.size()!=kzDevice.size()){
throw new BadRequestException("当前刻字工单不在生产状态");
}
if (workorders.stream().map(PdmProduceWorkorder::getMaterial_id).collect(Collectors.toSet()).size()>1){
throw new BadRequestException("所选刻字机的物料规格不是同一种");
}
if(!workorders.get(0).getMaterial_id().equals(stIvtStructivt.getMaterial_id())){
throw new BadRequestException("半成品库存物料规格与刻字机工单物料不一致");
}
List<SchBaseTask> list = taskService.list(new QueryWrapper<SchBaseTask>()
.lt("task_status", StatusEnum.TASK_FINISH.getCode())
.in("task_type", AcsTaskEnum.TASK_STRUCT_OUT.getCode(),AcsTaskEnum.TASK_Engrave_CALL.getCode(), AcsTaskEnum.TASK_Engrave_EMPTY.getCode()));
if (!CollectionUtils.isEmpty(list)){
throw new BadRequestException("存在正在执行的刻字上料相关任务:"+list.stream().map(SchBaseTask::getTask_code).collect(Collectors.joining(",")));
}
// if (!CollectionUtils.isEmpty(kzDevice)){
// List<PdmProduceWorkorder> workorders = workorderService.list(new QueryWrapper<PdmProduceWorkorder>()
// .eq("workprocedure_id", ENGRAVE_WORKPRODURE)
// .in("device_code", kzDevice)
// .eq("workorder_status", WorkerOrderEnum.PRODUCTING.getCode()));
// if (workorders.size()!=kzDevice.size()){
// throw new BadRequestException("当前刻字工单不在生产状态");
// }
// if (workorders.stream().map(PdmProduceWorkorder::getMaterial_id).collect(Collectors.toSet()).size()>1){
// throw new BadRequestException("所选刻字机的物料规格不是同一种");
// }
//
// if(!workorders.get(0).getMaterial_id().equals(stIvtStructivt.getMaterial_id())){
// throw new BadRequestException("半成品库存物料规格与刻字机工单物料不一致");
// }
// }
List<SchBaseTask> list = taskService.list(new QueryWrapper<SchBaseTask>()
.lt("task_status", StatusEnum.TASK_FINISH.getCode())
.in("task_type", AcsTaskEnum.TASK_STRUCT_OUT.getCode(),AcsTaskEnum.TASK_Engrave_CALL.getCode(), AcsTaskEnum.TASK_Engrave_EMPTY.getCode()));
if (!CollectionUtils.isEmpty(list)){
throw new BadRequestException("存在正在执行的刻字上料相关任务:"+list.stream().map(SchBaseTask::getTask_code).collect(Collectors.joining(",")));
}
JSONObject form = new JSONObject();
form.put("stor_id", IOSEnum.STOR_CODE.code("半成品仓库"));//st_ivt_sectattr紫铜车间-半成品库区

View File

@@ -122,11 +122,12 @@ public class EngraveSendEmpTask extends AbstractAcsTask {
task.put("priority", "1");
task.put("finished_type", "1");
task.put("agv_system_type", AcsTaskEnum.AGV_SYSTEM_XC.getCode());
SchBaseTask schBaseTask = task.toJavaObject(SchBaseTask.class);
Param one = paramService.getOne(new QueryWrapper<Param>().eq("code", "engrave_priority"));
if (one!=null){
schBaseTask.setPriority(one.getValue());
task.put("priority",one.getValue());
}
SchBaseTask schBaseTask = task.toJavaObject(SchBaseTask.class);
taskService.save(schBaseTask);
// 找终点
try {

View File

@@ -117,11 +117,11 @@ public class WashCallEmptyTask extends AbstractAcsTask {
}
// 查找任务状态
JSONObject task = packageTask(param.getString("device_code"));
SchBaseTask schBaseTask = task.toJavaObject(SchBaseTask.class);
Param one = paramService.getOne(new QueryWrapper<Param>().eq("code", "wash_priority"));
if (one!=null){
schBaseTask.setPriority(one.getValue());
task.put("priority",one.getValue());
}
SchBaseTask schBaseTask = task.toJavaObject(SchBaseTask.class);
taskService.save(schBaseTask);
// 找终点
try {
@@ -207,7 +207,7 @@ public class WashCallEmptyTask extends AbstractAcsTask {
.eq(StIvtStructattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定"))
.eq(StIvtStructattr::getIs_used,true)
.orderByDesc(StIvtStructattr::getXqty)
.orderByAsc(StIvtStructattr::getYqty),false
.orderByAsc(StIvtStructattr::getZqty),false
);
if (ObjectUtil.isEmpty(attrDao)) throw new BadRequestException("未找到空载具!");

View File

@@ -125,8 +125,8 @@ public class WashMachineryTask extends AbstractAcsTask {
}
JSONObject task = new JSONObject();
task.put("task_id", IdUtil.getStringId());
task.put("task_name", AcsTaskEnum.REQUEST_WASH_SEND_MATERIAL.getDesc());
task.put("task_type", AcsTaskEnum.REQUEST_WASH_SEND_MATERIAL.getCode());
task.put("task_name", AcsTaskEnum.TASK_WASH_SEND_MATERIAL.getDesc());
task.put("task_type", AcsTaskEnum.TASK_WASH_SEND_MATERIAL.getCode());
task.put("task_code", CodeUtil.getNewCode("TASK_CODE"));
task.put("task_status", StatusEnum.TASK_PUBLISH.getCode());
task.put("point_code3", "A1_SKQXJ_01_S");//A1_SKQXJ_01_X

View File

@@ -11,7 +11,6 @@ import org.nl.common.utils.IdUtil;
import org.nl.modules.common.exception.BadRequestException;
import org.nl.modules.system.util.CodeUtil;
import org.nl.wms.masterdata_manage.service.vehicle.IMdPbStoragevehicleinfoService;
import org.nl.wms.masterdata_manage.service.vehicle.dao.MdPbStoragevehicleinfo;
import org.nl.wms.masterdata_manage.storage.service.storage.IStIvtSectattrService;
import org.nl.wms.masterdata_manage.storage.service.storage.IStIvtStructattrService;
import org.nl.wms.masterdata_manage.storage.service.storage.dao.StIvtSectattr;

View File

@@ -2,6 +2,7 @@ package org.nl.wms.storage_manage.productmanage.util.impl;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import org.nl.common.utils.RedissonUtils;
@@ -56,18 +57,22 @@ public class DivRuleCpServiceImpl implements DivRuleCpService {
switch (whereJson.getString("rule_type")) {
case RuleUtil.PRODUCTION_IN_1 :
attrDao = iStIvtStructattrService.getOne(
new QueryWrapper<StIvtStructattr>().lambda()
.eq(StIvtStructattr::getStor_id, stor_id)
.eq(StIvtStructattr::getSect_id, sect_id)
.eq(StIvtStructattr::getIs_used, IOSEnum.IS_USED.code(""))
.eq(StIvtStructattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定"))
.and(qr -> qr.eq(StIvtStructattr::getStoragevehicle_code,"")
.or().isNull(StIvtStructattr::getStoragevehicle_code)
)
.ne(StIvtStructattr::getIs_emptyvehicle, true)
.orderByDesc(StIvtStructattr::getXqty)
.orderByAsc(StIvtStructattr::getYqty)
LambdaQueryWrapper<StIvtStructattr> wrapper = new QueryWrapper<StIvtStructattr>().lambda()
.eq(StIvtStructattr::getStor_id, stor_id)
.eq(StIvtStructattr::getSect_id, sect_id)
.eq(StIvtStructattr::getIs_used, IOSEnum.IS_USED.code(""))
.eq(StIvtStructattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定"))
.and(qr -> qr.eq(StIvtStructattr::getStoragevehicle_code, "")
.or().isNull(StIvtStructattr::getStoragevehicle_code)
)
.ne(StIvtStructattr::getIs_emptyvehicle, true)
.orderByDesc(StIvtStructattr::getXqty);
if (IOSEnum.STOR_CODE.code("半成品仓库").equals(stor_id)){
wrapper.orderByAsc(StIvtStructattr::getYqty);
}else {
wrapper.orderByAsc(StIvtStructattr::getZqty);
}
attrDao = iStIvtStructattrService.getOne(wrapper
, false);
break;
case RuleUtil.PRODUCTION_IN_2 :

View File

@@ -219,6 +219,9 @@ public class StIvtIostorinvBcpServiceImpl extends ServiceImpl<StIvtIostorinvBcpM
.workshop_id(stor.getProduct_area())
.unit_weight(mdMeMaterialbase.getNet_weight())
.build();
if (form.getString("bill_type")!=null){
ivtDao.setBill_type(form.getString("bill_type"));
}
structivtBcpService.save(ivtDao);
// 插入库存变动记录
JSONObject param = JSONObject.parseObject(JSON.toJSONString(ivtDao));

View File

@@ -190,7 +190,7 @@
</template>
</el-table-column>
<el-table-column prop="storagevehicle_name" label="载具名称" />
<el-table-column prop="vehicle_weight" label="载具单重(kg)" />
<el-table-column prop="vehicle_weight" label="载具单重(g)" />
<el-table-column label="是否启用" align="center" prop="is_used">
<template slot-scope="scope">
<el-switch

View File

@@ -90,6 +90,23 @@
<el-input-number v-model="materialForm.qty" style="width: 200px;" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item v-if="materialForm.is_emptyvehicle==false" label="入库类型">
<el-select
clearable
v-model="materialForm.bill_type"
placeholder=""
style="width: 200px"
>
<el-option
v-for="item in dict.ST_INV_BCP_IN_TYPE"
:key="item.id"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
@@ -386,7 +403,7 @@ const defaultForm = {
}
export default {
name: 'Structattr',
dicts: ['ST_HEIGHT_TYPE', 'd_lock_type', 'SCH_TASK_TYPE_DTL'],
dicts: ['ST_HEIGHT_TYPE', 'd_lock_type', 'SCH_TASK_TYPE_DTL','ST_INV_BCP_IN_TYPE'],
components: { pagination, crudOperation, rrOperation, udOperation, MaterDtl },
mixins: [presenter(), header(), form(defaultForm), crud()],
cruds() {