rev:清洗相关功能优化
This commit is contained in:
@@ -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","清洗机-强制搬出"),//去异常位:
|
||||
|
||||
@@ -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());
|
||||
|
||||
@@ -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紫铜车间-半成品库区
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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("未找到空载具!");
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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 :
|
||||
|
||||
@@ -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));
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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() {
|
||||
|
||||
Reference in New Issue
Block a user