rev:刻字包装服务
This commit is contained in:
@@ -3,7 +3,7 @@ package org.nl.common.utils;
|
||||
import com.google.common.cache.Cache;
|
||||
import com.google.common.cache.CacheBuilder;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.wms.pda_manage.pda.dto.MaterialDto;
|
||||
import org.nl.wms.pda_manage.pda.service.dto.MaterialDto;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.annotation.PostConstruct;
|
||||
|
||||
@@ -9,9 +9,11 @@ import org.nl.wms.product_manage.sch.tasks.SpeMachinery.SpeEmpTask;
|
||||
import org.nl.wms.product_manage.sch.tasks.SpeMachinery.SpeFullTask;
|
||||
import org.nl.wms.product_manage.sch.tasks.WashMachineryTask;
|
||||
import org.nl.wms.product_manage.sch.tasks.callEmpty.PlotterCallEmptyTask;
|
||||
import org.nl.wms.product_manage.sch.tasks.callEmpty.WashCallEmptyTask;
|
||||
import org.nl.wms.product_manage.sch.tasks.callMaterial.WrapCallMaterialTask;
|
||||
import org.nl.wms.product_manage.sch.tasks.sendEmpty.WrapSendEmptyTask;
|
||||
import org.nl.wms.product_manage.sch.tasks.sendMaterial.PlotterSendMaterialTask;
|
||||
import org.nl.wms.product_manage.sch.tasks.sendMaterial.WashSendMaterialTask;
|
||||
import org.springframework.context.SmartLifecycle;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
@@ -27,9 +29,10 @@ public class ConventConfig implements SmartLifecycle {
|
||||
AcsToWmsServiceImpl.Task_Collent.put(AcsTaskEnum.REQUEST_WASH_LACK, SpringContextHolder.getBean(WashMachineryTask.class));
|
||||
AcsToWmsServiceImpl.Task_Collent.put(AcsTaskEnum.REQUEST_PLOTTER_SEND_FULL, SpringContextHolder.getBean(PlotterSendMaterialTask.class));
|
||||
AcsToWmsServiceImpl.Task_Collent.put(AcsTaskEnum.REQUEST_PLOTTER_CALL_EMP, SpringContextHolder.getBean(PlotterCallEmptyTask.class));
|
||||
// AcsToWmsServiceImpl.Task_Collent.put(AcsTaskEnum.REQUEST_PLOTTER_CALL_MATERIAL, SpringContextHolder.getBean(EngraveCallMaterialTask.class));
|
||||
AcsToWmsServiceImpl.Task_Collent.put(AcsTaskEnum.REQUEST_WARP_CALL_FULL, SpringContextHolder.getBean(WrapCallMaterialTask.class));
|
||||
AcsToWmsServiceImpl.Task_Collent.put(AcsTaskEnum.REQUEST_WARP_SEND_EMP, SpringContextHolder.getBean(WrapSendEmptyTask.class));
|
||||
AcsToWmsServiceImpl.Task_Collent.put(AcsTaskEnum.REQUEST_WASH_FULL, SpringContextHolder.getBean(WashSendMaterialTask.class));
|
||||
AcsToWmsServiceImpl.Task_Collent.put(AcsTaskEnum.REQUEST_WASH_EMP, SpringContextHolder.getBean(WashCallEmptyTask.class));
|
||||
System.out.println("初始化Task_Collent完成777"+AcsToWmsServiceImpl.Task_Collent.size());
|
||||
}
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@ package org.nl.wms.masterdata_manage.storage.service.storage;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import org.nl.wms.masterdata_manage.storage.service.storage.dao.StIvtStructattr;
|
||||
import org.nl.wms.storage_manage.productmanage.service.structIvt.dao.StIvtStructivtCp;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
@@ -46,4 +47,11 @@ public interface IStIvtStructattrService extends IService<StIvtStructattr> {
|
||||
* @param jo
|
||||
*/
|
||||
StIvtStructattr getExceedAttr(JSONObject jo);
|
||||
|
||||
/**
|
||||
* 仓位锁定
|
||||
* @param type
|
||||
* @param inv_code
|
||||
*/
|
||||
void lockStruct(String struct_code, String type, String inv_code);
|
||||
}
|
||||
|
||||
@@ -16,8 +16,12 @@ import org.nl.wms.masterdata_manage.storage.service.storage.IStIvtStructattrServ
|
||||
import org.nl.wms.masterdata_manage.storage.service.storage.dao.StIvtSectattr;
|
||||
import org.nl.wms.masterdata_manage.storage.service.storage.dao.StIvtStructattr;
|
||||
import org.nl.wms.masterdata_manage.storage.service.storage.dao.mapper.StIvtStructattrMapper;
|
||||
import org.nl.wms.storage_manage.IOSEnum;
|
||||
import org.nl.wms.storage_manage.productmanage.service.structIvt.dao.StIvtStructivtCp;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Propagation;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
@@ -35,10 +39,6 @@ public class StIvtStructattrServiceImpl extends ServiceImpl<StIvtStructattrMappe
|
||||
|
||||
@Autowired
|
||||
private IStIvtSectattrService sectattrService;
|
||||
@Autowired
|
||||
private IStIvtBsrealstorattrService storattrService;
|
||||
@Autowired
|
||||
private IStIvtStructattrService structattrService;
|
||||
|
||||
@Override
|
||||
public String create(JSONObject form) {
|
||||
@@ -98,7 +98,7 @@ public class StIvtStructattrServiceImpl extends ServiceImpl<StIvtStructattrMappe
|
||||
JSONObject sect_cas = new JSONObject();
|
||||
sect_cas.put("value", sect.getSect_id());
|
||||
sect_cas.put("label", sect.getSect_name());
|
||||
List<StIvtStructattr> struct_list = structattrService.list(new QueryWrapper<StIvtStructattr>().eq("is_used", true)
|
||||
List<StIvtStructattr> struct_list = this.list(new QueryWrapper<StIvtStructattr>().eq("is_used", true)
|
||||
.eq("sect_id", sect.getSect_id()));
|
||||
if (struct_list.size() > 0) {
|
||||
JSONArray struct_ja = new JSONArray();
|
||||
@@ -137,4 +137,13 @@ public class StIvtStructattrServiceImpl extends ServiceImpl<StIvtStructattrMappe
|
||||
.set("update_time",new Date())
|
||||
.eq("struct_id",form.getString("struct_id")));
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(propagation = Propagation.REQUIRES_NEW)
|
||||
public void lockStruct(String struct_code, String type, String inv_code) {
|
||||
this.update(new UpdateWrapper<StIvtStructattr>().lambda()
|
||||
.eq(StIvtStructattr::getStruct_code, struct_code)
|
||||
.set(StIvtStructattr::getLock_type, IOSEnum.LOCK_TYPE.code(type))
|
||||
.set(StIvtStructattr::getInv_code,inv_code));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,7 +13,6 @@ import lombok.RequiredArgsConstructor;
|
||||
import org.json.XML;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.common.utils.WebServiceUtil;
|
||||
import org.nl.config.thread.ThreadPoolExecutorUtil;
|
||||
import org.nl.modules.common.exception.BadRequestException;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.modules.common.utils.RedisUtils;
|
||||
@@ -29,14 +28,13 @@ import org.nl.wms.masterdata_manage.备份master.constant.MaterOptTypeEnum;
|
||||
import org.nl.wms.masterdata_manage.备份master.service.ClassstandardService;
|
||||
import org.nl.wms.masterdata_manage.备份master.service.MaterialbaseService;
|
||||
import org.nl.wms.masterdata_manage.备份master.service.dto.MaterialbaseDto;
|
||||
import org.nl.wms.pda_manage.pda.dto.MaterialDto;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Qualifier;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.nl.wms.pda_manage.pda.service.dto.MaterialDto;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.*;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package org.nl.wms.pda_manage.pda.rest;
|
||||
package org.nl.wms.pda_manage.pda.controller;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaIgnore;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
@@ -12,7 +12,7 @@ import org.nl.common.TableDataInfo;
|
||||
import org.nl.common.anno.Log;
|
||||
import org.nl.common.utils.api.ResultCode;
|
||||
import org.nl.modules.common.exception.BizCoreException;
|
||||
import org.nl.wms.pda_manage.pda.dto.MaterialDto;
|
||||
import org.nl.wms.pda_manage.pda.service.dto.MaterialDto;
|
||||
import org.nl.wms.pda_manage.pda.service.CacheLineHandService;
|
||||
import org.nl.wms.product_manage.service.workprocedure.IPdmBiWorkprocedureService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@@ -21,7 +21,6 @@ import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.regex.Pattern;
|
||||
@@ -1,4 +1,4 @@
|
||||
package org.nl.wms.pda_manage.pda.rest;
|
||||
package org.nl.wms.pda_manage.pda.controller;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaIgnore;
|
||||
import cn.hutool.core.lang.Assert;
|
||||
@@ -7,8 +7,6 @@ import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.nl.common.domain.ConstantParam;
|
||||
import org.nl.common.anno.Log;
|
||||
import org.nl.common.utils.MapOf;
|
||||
import org.nl.wms.masterdata_manage.storage.service.storage.IStIvtSectattrService;
|
||||
@@ -0,0 +1,53 @@
|
||||
package org.nl.wms.pda_manage.pda.controller;
|
||||
|
||||
/*
|
||||
* @author ZZQ
|
||||
* @Date 2023/7/3 15:29
|
||||
* 刻字相关临时方案
|
||||
*/
|
||||
|
||||
import cn.dev33.satoken.annotation.SaIgnore;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import io.swagger.annotations.Api;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
@RestController
|
||||
@Api(tags = "成品手持服务")
|
||||
@RequestMapping("/api/pda")
|
||||
@Slf4j
|
||||
@SaIgnore
|
||||
public class TmpKZController {
|
||||
|
||||
@RequestMapping("deviceinstorQty")
|
||||
public ResponseEntity<Object> deviceinstorQty(@RequestBody JSONObject param){
|
||||
|
||||
return new ResponseEntity<>( HttpStatus.OK);
|
||||
}
|
||||
|
||||
@RequestMapping("callVechile")
|
||||
public ResponseEntity<Object> callVechile(@RequestBody JSONObject param){
|
||||
return new ResponseEntity<>( HttpStatus.OK);
|
||||
}
|
||||
@RequestMapping("kzunload")
|
||||
public ResponseEntity<Object> kzunload(@RequestBody JSONObject param){
|
||||
return new ResponseEntity<>( HttpStatus.OK);
|
||||
}
|
||||
@RequestMapping("kzresidue")
|
||||
public ResponseEntity<Object> kzresidue(@RequestBody JSONObject param){
|
||||
return new ResponseEntity<>( HttpStatus.OK);
|
||||
}
|
||||
@RequestMapping("tmpcallVechile")
|
||||
public ResponseEntity<Object> tmpcallVechile(@RequestBody JSONObject param){
|
||||
return new ResponseEntity<>( HttpStatus.OK);
|
||||
}
|
||||
@RequestMapping("tmpsendVechile")
|
||||
public ResponseEntity<Object> tmpsendVechile(@RequestBody JSONObject param){
|
||||
return new ResponseEntity<>( HttpStatus.OK);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -3,7 +3,7 @@ package org.nl.wms.pda_manage.pda.service;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import org.nl.common.utils.api.CommonResult;
|
||||
import org.nl.wms.pda_manage.pda.dto.MaterialDto;
|
||||
import org.nl.wms.pda_manage.pda.service.dto.MaterialDto;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package org.nl.wms.pda_manage.pda.dto;
|
||||
package org.nl.wms.pda_manage.pda.service.dto;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package org.nl.wms.pda_manage.pda.dto;
|
||||
package org.nl.wms.pda_manage.pda.service.dto;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@@ -8,7 +8,6 @@ import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import io.jsonwebtoken.lang.Assert;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
@@ -18,7 +17,6 @@ import org.nl.common.enums.StatusEnum;
|
||||
import org.nl.common.utils.*;
|
||||
import org.nl.common.utils.api.CommonResult;
|
||||
import org.nl.common.utils.api.RestBusinessTemplate;
|
||||
import org.nl.config.thread.ThreadPoolExecutorUtil;
|
||||
import org.nl.modules.common.exception.BadRequestException;
|
||||
import org.nl.modules.common.utils.RedisUtils;
|
||||
import org.nl.modules.wql.WQL;
|
||||
@@ -27,7 +25,7 @@ import org.nl.modules.wql.util.WqlUtil;
|
||||
import org.nl.wms.ext.acs.service.WmsToAcsService;
|
||||
import org.nl.wms.masterdata_manage.service.material.IMdMeMaterialbaseService;
|
||||
import org.nl.wms.masterdata_manage.service.material.dao.MdMeMaterialbase;
|
||||
import org.nl.wms.pda_manage.pda.dto.MaterialDto;
|
||||
import org.nl.wms.pda_manage.pda.service.dto.MaterialDto;
|
||||
import org.nl.wms.pda_manage.pda.service.CacheLineHandService;
|
||||
import org.nl.wms.product_manage.service.device.IPdmBiDeviceService;
|
||||
import org.nl.wms.product_manage.service.device.dao.PdmBiDevice;
|
||||
@@ -46,7 +44,6 @@ import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Qualifier;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.scheduling.annotation.Async;
|
||||
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
|
||||
@@ -0,0 +1,200 @@
|
||||
package org.nl.wms.product_manage.sch.tasks.callEmpty;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.lang.Assert;
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.nl.common.enums.AcsTaskEnum;
|
||||
import org.nl.common.enums.StatusEnum;
|
||||
import org.nl.common.enums.WorkerOrderEnum;
|
||||
import org.nl.common.utils.MapOf;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.modules.common.exception.BadRequestException;
|
||||
import org.nl.modules.system.util.CodeUtil;
|
||||
import org.nl.wms.ext.acs.service.WmsToAcsService;
|
||||
import org.nl.wms.product_manage.sch.manage.AbstractAcsTask;
|
||||
import org.nl.wms.product_manage.service.workorder.IPdmProduceWorkorderService;
|
||||
import org.nl.wms.product_manage.service.workorder.dao.PdmProduceWorkorder;
|
||||
import org.nl.wms.scheduler_manage.service.point.ISchBasePointService;
|
||||
import org.nl.wms.scheduler_manage.service.point.dao.SchBasePoint;
|
||||
import org.nl.wms.scheduler_manage.service.task.ISchBaseTaskService;
|
||||
import org.nl.wms.scheduler_manage.service.task.dao.SchBaseTask;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 清洗下料叫空框请求
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
public class WashCallEmptyTask extends AbstractAcsTask {
|
||||
|
||||
@Autowired
|
||||
private IPdmProduceWorkorderService workorderService;
|
||||
@Autowired
|
||||
private ISchBaseTaskService taskService;
|
||||
@Autowired
|
||||
private ISchBasePointService pointService;
|
||||
@Autowired
|
||||
private WmsToAcsService wms;
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void updateTaskStatus(JSONObject param, String status) {
|
||||
SchBaseTask task = taskService.getById(param.getString("task_id"));
|
||||
if (status.equals(AcsTaskEnum.STATUS_START.getCode())) {
|
||||
taskService.update(new UpdateWrapper<SchBaseTask>()
|
||||
.set("task_status",StatusEnum.TASK_RUNNING.getCode())
|
||||
.set("update_name","acs")
|
||||
.set("update_time",DateUtil.now()).eq("task_id",task.getTask_id()));
|
||||
}
|
||||
if (status.equals(AcsTaskEnum.STATUS_FINISH.getCode())) {
|
||||
// 完成
|
||||
taskService.update(new UpdateWrapper<SchBaseTask>()
|
||||
.set("task_status",StatusEnum.TASK_FINISH.getCode())
|
||||
.set("update_name","acs")
|
||||
.set("update_time",DateUtil.now()).eq("task_id",task.getTask_id()));
|
||||
pointService.update(new UpdateWrapper<SchBasePoint>()
|
||||
.set("lock_type",StatusEnum.LOCK_OFF.getCode())
|
||||
.in("point_code",task.getPoint_code1(),task.getPoint_code2(),task.getPoint_code3()));
|
||||
}
|
||||
if (status.equals(AcsTaskEnum.STATUS_CANNEL.getCode())) {
|
||||
taskService.update(new UpdateWrapper<SchBaseTask>()
|
||||
.set("task_status",StatusEnum.TASK_CANNEL.getCode())
|
||||
.set("update_name","acs")
|
||||
.set("update_time",DateUtil.now()).eq("task_id",task.getTask_id()));
|
||||
pointService.update(new UpdateWrapper<SchBasePoint>()
|
||||
.set("lock_type",StatusEnum.LOCK_OFF.getCode())
|
||||
.in("point_code",task.getPoint_code1(),task.getPoint_code2(),task.getPoint_code3()));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public String createTask(JSONObject param) {
|
||||
String end_point_code = param.getString("device_code");
|
||||
PdmProduceWorkorder order = workorderService.getOne(new QueryWrapper<PdmProduceWorkorder>()
|
||||
.eq("workorder_code", param.getString("workorder_code"))
|
||||
.eq("is_delete", false)
|
||||
.lt("workorder_status", WorkerOrderEnum.COMPLETE.getCode()));
|
||||
Assert.notNull(order, String.format("下发工单%s不存在未完成工单", param.getString("workorder_code")));
|
||||
//?刻字满料请求:可以存在多个任务?
|
||||
List<SchBaseTask> list = taskService.list(new QueryWrapper<SchBaseTask>()
|
||||
.lt("task_status", StatusEnum.TASK_FINISH.getCode())
|
||||
.and(wa->wa
|
||||
.eq("point_code1", param.getString("device_code"))
|
||||
.or()
|
||||
.eq("point_code2", param.getString("device_code")))
|
||||
);
|
||||
if (!CollectionUtils.isEmpty(list)){
|
||||
throw new BadRequestException(String.format("设备%s存在未完成任务"+list.stream().map(SchBaseTask::getTask_id).collect(Collectors.toList()).toString(), param.getString("device_code")));
|
||||
}
|
||||
// 查找任务状态
|
||||
String taskdtl_id = IdUtil.getSnowflake(1, 1).nextId() + "";
|
||||
JSONObject task = new JSONObject();
|
||||
task.put("task_id", taskdtl_id);
|
||||
task.put("task_name", AcsTaskEnum.TASK_PLOTTER_EMPTY.getDesc());
|
||||
task.put("task_type", AcsTaskEnum.TASK_PLOTTER_EMPTY.getCode());
|
||||
task.put("task_code", CodeUtil.getNewCode("TASK_CODE"));
|
||||
task.put("acs_task_type", AcsTaskEnum.ACS_TASK_TYPE_NON_WEIGHING_TASK_OF_PS20.getCode());
|
||||
task.put("material_id", order.getMaterial_id());
|
||||
task.put("task_status", StatusEnum.TASK_CREATE.getCode());
|
||||
task.put("point_code2", end_point_code);
|
||||
task.put("handle_class", this.getClass().getName());
|
||||
task.put("is_delete", StatusEnum.STATUS_FLASE.getCode());
|
||||
String currentUserId = SecurityUtils.getCurrentUserId();
|
||||
task.put("create_id", currentUserId);
|
||||
task.put("create_name", SecurityUtils.getCurrentNickName());
|
||||
task.put("update_id", currentUserId);
|
||||
task.put("update_name", SecurityUtils.getCurrentNickName());
|
||||
task.put("create_time", DateUtil.now());
|
||||
task.put("update_time", DateUtil.now());
|
||||
task.put("priority", "1");
|
||||
task.put("agv_system_type", AcsTaskEnum.AGV_SYSTEM_XC.getCode());
|
||||
task.put("table_fk_id",order.getWorkorder_code());
|
||||
SchBaseTask schBaseTask = task.toJavaObject(SchBaseTask.class);
|
||||
taskService.save(schBaseTask);
|
||||
// 找终点
|
||||
try {
|
||||
pointConfirm(task);
|
||||
JSONArray data = new JSONArray();
|
||||
data.add(task);
|
||||
// 下发
|
||||
wms.issueTaskToAcs2(data);
|
||||
} catch (Exception ex) {
|
||||
log.error("刻字请求异常,error:{}",ex);
|
||||
schBaseTask.setRemark(ex.getMessage());
|
||||
schBaseTask.setUpdate_time(new Date());
|
||||
schBaseTask.setUpdate_name("acs");
|
||||
schBaseTask.setTask_status(StatusEnum.TASK_START_ERROR.getCode());
|
||||
taskService.save(schBaseTask);
|
||||
}
|
||||
return taskdtl_id;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void cancel(String task_id) {
|
||||
taskService.update(new UpdateWrapper<SchBaseTask>()
|
||||
.set("task_status",StatusEnum.TASK_CANNEL.getCode())
|
||||
.set("update_name","acs")
|
||||
.set("update_time",DateUtil.now()).eq("task_id",task_id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 满料请求
|
||||
* 从刻字机满料缓存区中获取空位放入就行
|
||||
* @param taskObj: 任务对象
|
||||
*/
|
||||
@Override
|
||||
public void pointConfirm(JSONObject taskObj) {
|
||||
// 去刻字缓存区寻找空框 TODO:空箱
|
||||
List<Map<String, String>> points = pointService.queryVehicle(
|
||||
MapOf.of("is_used", "1",
|
||||
"lock_type", StatusEnum.LOCK_OFF.getCode(),
|
||||
"region_code", "A1_KZHC",
|
||||
"material_null", "material_null"));
|
||||
if (ObjectUtil.isNotEmpty(points)) {
|
||||
Map<String, String> map = points.get(0);
|
||||
if (CollectionUtils.isEmpty(map)|| StringUtils.isEmpty(map.get("point_code"))){
|
||||
throw new BadRequestException("刻字缓存区没有可用货位.");
|
||||
}
|
||||
pointService.update(new UpdateWrapper<SchBasePoint>()
|
||||
.set("lock_type",StatusEnum.LOCK_ON.getCode())
|
||||
.eq("point_code",map.get("point_code")));
|
||||
// 设置点位
|
||||
taskObj.put("update_time", DateUtil.now());
|
||||
taskObj.put("point_code1",map.get("point_code"));
|
||||
SchBaseTask schBaseTask = taskObj.toJavaObject(SchBaseTask.class);
|
||||
schBaseTask.setTask_status(StatusEnum.TASK_START_END_P.getCode());
|
||||
schBaseTask.setUpdate_time(new Date());
|
||||
taskService.updateById(schBaseTask);
|
||||
} else {
|
||||
throw new BadRequestException("刻字缓存区没有可用货位.");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<SchBaseTask> schedulerTask(List<SchBaseTask> tasks) {
|
||||
ArrayList<SchBaseTask> Merge = new ArrayList<>();
|
||||
if (!CollectionUtils.isEmpty(tasks)){
|
||||
for (SchBaseTask task : tasks) {
|
||||
task.setTask_group_id(org.nl.common.utils.IdUtil.getStringId());
|
||||
Merge.add(task);
|
||||
}
|
||||
}
|
||||
return Merge;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,213 @@
|
||||
package org.nl.wms.product_manage.sch.tasks.sendMaterial;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.lang.Assert;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.common.enums.AcsTaskEnum;
|
||||
import org.nl.common.enums.StatusEnum;
|
||||
import org.nl.common.enums.WorkerOrderEnum;
|
||||
import org.nl.common.utils.IdUtil;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.modules.common.exception.BadRequestException;
|
||||
import org.nl.modules.system.util.CodeUtil;
|
||||
import org.nl.wms.ext.acs.service.WmsToAcsService;
|
||||
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;
|
||||
import org.nl.wms.masterdata_manage.storage.service.storage.dao.StIvtStructattr;
|
||||
import org.nl.wms.product_manage.sch.manage.AbstractAcsTask;
|
||||
import org.nl.wms.product_manage.sch.manage.TaskStatusEnum;
|
||||
import org.nl.wms.product_manage.service.workorder.IPdmProduceWorkorderService;
|
||||
import org.nl.wms.product_manage.service.workorder.dao.PdmProduceWorkorder;
|
||||
import org.nl.wms.scheduler_manage.service.point.ISchBasePointService;
|
||||
import org.nl.wms.scheduler_manage.service.point.dao.SchBasePoint;
|
||||
import org.nl.wms.scheduler_manage.service.task.ISchBaseTaskService;
|
||||
import org.nl.wms.scheduler_manage.service.task.dao.SchBaseTask;
|
||||
import org.nl.wms.storage_manage.IOSEnum;
|
||||
import org.nl.wms.storage_manage.productmanage.util.DivRuleCpService;
|
||||
import org.nl.wms.storage_manage.productmanage.util.RuleUtil;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.TransactionDefinition;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/*
|
||||
* @author ZZQ 清洗异常时去异常位
|
||||
* @Date 2023/6/16 08:40
|
||||
*/
|
||||
@Service
|
||||
@Slf4j
|
||||
public class WashSendMaterialQZTask extends AbstractAcsTask {
|
||||
|
||||
@Autowired
|
||||
private DivRuleCpService divRuleCpService;
|
||||
@Autowired
|
||||
private IStIvtSectattrService sectattrService;
|
||||
@Autowired
|
||||
private IPdmProduceWorkorderService workorderService;
|
||||
@Autowired
|
||||
private ISchBaseTaskService taskService;
|
||||
@Autowired
|
||||
private ISchBasePointService pointService;
|
||||
@Autowired
|
||||
private WmsToAcsService wms;
|
||||
@Override
|
||||
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void updateTaskStatus(JSONObject param, String status) {
|
||||
SchBaseTask task = taskService.getById(param.getString("task_id"));
|
||||
if (status.equals(AcsTaskEnum.STATUS_START.getCode())) {
|
||||
taskService.update(new UpdateWrapper<SchBaseTask>()
|
||||
.set("task_status", StatusEnum.TASK_RUNNING.getCode())
|
||||
.set("update_name","acs")
|
||||
.set("update_time", DateUtil.now()).eq("task_id",task.getTask_id()));
|
||||
}
|
||||
if (status.equals(AcsTaskEnum.STATUS_FINISH.getCode())) {
|
||||
// 完成
|
||||
taskService.update(new UpdateWrapper<SchBaseTask>()
|
||||
.set("task_status",StatusEnum.TASK_FINISH.getCode())
|
||||
.set("update_name","acs")
|
||||
.set("update_time",DateUtil.now()).eq("task_id",task.getTask_id()));
|
||||
pointService.update(new UpdateWrapper<SchBasePoint>()
|
||||
.set("lock_type",StatusEnum.LOCK_OFF.getCode())
|
||||
.in("point_code",task.getPoint_code1(),task.getPoint_code2(),task.getPoint_code3()));
|
||||
}
|
||||
if (status.equals(AcsTaskEnum.STATUS_CANNEL.getCode())) {
|
||||
// 完成
|
||||
taskService.update(new UpdateWrapper<SchBaseTask>()
|
||||
.set("task_status",StatusEnum.TASK_CANNEL.getCode())
|
||||
.set("update_name","acs")
|
||||
.set("update_time",DateUtil.now()).eq("task_id",task.getTask_id()));
|
||||
pointService.update(new UpdateWrapper<SchBasePoint>()
|
||||
.set("lock_type",StatusEnum.LOCK_OFF.getCode())
|
||||
.in("point_code",task.getPoint_code1(),task.getPoint_code2(),task.getPoint_code3()));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public String createTask(JSONObject param) {
|
||||
String start_point_code = param.getString("device_code");
|
||||
PdmProduceWorkorder order = workorderService.getOne(new QueryWrapper<PdmProduceWorkorder>()
|
||||
.eq("workorder_code", param.getString("workorder_code"))
|
||||
.eq("is_delete", false)
|
||||
.lt("workorder_status", WorkerOrderEnum.COMPLETE.getCode()));
|
||||
Assert.notNull(order, String.format("下发工单%s不存在未完成工单", param.getString("workorder_code")));
|
||||
//?刻字满料请求:可以存在多个任务?
|
||||
List<SchBaseTask> list = taskService.list(new QueryWrapper<SchBaseTask>()
|
||||
.lt("task_status", StatusEnum.TASK_FINISH.getCode())
|
||||
.and(wa->wa
|
||||
.eq("point_code1", param.getString("device_code"))
|
||||
.or()
|
||||
.eq("point_code2", param.getString("device_code")))
|
||||
);
|
||||
if (!CollectionUtils.isEmpty(list)){
|
||||
throw new BadRequestException(String.format("设备%s存在未完成任务"+list.stream().map(SchBaseTask::getTask_id).collect(Collectors.toList()).toString(), param.getString("device_code")));
|
||||
}
|
||||
// 查找任务状态
|
||||
String taskdtl_id = IdUtil.getStringId();
|
||||
JSONObject task = new JSONObject();
|
||||
task.put("task_id", taskdtl_id);
|
||||
task.put("task_name", AcsTaskEnum.REQUEST_WASH_FULL_ERROR.getDesc());
|
||||
task.put("task_type", AcsTaskEnum.REQUEST_WASH_FULL_ERROR.getCode());
|
||||
task.put("task_code", CodeUtil.getNewCode("TASK_CODE"));
|
||||
task.put("acs_task_type", AcsTaskEnum.ACS_TASK_TYPE_NON_WEIGHING_TASK_OF_PS20.getCode());
|
||||
task.put("material_id", order.getMaterial_id());
|
||||
task.put("material_qty", param.getString("weight"));
|
||||
task.put("vehicle_code", param.getString("vehicle_code"));
|
||||
task.put("task_status", TaskStatusEnum.CREATED.getCode());
|
||||
task.put("point_code1", start_point_code);
|
||||
task.put("handle_class", this.getClass().getName());
|
||||
task.put("is_delete", StatusEnum.STATUS_FLASE.getCode());
|
||||
String currentUserId = SecurityUtils.getCurrentUserId();
|
||||
task.put("create_id", currentUserId);
|
||||
task.put("create_name", SecurityUtils.getCurrentNickName());
|
||||
task.put("create_time", DateUtil.now());
|
||||
task.put("priority", "1");
|
||||
task.put("finished_type", "1");
|
||||
task.put("agv_system_type", AcsTaskEnum.AGV_SYSTEM_XC.getCode());
|
||||
task.put("table_fk_id",order.getWorkorder_code());
|
||||
SchBaseTask schBaseTask = task.toJavaObject(SchBaseTask.class);
|
||||
taskService.save(schBaseTask);
|
||||
// 找终点
|
||||
try {
|
||||
pointConfirm(task);
|
||||
JSONArray data = new JSONArray();
|
||||
data.add(task);
|
||||
// 下发
|
||||
wms.issueTaskToAcs2(data);
|
||||
} catch (Exception ex) {
|
||||
// 未找到
|
||||
log.error("刻字满料请求异常,error:{}",ex);
|
||||
schBaseTask.setRemark(ex.getMessage());
|
||||
schBaseTask.setUpdate_time(new Date());
|
||||
schBaseTask.setUpdate_name("acs");
|
||||
schBaseTask.setTask_status(StatusEnum.TASK_START_ERROR.getCode());
|
||||
taskService.save(schBaseTask);
|
||||
}
|
||||
return taskdtl_id;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void cancel(String task_id) {
|
||||
taskService.update(new UpdateWrapper<SchBaseTask>()
|
||||
.set("task_status",StatusEnum.TASK_CANNEL.getCode())
|
||||
.set("update_name","acs")
|
||||
.set("update_time",DateUtil.now()).eq("task_id",task_id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 满料请求
|
||||
* 从刻字机满料缓存区中获取空位放入就行
|
||||
*/
|
||||
@Override
|
||||
@Transactional(timeout=TransactionDefinition.ISOLATION_READ_UNCOMMITTED)
|
||||
public void pointConfirm(JSONObject task) {
|
||||
// 去刻字缓存区寻找空位
|
||||
List<SchBasePoint> list = pointService.list(new QueryWrapper<SchBasePoint>().isNull("vehicle_code")
|
||||
.eq("is_used", "1")
|
||||
.eq("region_code","A1_BCP_YC")//半成品
|
||||
.eq("lock_type", StatusEnum.LOCK_OFF.getCode()));
|
||||
|
||||
if (ObjectUtil.isNotEmpty(list)) {
|
||||
// 找到位置
|
||||
// 点位上锁
|
||||
SchBasePoint point = list.get(0);
|
||||
point.setLock_type(StatusEnum.LOCK_ON.getCode());
|
||||
pointService.updateById(point);
|
||||
// 设置点位
|
||||
task.put("update_time", DateUtil.now());
|
||||
task.put("point_code2",point.getPoint_code());
|
||||
SchBaseTask schBaseTask = task.toJavaObject(SchBaseTask.class);
|
||||
schBaseTask.setTask_status(StatusEnum.TASK_START_END_P.getCode());
|
||||
schBaseTask.setTask_type(AcsTaskEnum.TASK_WASH_FULL_QZ.getCode());
|
||||
schBaseTask.setUpdate_time(new Date());
|
||||
taskService.updateById(schBaseTask);
|
||||
} else {
|
||||
throw new BadRequestException("异常位没有可用货位.");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<SchBaseTask> schedulerTask(List<SchBaseTask> tasks) {
|
||||
ArrayList<SchBaseTask> Merge = new ArrayList<>();
|
||||
if (!CollectionUtils.isEmpty(tasks)){
|
||||
for (SchBaseTask task : tasks) {
|
||||
task.setTask_group_id(IdUtil.getStringId());
|
||||
Merge.add(task);
|
||||
}
|
||||
}
|
||||
return Merge;
|
||||
}
|
||||
}
|
||||
@@ -8,10 +8,12 @@ import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.nl.common.enums.AcsTaskEnum;
|
||||
import org.nl.common.enums.StatusEnum;
|
||||
import org.nl.common.enums.WorkerOrderEnum;
|
||||
import org.nl.common.utils.IdUtil;
|
||||
import org.nl.common.utils.RedissonUtils;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.modules.common.exception.BadRequestException;
|
||||
import org.nl.modules.system.util.CodeUtil;
|
||||
@@ -31,6 +33,7 @@ import org.nl.wms.scheduler_manage.service.task.dao.SchBaseTask;
|
||||
import org.nl.wms.storage_manage.IOSEnum;
|
||||
import org.nl.wms.storage_manage.productmanage.util.DivRuleCpService;
|
||||
import org.nl.wms.storage_manage.productmanage.util.RuleUtil;
|
||||
import org.nl.wms.storage_manage.semimanage.service.structIvt.dao.StIvtStructivtBcp;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.TransactionDefinition;
|
||||
@@ -45,11 +48,14 @@ import java.util.stream.Collectors;
|
||||
/*
|
||||
* @author ZZQ
|
||||
* @Date 2023/6/16 08:40
|
||||
* 清洗机下料满料请求
|
||||
*/
|
||||
@Service
|
||||
@Slf4j
|
||||
public class WashSendMaterialTask extends AbstractAcsTask {
|
||||
|
||||
@Autowired
|
||||
private IStIvtStructattrService structattrService;
|
||||
@Autowired
|
||||
private DivRuleCpService divRuleCpService;
|
||||
@Autowired
|
||||
@@ -61,6 +67,8 @@ public class WashSendMaterialTask extends AbstractAcsTask {
|
||||
@Autowired
|
||||
private ISchBasePointService pointService;
|
||||
@Autowired
|
||||
private WashSendMaterialQZTask sendMaterialQZTask;
|
||||
@Autowired
|
||||
private WmsToAcsService wms;
|
||||
@Override
|
||||
|
||||
@@ -98,63 +106,69 @@ public class WashSendMaterialTask extends AbstractAcsTask {
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public String createTask(JSONObject param) {
|
||||
String start_point_code = param.getString("device_code");
|
||||
PdmProduceWorkorder order = workorderService.getOne(new QueryWrapper<PdmProduceWorkorder>()
|
||||
.eq("workorder_code", param.getString("workorder_code"))
|
||||
.eq("is_delete", false)
|
||||
.lt("workorder_status", WorkerOrderEnum.COMPLETE.getCode()));
|
||||
Assert.notNull(order, String.format("下发工单%s不存在未完成工单", param.getString("workorder_code")));
|
||||
//?刻字满料请求:可以存在多个任务?
|
||||
List<SchBaseTask> list = taskService.list(new QueryWrapper<SchBaseTask>()
|
||||
.lt("task_status", StatusEnum.TASK_FINISH.getCode())
|
||||
.and(wa->wa
|
||||
.eq("point_code1", param.getString("device_code"))
|
||||
.or()
|
||||
.eq("point_code2", param.getString("device_code")))
|
||||
);
|
||||
if (!CollectionUtils.isEmpty(list)){
|
||||
throw new BadRequestException(String.format("设备%s存在未完成任务"+list.stream().map(SchBaseTask::getTask_id).collect(Collectors.toList()).toString(), param.getString("device_code")));
|
||||
}
|
||||
// 查找任务状态
|
||||
String taskdtl_id = IdUtil.getStringId();
|
||||
JSONObject task = new JSONObject();
|
||||
task.put("task_id", taskdtl_id);
|
||||
task.put("task_name", AcsTaskEnum.REQUEST_WASH_FULL.getDesc());
|
||||
task.put("task_type", AcsTaskEnum.REQUEST_WASH_FULL.getCode());
|
||||
task.put("task_code", CodeUtil.getNewCode("TASK_CODE"));
|
||||
task.put("acs_task_type", AcsTaskEnum.ACS_TASK_TYPE_NON_WEIGHING_TASK_OF_PS20.getCode());
|
||||
task.put("material_id", order.getMaterial_id());
|
||||
task.put("task_status", TaskStatusEnum.CREATED.getCode());
|
||||
task.put("point_code1", start_point_code);
|
||||
task.put("handle_class", this.getClass().getName());
|
||||
task.put("is_delete", StatusEnum.STATUS_FLASE.getCode());
|
||||
String currentUserId = SecurityUtils.getCurrentUserId();
|
||||
task.put("create_id", currentUserId);
|
||||
task.put("create_name", SecurityUtils.getCurrentNickName());
|
||||
task.put("create_time", DateUtil.now());
|
||||
task.put("priority", "1");
|
||||
task.put("finished_type", "1");
|
||||
task.put("agv_system_type", AcsTaskEnum.AGV_SYSTEM_XC.getCode());
|
||||
task.put("table_fk_id",order.getWorkorder_code());
|
||||
SchBaseTask schBaseTask = task.toJavaObject(SchBaseTask.class);
|
||||
taskService.save(schBaseTask);
|
||||
// 找终点
|
||||
try {
|
||||
pointConfirm(task);
|
||||
JSONArray data = new JSONArray();
|
||||
data.add(task);
|
||||
// 下发
|
||||
wms.issueTaskToAcs2(data);
|
||||
} catch (Exception ex) {
|
||||
// 未找到
|
||||
log.error("刻字满料请求异常,error:{}",ex);
|
||||
schBaseTask.setRemark(ex.getMessage());
|
||||
schBaseTask.setUpdate_time(new Date());
|
||||
schBaseTask.setUpdate_name("acs");
|
||||
schBaseTask.setTask_status(StatusEnum.TASK_START_ERROR.getCode());
|
||||
if (StringUtils.isEmpty(param.getString("weight"))||StringUtils.isEmpty(param.getString("vehicle_code"))){
|
||||
return sendMaterialQZTask.createTask(param);
|
||||
}else {
|
||||
String start_point_code = param.getString("device_code");
|
||||
PdmProduceWorkorder order = workorderService.getOne(new QueryWrapper<PdmProduceWorkorder>()
|
||||
.eq("workorder_code", param.getString("workorder_code"))
|
||||
.eq("is_delete", false)
|
||||
.lt("workorder_status", WorkerOrderEnum.COMPLETE.getCode()));
|
||||
Assert.notNull(order, String.format("下发工单%s不存在未完成工单", param.getString("workorder_code")));
|
||||
//?刻字满料请求:可以存在多个任务?
|
||||
List<SchBaseTask> list = taskService.list(new QueryWrapper<SchBaseTask>()
|
||||
.lt("task_status", StatusEnum.TASK_FINISH.getCode())
|
||||
.and(wa->wa
|
||||
.eq("point_code1", param.getString("device_code"))
|
||||
.or()
|
||||
.eq("point_code2", param.getString("device_code")))
|
||||
);
|
||||
if (!CollectionUtils.isEmpty(list)){
|
||||
throw new BadRequestException(String.format("设备%s存在未完成任务"+list.stream().map(SchBaseTask::getTask_id).collect(Collectors.toList()).toString(), param.getString("device_code")));
|
||||
}
|
||||
// 查找任务状态
|
||||
String taskdtl_id = IdUtil.getStringId();
|
||||
JSONObject task = new JSONObject();
|
||||
task.put("task_id", taskdtl_id);
|
||||
task.put("task_name", AcsTaskEnum.REQUEST_WASH_FULL.getDesc());
|
||||
task.put("task_type", AcsTaskEnum.REQUEST_WASH_FULL.getCode());
|
||||
task.put("task_code", CodeUtil.getNewCode("TASK_CODE"));
|
||||
task.put("acs_task_type", AcsTaskEnum.ACS_TASK_TYPE_NON_WEIGHING_TASK_OF_PS20.getCode());
|
||||
task.put("material_id", order.getMaterial_id());
|
||||
task.put("material_qty", param.getString("weight"));
|
||||
task.put("vehicle_code", param.getString("vehicle_code"));
|
||||
task.put("task_status", TaskStatusEnum.CREATED.getCode());
|
||||
task.put("point_code1", start_point_code);
|
||||
task.put("handle_class", this.getClass().getName());
|
||||
task.put("is_delete", StatusEnum.STATUS_FLASE.getCode());
|
||||
String currentUserId = SecurityUtils.getCurrentUserId();
|
||||
task.put("create_id", currentUserId);
|
||||
task.put("create_name", SecurityUtils.getCurrentNickName());
|
||||
task.put("create_time", DateUtil.now());
|
||||
task.put("priority", "1");
|
||||
task.put("finished_type", "1");
|
||||
task.put("agv_system_type", AcsTaskEnum.AGV_SYSTEM_XC.getCode());
|
||||
task.put("table_fk_id",order.getWorkorder_code());
|
||||
SchBaseTask schBaseTask = task.toJavaObject(SchBaseTask.class);
|
||||
taskService.save(schBaseTask);
|
||||
// 找终点
|
||||
try {
|
||||
pointConfirm(task);
|
||||
JSONArray data = new JSONArray();
|
||||
data.add(task);
|
||||
// 下发
|
||||
wms.issueTaskToAcs2(data);
|
||||
} catch (Exception ex) {
|
||||
// 未找到
|
||||
log.error("刻字满料请求异常,error:{}",ex);
|
||||
schBaseTask.setRemark(ex.getMessage());
|
||||
schBaseTask.setUpdate_time(new Date());
|
||||
schBaseTask.setUpdate_name("acs");
|
||||
schBaseTask.setTask_status(StatusEnum.TASK_START_ERROR.getCode());
|
||||
taskService.save(schBaseTask);
|
||||
}
|
||||
return taskdtl_id;
|
||||
}
|
||||
return taskdtl_id;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -167,33 +181,31 @@ public class WashSendMaterialTask extends AbstractAcsTask {
|
||||
|
||||
/**
|
||||
* 满料请求
|
||||
* 从刻字机满料缓存区中获取空位放入就行
|
||||
* 清洗机入半成品库
|
||||
*/
|
||||
@Override
|
||||
@Transactional(timeout=TransactionDefinition.ISOLATION_READ_UNCOMMITTED)
|
||||
public void pointConfirm(JSONObject task) {
|
||||
// 去刻字缓存区寻找空位
|
||||
//分配货位。下发任务,更新主单据状态。更新明细任务
|
||||
StIvtSectattr sect = sectattrService.getOne(new QueryWrapper<StIvtSectattr>().eq("sect_name", "半成品库区"));
|
||||
JSONObject jo = new JSONObject();
|
||||
jo.put("sect_id", sect.getSect_id());
|
||||
jo.put("stor_id", sect.getStor_id());
|
||||
jo.put("rule_type", RuleUtil.PRODUCTION_IN_1);
|
||||
StIvtStructattr stIvtStructattr = divRuleCpService.divRuleIn(jo);
|
||||
//少出入库记录
|
||||
if (ObjectUtil.isEmpty(stIvtStructattr)) {
|
||||
throw new BadRequestException("无可分配货位");
|
||||
}
|
||||
stIvtStructattr.setLock_type(IOSEnum.LOCK_TYPE.code("入库锁"));
|
||||
stIvtStructattr.setInv_code(task.getString("task_code"));
|
||||
// 设置点位
|
||||
task.put("update_time", DateUtil.now());
|
||||
task.put("point_code2",stIvtStructattr.getStruct_code());
|
||||
SchBaseTask schBaseTask = task.toJavaObject(SchBaseTask.class);
|
||||
schBaseTask.setTask_status(StatusEnum.TASK_START_END_P.getCode());
|
||||
schBaseTask.setUpdate_time(new Date());
|
||||
schBaseTask.setTask_type(AcsTaskEnum.TASK_STRUCT_IN.getCode());
|
||||
taskService.updateById(schBaseTask);
|
||||
RedissonUtils.lock(()->{
|
||||
// 去刻字缓存区寻找空位
|
||||
//分配货位。下发任务,更新主单据状态。更新明细任务
|
||||
StIvtSectattr sect = sectattrService.getOne(new QueryWrapper<StIvtSectattr>().eq("sect_name", "半成品库区"));
|
||||
JSONObject jo = new JSONObject();
|
||||
jo.put("sect_id", sect.getSect_id());
|
||||
jo.put("stor_id", sect.getStor_id());
|
||||
jo.put("rule_type", RuleUtil.PRODUCTION_IN_1);
|
||||
StIvtStructattr stIvtStructattr = divRuleCpService.divRuleIn(jo);
|
||||
//少出入库记录
|
||||
if (ObjectUtil.isEmpty(stIvtStructattr)) {
|
||||
throw new BadRequestException("无可分配货位");
|
||||
}
|
||||
// 设置点位
|
||||
SchBaseTask schBaseTask = task.toJavaObject(SchBaseTask.class);
|
||||
schBaseTask.setTask_status(StatusEnum.TASK_START_END_P.getCode());
|
||||
schBaseTask.setUpdate_time(new Date());
|
||||
schBaseTask.setTask_type(AcsTaskEnum.TASK_STRUCT_IN.getCode());
|
||||
taskService.updateById(schBaseTask);
|
||||
structattrService.lockStruct(stIvtStructattr.getStruct_code(), "入库锁",schBaseTask.getTask_id());
|
||||
},"banchengpin_ruku",1);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -56,4 +56,10 @@ public interface ISchBasePointService extends IService<SchBasePoint> {
|
||||
Map getWorkprodureByCode(String id);
|
||||
|
||||
List<Map<String,String>> getAllPointRegin(String points);
|
||||
|
||||
/**
|
||||
* 任务回调
|
||||
* @param jo
|
||||
*/
|
||||
void taskOperate(JSONObject jo);
|
||||
}
|
||||
|
||||
@@ -6,6 +6,7 @@ import cn.hutool.core.util.StrUtil;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.github.pagehelper.Page;
|
||||
import com.github.pagehelper.PageHelper;
|
||||
@@ -14,16 +15,25 @@ import io.jsonwebtoken.lang.Assert;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.nl.common.TableDataInfo;
|
||||
import org.nl.common.domain.query.PageQuery;
|
||||
import org.nl.common.enums.AcsTaskEnum;
|
||||
import org.nl.common.enums.StatusEnum;
|
||||
import org.nl.common.utils.IdUtil;
|
||||
import org.nl.common.utils.MapOf;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.modules.common.exception.BadRequestException;
|
||||
import org.nl.modules.wql.core.bean.WQLObject;
|
||||
import org.nl.wms.masterdata_manage.storage.service.storage.dao.StIvtStructattr;
|
||||
import org.nl.wms.product_manage.sch.manage.TaskStatusEnum;
|
||||
import org.nl.wms.scheduler_manage.service.point.ISchBasePointService;
|
||||
import org.nl.wms.scheduler_manage.service.point.dao.SchBasePoint;
|
||||
import org.nl.wms.scheduler_manage.service.point.dao.mapper.SchBasePointMapper;
|
||||
import org.nl.wms.scheduler_manage.service.region.ISchBaseRegionService;
|
||||
import org.nl.wms.scheduler_manage.service.region.dao.SchBaseRegion;
|
||||
import org.nl.wms.scheduler_manage.service.task.ISchBaseTaskService;
|
||||
import org.nl.wms.scheduler_manage.service.task.dao.SchBaseTask;
|
||||
import org.nl.wms.storage_manage.CHECKEnum;
|
||||
import org.nl.wms.storage_manage.productmanage.service.check.dao.StIvtCheckdtlCp;
|
||||
import org.nl.wms.storage_manage.productmanage.service.check.dao.StIvtCheckmstCp;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@@ -47,6 +57,9 @@ public class SchBasePointServiceImpl extends ServiceImpl<SchBasePointMapper, Sch
|
||||
@Autowired
|
||||
private ISchBaseRegionService schBaseRegionService;
|
||||
|
||||
@Autowired
|
||||
private ISchBaseTaskService taskService;
|
||||
|
||||
@Override
|
||||
public Object queryAll(Map whereJson, PageQuery pageQuery) {
|
||||
Page<Object> page = PageHelper.startPage(pageQuery.getPage()+1, pageQuery.getSize());
|
||||
@@ -193,4 +206,21 @@ public class SchBasePointServiceImpl extends ServiceImpl<SchBasePointMapper, Sch
|
||||
public List<Map<String,String>> getAllPointRegin(String points) {
|
||||
return this.baseMapper.getRegionCollent(points);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void taskOperate(JSONObject form) {
|
||||
String status = form.getString("status");
|
||||
|
||||
if (status.equals(AcsTaskEnum.STATUS_FINISH.getCode())) {
|
||||
//释放目标点位
|
||||
// 更新任务为完成
|
||||
SchBaseTask one = taskService.getOne(new QueryWrapper<SchBaseTask>()
|
||||
.eq("task_id", form.getString("task_id")));
|
||||
this.update(new UpdateWrapper<SchBasePoint>()
|
||||
.set("vehicle_code",StringUtils.isEmpty(one.getVehicle_code())?UUID.randomUUID().toString():one.getVehicle_code())
|
||||
.set("vehicle_qty",one.getMaterial_qty())
|
||||
.set("material_id",one.getMaterial_id())
|
||||
.set("lock_type",StatusEnum.LOCK_OFF.getCode()).set("point_code",one.getPoint_code2()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,6 +8,7 @@ import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.common.enums.WorkerOrderEnum;
|
||||
import org.nl.common.utils.BaseCode;
|
||||
import org.nl.common.utils.IdUtil;
|
||||
import org.nl.common.utils.RedissonUtils;
|
||||
import org.nl.wms.masterdata_manage.service.material.IMdMeMaterialbaseService;
|
||||
import org.nl.wms.masterdata_manage.service.material.dao.MdMeMaterialbase;
|
||||
import org.nl.wms.product_manage.sch.tasks.sendMaterial.WashSendMaterialTask;
|
||||
@@ -15,6 +16,7 @@ import org.nl.wms.product_manage.service.workorder.IPdmProduceWorkorderService;
|
||||
import org.nl.wms.product_manage.service.workorder.dao.PdmProduceWorkorder;
|
||||
import org.nl.wms.storage_manage.productmanage.service.structIvt.dao.StIvtStructivtCp;
|
||||
import org.nl.wms.storage_manage.semimanage.service.iostorInv.IStIvtIostorinvBcpOutService;
|
||||
import org.nl.wms.storage_manage.semimanage.service.structIvt.dao.StIvtStructivtBcp;
|
||||
import org.slf4j.MDC;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
@@ -77,51 +79,54 @@ public class EngraveScheduleService {
|
||||
Map<String, List<PdmProduceWorkorder>> collect = list.stream().collect(Collectors.groupingBy(PdmProduceWorkorder::getMaterial_id));
|
||||
//工单开工规则
|
||||
for (Map.Entry<String, List<PdmProduceWorkorder>> entry : collect.entrySet()) {
|
||||
JSONObject form = new JSONObject();
|
||||
form.put("stor_id","528627995269533696");//st_ivt_sectattr紫铜车间-半成品库区
|
||||
form.put("sect_id","1528631044482404352");
|
||||
form.put("material_id",entry.getKey());
|
||||
form.put("product_code","A1");//车间
|
||||
form.put("point_code","A1_KZPP_D");
|
||||
StIvtStructivtCp structivtCp = stIvtIostorinvBcpOutService.autoConfirm(form);
|
||||
if (structivtCp == null){ continue; }
|
||||
//生成输送线到刻字机任务
|
||||
//工单物料分配规则
|
||||
MdMeMaterialbase material = materialbaseService.getOne(new QueryWrapper<MdMeMaterialbase>().eq("material_id", entry.getKey()).eq("is_delete", false));
|
||||
List<PdmProduceWorkorder> current_workorders = entry.getValue();
|
||||
BigDecimal canuse_qty = structivtCp.getCanuse_qty();
|
||||
String grop_id = IdUtil.getStringId();
|
||||
|
||||
for (PdmProduceWorkorder current_workorder : current_workorders) {
|
||||
BigDecimal need = current_workorder.getPlan_qty().subtract(current_workorder.getDq_real_qty());
|
||||
if (need.intValue() <= 0){ continue; }
|
||||
int min = Math.min(canuse_qty.intValue(), need.intValue());
|
||||
JSONObject form = new JSONObject();
|
||||
form.put("stor_id","528627995269533696");//st_ivt_sectattr紫铜车间-半成品库区
|
||||
form.put("sect_id","1528631044482404352");
|
||||
form.put("material_id",entry.getKey());
|
||||
form.put("product_code","A1");//车间
|
||||
form.put("point_code","A1_KZPP_D");//刻字爬坡倒料点
|
||||
StIvtStructivtBcp stIvtStructivtBcp = stIvtIostorinvBcpOutService.autoConfirmout(form);
|
||||
if (stIvtStructivtBcp != null){
|
||||
//生成输送线到刻字机任务
|
||||
//工单物料分配规则
|
||||
MdMeMaterialbase material = materialbaseService.getOne(new QueryWrapper<MdMeMaterialbase>().eq("material_id", entry.getKey()).eq("is_delete", false));
|
||||
List<PdmProduceWorkorder> current_workorders = entry.getValue();
|
||||
BigDecimal canuse_qty = stIvtStructivtBcp.getCanuse_qty();
|
||||
String grop_id = IdUtil.getStringId();
|
||||
|
||||
JSONObject taskForm = new JSONObject();
|
||||
taskForm.put("workorder_code",current_workorder.getWorkorder_code());
|
||||
taskForm.put("device_code",current_workorder.getDevice_code());
|
||||
taskForm.put("qty",min);
|
||||
taskForm.put("weight",material.getNet_weight().doubleValue()*min);
|
||||
taskForm.put("material_id",material.getMaterial_id());
|
||||
taskForm.put("material_code",material.getMaterial_code());
|
||||
taskForm.put("material_spec",material.getMaterial_spec());
|
||||
taskForm.put("task_grop_id", grop_id);
|
||||
engraveCallMaterialTask.createTask(taskForm);
|
||||
canuse_qty = canuse_qty.subtract(need);
|
||||
if (canuse_qty.intValue()<=0){return;}
|
||||
}
|
||||
if (canuse_qty.intValue() > 0){
|
||||
JSONObject taskForm = new JSONObject();
|
||||
taskForm.put("workorder_code"," ");
|
||||
taskForm.put("device_code","");
|
||||
taskForm.put("qty",canuse_qty);
|
||||
taskForm.put("weight",material.getNet_weight().multiply(canuse_qty));
|
||||
taskForm.put("material_id",material.getMaterial_id());
|
||||
taskForm.put("material_code",material.getMaterial_code());
|
||||
taskForm.put("material_spec",material.getMaterial_spec());
|
||||
taskForm.put("task_grop_id", grop_id);
|
||||
engraveCallMaterialTask.createTask(taskForm);
|
||||
}
|
||||
for (PdmProduceWorkorder current_workorder : current_workorders) {
|
||||
BigDecimal need = current_workorder.getPlan_qty().subtract(current_workorder.getDq_real_qty());
|
||||
if (need.intValue() <= 0){ continue; }
|
||||
int min = Math.min(canuse_qty.intValue(), need.intValue());
|
||||
|
||||
JSONObject taskForm = new JSONObject();
|
||||
taskForm.put("workorder_code",current_workorder.getWorkorder_code());
|
||||
taskForm.put("device_code",current_workorder.getDevice_code());
|
||||
taskForm.put("qty",min);
|
||||
taskForm.put("weight",material.getNet_weight().doubleValue()*min);
|
||||
taskForm.put("material_id",material.getMaterial_id());
|
||||
taskForm.put("material_code",material.getMaterial_code());
|
||||
taskForm.put("material_spec",material.getMaterial_spec());
|
||||
taskForm.put("task_grop_id", grop_id);
|
||||
engraveCallMaterialTask.createTask(taskForm);
|
||||
canuse_qty = canuse_qty.subtract(need);
|
||||
if (canuse_qty.intValue()<=0){return;}
|
||||
}
|
||||
if (canuse_qty.intValue() > 0){
|
||||
JSONObject taskForm = new JSONObject();
|
||||
taskForm.put("workorder_code"," ");
|
||||
taskForm.put("device_code","");
|
||||
taskForm.put("qty",canuse_qty);
|
||||
taskForm.put("weight",material.getNet_weight().multiply(canuse_qty));
|
||||
taskForm.put("material_id",material.getMaterial_id());
|
||||
taskForm.put("material_code",material.getMaterial_code());
|
||||
taskForm.put("material_spec",material.getMaterial_spec());
|
||||
taskForm.put("task_grop_id", grop_id);
|
||||
engraveCallMaterialTask.createTask(taskForm);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@ package org.nl.wms.storage_manage.productmanage.util;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import org.nl.wms.masterdata_manage.storage.service.storage.dao.StIvtStructattr;
|
||||
import org.nl.wms.storage_manage.productmanage.service.structIvt.dao.StIvtStructivtCp;
|
||||
import org.nl.wms.storage_manage.semimanage.service.structIvt.dao.StIvtStructivtBcp;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
@@ -39,5 +40,8 @@ public interface DivRuleCpService {
|
||||
* @return StIvtStructattr /
|
||||
*/
|
||||
StIvtStructivtCp divRuleOut(JSONObject whereJson);
|
||||
StIvtStructivtCp divRuleOutAndLock(JSONObject whereJson);
|
||||
|
||||
StIvtStructivtBcp divRuleOutBcp(JSONObject whereJson);
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -14,8 +14,13 @@ import org.nl.wms.storage_manage.productmanage.service.structIvt.IStIvtStructivt
|
||||
import org.nl.wms.storage_manage.productmanage.service.structIvt.dao.StIvtStructivtCp;
|
||||
import org.nl.wms.storage_manage.productmanage.util.DivRuleCpService;
|
||||
import org.nl.wms.storage_manage.productmanage.util.RuleUtil;
|
||||
import org.nl.wms.storage_manage.semimanage.service.structIvt.IStIvtStructivtBcpService;
|
||||
import org.nl.wms.storage_manage.semimanage.service.structIvt.dao.StIvtStructivtBcp;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.TransactionDefinition;
|
||||
import org.springframework.transaction.annotation.Propagation;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
@@ -34,13 +39,13 @@ public class DivRuleCpServiceImpl implements DivRuleCpService {
|
||||
@Autowired
|
||||
protected IStIvtStructivtCpService iStIvtStructivtCpService; // 仓位库存服务
|
||||
|
||||
private StIvtStructattr attrDao;
|
||||
@Autowired
|
||||
private IStIvtStructivtBcpService bcpService;
|
||||
|
||||
private StIvtStructivtCp ivtDao;
|
||||
|
||||
@Override
|
||||
public StIvtStructattr divRuleIn(JSONObject whereJson) {
|
||||
|
||||
StIvtStructattr attrDao;
|
||||
String stor_id = whereJson.getString("stor_id");
|
||||
String sect_id = whereJson.getString("sect_id");
|
||||
|
||||
@@ -49,15 +54,15 @@ public class DivRuleCpServiceImpl implements DivRuleCpService {
|
||||
|
||||
switch (whereJson.getString("rule_type")) {
|
||||
case RuleUtil.PRODUCTION_IN_1 :
|
||||
attrDao = iStIvtStructattrService.getOne(
|
||||
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("未锁定"))
|
||||
.eq(StIvtStructattr::getStoragevehicle_code,"")
|
||||
.eq(StIvtStructattr::getStoragevehicle_code, "")
|
||||
.orderByAsc(StIvtStructattr::getStruct_code)
|
||||
,false);
|
||||
, false);
|
||||
break;
|
||||
case RuleUtil.PRODUCTION_IN_2 :
|
||||
attrDao = iStIvtStructattrService.getExceedAttr(whereJson);
|
||||
@@ -70,13 +75,15 @@ public class DivRuleCpServiceImpl implements DivRuleCpService {
|
||||
.eq(StIvtStructattr::getStruct_id, attrDao.getControl_code())
|
||||
);
|
||||
break;
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
|
||||
return attrDao;
|
||||
}
|
||||
|
||||
@Override
|
||||
public StIvtStructivtCp divRuleOut(JSONObject whereJson) {
|
||||
StIvtStructivtCp ivtDao;
|
||||
|
||||
String stor_id = whereJson.getString("stor_id");
|
||||
String sect_id = whereJson.getString("sect_id");
|
||||
@@ -97,30 +104,14 @@ public class DivRuleCpServiceImpl implements DivRuleCpService {
|
||||
throw new BadRequestException("物料不能为空");
|
||||
ivtDao = iStIvtStructivtCpService.queryIvtOutOne(whereJson);
|
||||
break;
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
|
||||
return ivtDao;
|
||||
}
|
||||
|
||||
@Override
|
||||
public StIvtStructivtCp divRuleOutAndLock(JSONObject whereJson) {
|
||||
RedissonUtils.lock(()->{
|
||||
switch (whereJson.getString("rule_type")) {
|
||||
case RuleUtil.PRODUCTION_OUT_1 :
|
||||
if (ObjectUtil.isEmpty(whereJson.getString("sale_id"))) throw new BadRequestException("销售单不能为空");
|
||||
ivtDao = iStIvtStructivtCpService.queryIvtOutOne(whereJson);
|
||||
break;
|
||||
case RuleUtil.PRODUCTION_OUT_2 :
|
||||
ivtDao = iStIvtStructivtCpService.queryIvtOutOne(whereJson);
|
||||
break;
|
||||
}
|
||||
//锁定
|
||||
iStIvtStructattrService.update(new UpdateWrapper<StIvtStructattr>().lambda()
|
||||
.eq(StIvtStructattr::getStruct_code, ivtDao.getStruct_code())
|
||||
.set(StIvtStructattr::getLock_type, IOSEnum.LOCK_TYPE.code("出库锁"))
|
||||
.set(StIvtStructattr::getInv_code,""));
|
||||
},whereJson.getString("material_id"),1);
|
||||
return ivtDao;
|
||||
public StIvtStructivtBcp divRuleOutBcp(JSONObject whereJson) {
|
||||
return bcpService.queryIvtOutOne(whereJson);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@ import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
import org.nl.common.enums.AcsTaskEnum;
|
||||
import org.nl.modules.wql.util.SpringContextHolder;
|
||||
import org.nl.wms.scheduler_manage.service.point.ISchBasePointService;
|
||||
import org.nl.wms.storage_manage.pda.service.PdaStBcpInService;
|
||||
import org.nl.wms.storage_manage.productmanage.service.check.IStIvtCheckmstCpService;
|
||||
import org.nl.wms.storage_manage.productmanage.service.iostorInv.IStIvtIostorinvCpOutService;
|
||||
@@ -57,6 +58,10 @@ public enum TASKEnum implements FunctionStrategy<String, JSONObject> {
|
||||
IStIvtCheckmstCpService bean = SpringContextHolder.getBean(IStIvtCheckmstCpService.class);
|
||||
bean.taskOperate(form);
|
||||
}),
|
||||
POINT_FINISH_TASK(type -> AcsTaskEnum.TASK_WASH_FULL_QZ.getCode().equals(type), form -> {
|
||||
ISchBasePointService bean = SpringContextHolder.getBean(ISchBasePointService.class);
|
||||
bean.taskOperate(form);
|
||||
}),
|
||||
|
||||
;
|
||||
|
||||
|
||||
@@ -3,9 +3,11 @@ package org.nl.wms.storage_manage.semimanage.service.iostorInv;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import org.nl.common.domain.query.PageQuery;
|
||||
import org.nl.wms.masterdata_manage.storage.service.storage.dao.StIvtStructattr;
|
||||
import org.nl.wms.storage_manage.productmanage.service.structIvt.dao.StIvtStructivtCp;
|
||||
import org.nl.wms.storage_manage.semimanage.service.iostorInv.dao.StIvtIostorinvBcp;
|
||||
import org.nl.wms.storage_manage.semimanage.service.iostorInv.dto.BcpIostorInvQuery;
|
||||
import org.nl.wms.storage_manage.semimanage.service.structIvt.dao.StIvtStructivtBcp;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@@ -53,7 +55,11 @@ public interface IStIvtIostorinvBcpOutService extends IService<StIvtIostorinvBcp
|
||||
* param.put("material_id", form.getString("material_id"));
|
||||
* @return
|
||||
*/
|
||||
StIvtStructivtCp autoConfirm(JSONObject param);
|
||||
StIvtStructivtBcp autoConfirmout(JSONObject param);
|
||||
|
||||
StIvtStructattr autoConfirmin(JSONObject param);
|
||||
|
||||
void lockStruct(String struct,String type,String inv_code);
|
||||
/**
|
||||
* 下发单据
|
||||
* @param form
|
||||
|
||||
@@ -20,6 +20,7 @@ import org.nl.common.enums.AcsTaskEnum;
|
||||
import org.nl.common.publish.BussEventMulticaster;
|
||||
import org.nl.common.publish.event.PointEvent;
|
||||
import org.nl.common.utils.IdUtil;
|
||||
import org.nl.common.utils.RedissonUtils;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.modules.common.exception.BadRequestException;
|
||||
import org.nl.modules.system.util.CodeUtil;
|
||||
@@ -38,10 +39,8 @@ import org.nl.wms.masterdata_manage.storage.service.storage.dao.StIvtStructattr;
|
||||
import org.nl.wms.product_manage.sch.manage.TaskStatusEnum;
|
||||
import org.nl.wms.scheduler_manage.service.task.ISchBaseTaskService;
|
||||
import org.nl.wms.scheduler_manage.service.task.dao.SchBaseTask;
|
||||
import org.nl.wms.storage_manage.CHANGE_BILL_TYPE_ENUM;
|
||||
import org.nl.wms.storage_manage.IOSEnum;
|
||||
import org.nl.wms.storage_manage.basedata.service.record.service.IStIvtStructivtflowService;
|
||||
import org.nl.wms.storage_manage.productmanage.service.structIvt.dao.StIvtStructivtCp;
|
||||
import org.nl.wms.storage_manage.productmanage.util.ChangeIvtUtil;
|
||||
import org.nl.wms.storage_manage.productmanage.util.DivRuleCpService;
|
||||
import org.nl.wms.storage_manage.productmanage.util.RuleUtil;
|
||||
@@ -53,6 +52,7 @@ import org.nl.wms.storage_manage.semimanage.service.structIvt.IStIvtStructivtBcp
|
||||
import org.nl.wms.storage_manage.semimanage.service.structIvt.dao.StIvtStructivtBcp;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Propagation;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
@@ -76,8 +76,6 @@ public class StIvtIostorinvBcpOutServiceImpl extends ServiceImpl<StIvtIostorinvB
|
||||
@Autowired
|
||||
private IStIvtStructivtBcpService structivtBcpService;
|
||||
@Autowired
|
||||
private IStIvtStructivtflowService structivtflowService;
|
||||
@Autowired
|
||||
private IStIvtStructattrService structattrService;
|
||||
@Autowired
|
||||
private DivRuleCpService divRuleCpService;
|
||||
@@ -244,69 +242,148 @@ public class StIvtIostorinvBcpOutServiceImpl extends ServiceImpl<StIvtIostorinvB
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public StIvtStructivtCp autoConfirm(JSONObject form) {
|
||||
MdMeMaterialbase material = materialbaseService.getOne(new QueryWrapper<MdMeMaterialbase>().eq("material_id", form.getString("material_id")));
|
||||
JSONObject param = new JSONObject();
|
||||
param.put("stor_id", form.getString("stor_id"));
|
||||
param.put("sect_id", form.getString("sect_id"));
|
||||
param.put("material_id", form.getString("material_id"));
|
||||
param.put("rule_type", RuleUtil.PRODUCTION_OUT_2);
|
||||
// 2.锁定仓位
|
||||
StIvtStructivtCp structivtBcp = divRuleCpService.divRuleOutAndLock(param);
|
||||
if (structivtBcp == null){
|
||||
return null;
|
||||
}
|
||||
StIvtIostorinvBcp mst = new StIvtIostorinvBcp();
|
||||
mst.setIostorinv_id(IdUtil.getStringId());
|
||||
mst.setBill_code(CodeUtil.getNewCode("IO_CODE"));
|
||||
mst.setBiz_date(form.getString("biz_date"));
|
||||
mst.setBill_type(form.getString("bill_type"));
|
||||
mst.setIo_type(IOSEnum.IO_TYPE.code("出库"));
|
||||
mst.setBill_status(IOSEnum.BILL_STATUS.code("生成"));
|
||||
mst.setRemark(form.getString("remark"));
|
||||
mst.setWorkshop_id(form.getString("product_code"));
|
||||
mst.setPoint_code(form.getString("point_code"));
|
||||
mst.setMaterial_id(material.getMaterial_id());
|
||||
mst.setPcsn(StringUtils.isNotEmpty(form.getString("pcsn")) ? form.getString("pcsn") : DateUtil.today());
|
||||
mst.setPlan_qty(structivtBcp.getCanuse_qty());
|
||||
mst.setQuality_scode(structivtBcp.getQuality_scode());
|
||||
mst.setQty_unit_id(structivtBcp.getQty_unit_id());
|
||||
mst.setBase_bill_code("");
|
||||
mst.setQty_unit_name(" ");
|
||||
mst.setUnit_weight(material.getNet_weight());
|
||||
mst.setStoragevehicle_code(" ");
|
||||
mst.setStoragevehicle_id(" ");
|
||||
仓库数据:
|
||||
{
|
||||
StIvtBsrealstorattr stor = storattrService.getOne(new QueryWrapper<StIvtBsrealstorattr>().eq("stor_id", form.getString("stor_id")));
|
||||
mst.setStor_id(stor.getStor_id());
|
||||
mst.setStor_code(stor.getStor_code());
|
||||
mst.setStor_name(stor.getStor_name());
|
||||
StIvtSectattr sect = sectattrService.getById(form.getString("sect_id"));
|
||||
mst.setSect_code(sect.getSect_code());
|
||||
mst.setSect_id(sect.getSect_id());
|
||||
mst.setSect_name(sect.getSect_name());
|
||||
mst.setStruct_id(structivtBcp.getStruct_id());
|
||||
mst.setStruct_code(structivtBcp.getStruct_code());
|
||||
mst.setStruct_name(structivtBcp.getStruct_name());
|
||||
}
|
||||
mst.setCreate_id("1");
|
||||
mst.setCreate_name("acs");
|
||||
mst.setCreate_time(DateUtil.now());
|
||||
PointEvent event = PointEvent.builder()
|
||||
.type(AcsTaskEnum.TASK_STRUCT_OUT.getCode())
|
||||
.point_code1(mst.getPoint_code())
|
||||
.point_code2(structivtBcp.getStruct_code())
|
||||
.vehicle_code(mst.getStoragevehicle_code())
|
||||
.product_area(mst.getWorkshop_id())
|
||||
.callback((Consumer<String>) mst::setTask_id)
|
||||
.build();
|
||||
BussEventMulticaster.Publish(event);
|
||||
mst.setWork_status(IOSEnum.WORK_STATUS.code("生成"));
|
||||
mst.setBill_status(IOSEnum.BILL_STATUS.code("分配完"));
|
||||
this.save(mst);
|
||||
return structivtBcp;
|
||||
public StIvtStructivtBcp autoConfirmout(JSONObject form) {
|
||||
final StIvtStructivtBcp[] structivtBcp = new StIvtStructivtBcp[1];
|
||||
RedissonUtils.lock(()->{
|
||||
MdMeMaterialbase material = materialbaseService.getOne(new QueryWrapper<MdMeMaterialbase>().eq("material_id", form.getString("material_id")));
|
||||
JSONObject param = new JSONObject();
|
||||
param.put("stor_id", form.getString("stor_id"));
|
||||
param.put("sect_id", form.getString("sect_id"));
|
||||
param.put("material_id", form.getString("material_id"));
|
||||
param.put("rule_type", RuleUtil.PRODUCTION_OUT_2);
|
||||
// 2.锁定仓位
|
||||
structivtBcp[0] = divRuleCpService.divRuleOutBcp(param);
|
||||
if (structivtBcp[0] != null){
|
||||
StIvtIostorinvBcp mst = new StIvtIostorinvBcp();
|
||||
mst.setIostorinv_id(IdUtil.getStringId());
|
||||
mst.setBill_code(CodeUtil.getNewCode("IO_CODE"));
|
||||
mst.setBiz_date(form.getString("biz_date"));
|
||||
mst.setBill_type(form.getString("bill_type"));
|
||||
mst.setIo_type(IOSEnum.IO_TYPE.code("出库"));
|
||||
mst.setBill_status(IOSEnum.BILL_STATUS.code("生成"));
|
||||
mst.setRemark(form.getString("remark"));
|
||||
mst.setWorkshop_id(form.getString("product_code"));
|
||||
mst.setPoint_code(form.getString("point_code"));
|
||||
mst.setMaterial_id(material.getMaterial_id());
|
||||
mst.setPcsn(StringUtils.isNotEmpty(form.getString("pcsn")) ? form.getString("pcsn") : DateUtil.today());
|
||||
mst.setPlan_qty(structivtBcp[0].getCanuse_qty());
|
||||
mst.setQuality_scode(structivtBcp[0].getQuality_scode());
|
||||
mst.setQty_unit_id(structivtBcp[0].getQty_unit_id());
|
||||
mst.setBase_bill_code("");
|
||||
mst.setQty_unit_name(" ");
|
||||
mst.setUnit_weight(material.getNet_weight());
|
||||
mst.setStoragevehicle_code(" ");
|
||||
mst.setStoragevehicle_id(" ");
|
||||
仓库数据:
|
||||
{
|
||||
StIvtBsrealstorattr stor = storattrService.getOne(new QueryWrapper<StIvtBsrealstorattr>().eq("stor_id", form.getString("stor_id")));
|
||||
mst.setStor_id(stor.getStor_id());
|
||||
mst.setStor_code(stor.getStor_code());
|
||||
mst.setStor_name(stor.getStor_name());
|
||||
StIvtSectattr sect = sectattrService.getById(form.getString("sect_id"));
|
||||
mst.setSect_code(sect.getSect_code());
|
||||
mst.setSect_id(sect.getSect_id());
|
||||
mst.setSect_name(sect.getSect_name());
|
||||
mst.setStruct_id(structivtBcp[0].getStruct_id());
|
||||
mst.setStruct_code(structivtBcp[0].getStruct_code());
|
||||
mst.setStruct_name(structivtBcp[0].getStruct_name());
|
||||
}
|
||||
mst.setCreate_id("1");
|
||||
mst.setCreate_name("acs");
|
||||
mst.setCreate_time(DateUtil.now());
|
||||
PointEvent event = PointEvent.builder()
|
||||
.type(AcsTaskEnum.TASK_STRUCT_OUT.getCode())
|
||||
.point_code1(mst.getPoint_code())
|
||||
.point_code2(structivtBcp[0].getStruct_code())
|
||||
.vehicle_code(mst.getStoragevehicle_code())
|
||||
.product_area(mst.getWorkshop_id())
|
||||
.callback((Consumer<String>) mst::setTask_id)
|
||||
.build();
|
||||
BussEventMulticaster.Publish(event);
|
||||
mst.setWork_status(IOSEnum.WORK_STATUS.code("生成"));
|
||||
mst.setBill_status(IOSEnum.BILL_STATUS.code("分配完"));
|
||||
this.save(mst);
|
||||
this.lockStruct(structivtBcp[0].getStruct_code(), "出库锁",mst.getTask_id());
|
||||
}
|
||||
},form.getString("material_id"),1);
|
||||
return structivtBcp[0];
|
||||
}
|
||||
|
||||
@Override
|
||||
public StIvtStructattr autoConfirmin(JSONObject form) {
|
||||
final StIvtStructattr[] structattr = new StIvtStructattr[1];
|
||||
RedissonUtils.lock(()->{
|
||||
MdMeMaterialbase material = materialbaseService.getOne(new QueryWrapper<MdMeMaterialbase>().eq("material_id", form.getString("material_id")));
|
||||
JSONObject param = new JSONObject();
|
||||
param.put("stor_id", form.getString("stor_id"));
|
||||
param.put("sect_id", form.getString("sect_id"));
|
||||
param.put("material_id", form.getString("material_id"));
|
||||
param.put("rule_type", RuleUtil.PRODUCTION_OUT_2);
|
||||
// 2.锁定仓位
|
||||
structattr[0] = divRuleCpService.divRuleIn(param);
|
||||
if (structattr[0] != null){
|
||||
StIvtIostorinvBcp mst = new StIvtIostorinvBcp();
|
||||
mst.setIostorinv_id(IdUtil.getStringId());
|
||||
mst.setBill_code(CodeUtil.getNewCode("IO_CODE"));
|
||||
mst.setBiz_date(form.getString("biz_date"));
|
||||
mst.setBill_type(form.getString("bill_type"));
|
||||
mst.setIo_type(IOSEnum.IO_TYPE.code("出库"));
|
||||
mst.setBill_status(IOSEnum.BILL_STATUS.code("生成"));
|
||||
mst.setRemark(form.getString("remark"));
|
||||
mst.setWorkshop_id(form.getString("product_code"));
|
||||
mst.setPoint_code(form.getString("point_code"));
|
||||
mst.setMaterial_id(material.getMaterial_id());
|
||||
mst.setPcsn(StringUtils.isNotEmpty(form.getString("pcsn")) ? form.getString("pcsn") : DateUtil.today());
|
||||
// mst.setPlan_qty(structattr.getCanuse_qty());
|
||||
// mst.setQuality_scode(structattr.getQuality_scode());
|
||||
// mst.setQty_unit_id(structattr.getQty_unit_id());
|
||||
mst.setBase_bill_code("");
|
||||
mst.setQty_unit_name(" ");
|
||||
mst.setUnit_weight(material.getNet_weight());
|
||||
mst.setStoragevehicle_code(" ");
|
||||
mst.setStoragevehicle_id(" ");
|
||||
仓库数据:
|
||||
{
|
||||
StIvtBsrealstorattr stor = storattrService.getOne(new QueryWrapper<StIvtBsrealstorattr>().eq("stor_id", form.getString("stor_id")));
|
||||
mst.setStor_id(stor.getStor_id());
|
||||
mst.setStor_code(stor.getStor_code());
|
||||
mst.setStor_name(stor.getStor_name());
|
||||
StIvtSectattr sect = sectattrService.getById(form.getString("sect_id"));
|
||||
mst.setSect_code(sect.getSect_code());
|
||||
mst.setSect_id(sect.getSect_id());
|
||||
mst.setSect_name(sect.getSect_name());
|
||||
mst.setStruct_id(structattr[0].getStruct_id());
|
||||
mst.setStruct_code(structattr[0].getStruct_code());
|
||||
mst.setStruct_name(structattr[0].getStruct_name());
|
||||
}
|
||||
mst.setCreate_id("1");
|
||||
mst.setCreate_name("acs");
|
||||
mst.setCreate_time(DateUtil.now());
|
||||
PointEvent event = PointEvent.builder()
|
||||
.type(AcsTaskEnum.TASK_STRUCT_OUT.getCode())
|
||||
.point_code1(mst.getPoint_code())
|
||||
.point_code2(structattr[0].getStruct_code())
|
||||
.vehicle_code(mst.getStoragevehicle_code())
|
||||
.product_area(mst.getWorkshop_id())
|
||||
.callback((Consumer<String>) mst::setTask_id)
|
||||
.build();
|
||||
BussEventMulticaster.Publish(event);
|
||||
mst.setWork_status(IOSEnum.WORK_STATUS.code("生成"));
|
||||
mst.setBill_status(IOSEnum.BILL_STATUS.code("分配完"));
|
||||
this.save(mst);
|
||||
this.lockStruct(structattr[0].getStruct_code(), "出库锁",mst.getTask_id());
|
||||
}
|
||||
} ,"banchengpin_ruku",2);
|
||||
return structattr[0];
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(propagation = Propagation.REQUIRES_NEW)
|
||||
public void lockStruct(String struct, String type, String inv_code) {
|
||||
structattrService.update(new UpdateWrapper<StIvtStructattr>().lambda()
|
||||
.eq(StIvtStructattr::getStruct_code, struct)
|
||||
.set(StIvtStructattr::getLock_type, IOSEnum.LOCK_TYPE.code(type))
|
||||
.set(StIvtStructattr::getInv_code,inv_code));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -20,6 +20,7 @@ import org.nl.common.publish.BussEventMulticaster;
|
||||
import org.nl.common.publish.event.PointEvent;
|
||||
import org.nl.common.utils.IdUtil;
|
||||
import org.nl.common.utils.MapOf;
|
||||
import org.nl.common.utils.RedissonUtils;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.modules.common.exception.BadRequestException;
|
||||
import org.nl.modules.system.util.CodeUtil;
|
||||
@@ -259,58 +260,55 @@ public class StIvtIostorinvBcpServiceImpl extends ServiceImpl<StIvtIostorinvBcpM
|
||||
@Override
|
||||
@Transactional
|
||||
public String confirmTask(JSONObject form) {
|
||||
Assert.notNull(new Object[]{form, form.get("iostorinv_id")}, "请求参数不能为空");
|
||||
StIvtIostorinvBcp mst = this.getById(form.getString("iostorinv_id"));
|
||||
checkParam(mst);
|
||||
//分配货位。下发任务,更新主单据状态。更新明细任务
|
||||
StIvtSectattr sect = sectattrService.getOne(new QueryWrapper<StIvtSectattr>().eq("sect_name", "半成品库区"));
|
||||
JSONObject jo = new JSONObject();
|
||||
jo.put("sect_id", sect.getSect_id());
|
||||
jo.put("stor_id", sect.getStor_id());
|
||||
jo.put("rule_type", RuleUtil.PRODUCTION_IN_1);
|
||||
StIvtStructattr stIvtStructattr = divRuleCpService.divRuleIn(jo);
|
||||
RedissonUtils.lock(()->{
|
||||
Assert.notNull(new Object[]{form, form.get("iostorinv_id")}, "请求参数不能为空");
|
||||
StIvtIostorinvBcp mst = this.getById(form.getString("iostorinv_id"));
|
||||
checkParam(mst);
|
||||
//分配货位。下发任务,更新主单据状态。更新明细任务
|
||||
StIvtSectattr sect = sectattrService.getOne(new QueryWrapper<StIvtSectattr>().eq("sect_name", "半成品库区"));
|
||||
JSONObject jo = new JSONObject();
|
||||
jo.put("sect_id", sect.getSect_id());
|
||||
jo.put("stor_id", sect.getStor_id());
|
||||
jo.put("rule_type", RuleUtil.PRODUCTION_IN_1);
|
||||
StIvtStructattr stIvtStructattr = divRuleCpService.divRuleIn(jo);
|
||||
|
||||
if (ObjectUtil.isEmpty(stIvtStructattr)) {
|
||||
throw new BadRequestException("无可分配货位");
|
||||
}
|
||||
if (ObjectUtil.isEmpty(stIvtStructattr)) {
|
||||
throw new BadRequestException("无可分配货位");
|
||||
}
|
||||
|
||||
stIvtStructattr.setLock_type(IOSEnum.LOCK_TYPE.code("入库锁"));
|
||||
stIvtStructattr.setInv_code(mst.getBill_code());
|
||||
//维护载具
|
||||
structattrService.updateById(stIvtStructattr);
|
||||
仓库信息:
|
||||
{
|
||||
mst.setSect_id(stIvtStructattr.getSect_id());
|
||||
mst.setSect_code(stIvtStructattr.getSect_code());
|
||||
mst.setSect_name(stIvtStructattr.getSect_name());
|
||||
mst.setStruct_id(stIvtStructattr.getStruct_id());
|
||||
mst.setStruct_code(stIvtStructattr.getStruct_code());
|
||||
mst.setStruct_name(stIvtStructattr.getStruct_name());
|
||||
}
|
||||
|
||||
仓库信息:
|
||||
{
|
||||
mst.setSect_id(stIvtStructattr.getSect_id());
|
||||
mst.setSect_code(stIvtStructattr.getSect_code());
|
||||
mst.setSect_name(stIvtStructattr.getSect_name());
|
||||
mst.setStruct_id(stIvtStructattr.getStruct_id());
|
||||
mst.setStruct_code(stIvtStructattr.getStruct_code());
|
||||
mst.setStruct_name(stIvtStructattr.getStruct_name());
|
||||
}
|
||||
PointEvent event = PointEvent.builder()
|
||||
.type(AcsTaskEnum.TASK_STRUCT_IN.getCode())
|
||||
.acs_task_type("7")
|
||||
.task_group_id(IdUtil.getStringId())
|
||||
.point_code1(mst.getPoint_code())
|
||||
.point_code2(stIvtStructattr.getStruct_code())
|
||||
.vehicle_code(mst.getStoragevehicle_code())
|
||||
.product_area(mst.getWorkshop_id())
|
||||
.callback((Consumer<String>) mst::setTask_id)
|
||||
.build();
|
||||
BussEventMulticaster.Publish(event);
|
||||
|
||||
PointEvent event = PointEvent.builder()
|
||||
.type(AcsTaskEnum.TASK_STRUCT_IN.getCode())
|
||||
.acs_task_type("7")
|
||||
.task_group_id(IdUtil.getStringId())
|
||||
.point_code1(mst.getPoint_code())
|
||||
.point_code2(stIvtStructattr.getStruct_code())
|
||||
.vehicle_code(mst.getStoragevehicle_code())
|
||||
.product_area(mst.getWorkshop_id())
|
||||
.callback((Consumer<String>) mst::setTask_id)
|
||||
.build();
|
||||
BussEventMulticaster.Publish(event);
|
||||
|
||||
mst.setWork_status(IOSEnum.WORK_STATUS.code("生成"));
|
||||
mst.setBill_status(IOSEnum.BILL_STATUS.code("分配完"));
|
||||
mst.setUpdate_time(DateUtil.now());
|
||||
mst.setUpdate_id(SecurityUtils.getCurrentUserId());
|
||||
mst.setUpdate_name(SecurityUtils.getCurrentNickName());
|
||||
this.updateById(mst);
|
||||
|
||||
// 下发任务
|
||||
sendTask(mst.getTask_id());
|
||||
return mst.getTask_id();
|
||||
mst.setWork_status(IOSEnum.WORK_STATUS.code("生成"));
|
||||
mst.setBill_status(IOSEnum.BILL_STATUS.code("分配完"));
|
||||
mst.setUpdate_time(DateUtil.now());
|
||||
mst.setUpdate_id(SecurityUtils.getCurrentUserId());
|
||||
mst.setUpdate_name(SecurityUtils.getCurrentNickName());
|
||||
this.updateById(mst);
|
||||
// 下发任务
|
||||
sendTask(mst.getTask_id());
|
||||
structattrService.lockStruct(stIvtStructattr.getStruct_code(), "入库锁",mst.getTask_id());
|
||||
},"banchengpin_ruku",2);
|
||||
return null;
|
||||
}
|
||||
|
||||
private void checkParam(StIvtIostorinvBcp mst) {
|
||||
|
||||
@@ -3,6 +3,7 @@ package org.nl.wms.storage_manage.semimanage.service.structIvt;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import org.nl.common.domain.query.PageQuery;
|
||||
import org.nl.wms.storage_manage.CHANGE_BILL_TYPE_ENUM;
|
||||
import org.nl.wms.storage_manage.productmanage.service.structIvt.dao.StIvtStructivtCp;
|
||||
import org.nl.wms.storage_manage.rawmanage.service.structIvt.dto.StructIvtYLQuery;
|
||||
import org.nl.wms.storage_manage.semimanage.service.structIvt.dao.StIvtStructivtBcp;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
@@ -41,4 +42,6 @@ public interface IStIvtStructivtBcpService extends IService<StIvtStructivtBcp> {
|
||||
List<Map> getPdaBcpIvt(JSONObject jo);
|
||||
|
||||
List<Map> getPdaBcpMaterialIvt(JSONObject jo);
|
||||
|
||||
StIvtStructivtBcp queryIvtOutOne(JSONObject json);
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import org.nl.common.domain.query.PageQuery;
|
||||
import org.nl.wms.storage_manage.productmanage.service.structIvt.dao.StIvtStructivtCp;
|
||||
import org.nl.wms.storage_manage.semimanage.service.structIvt.dao.StIvtStructivtBcp;
|
||||
import org.nl.wms.storage_manage.semimanage.service.structIvt.dto.StructIvtBcpQuery;
|
||||
|
||||
@@ -35,4 +36,6 @@ public interface StIvtStructivtBcpMapper extends BaseMapper<StIvtStructivtBcp> {
|
||||
List<Map> getPdaBcpIvt(JSONObject jo);
|
||||
|
||||
List<Map> getPdaBcpMaterialIvt(JSONObject jo);
|
||||
|
||||
StIvtStructivtBcp queryIvtOutOne(JSONObject json);
|
||||
}
|
||||
|
||||
@@ -236,4 +236,25 @@
|
||||
</where>
|
||||
</select>
|
||||
|
||||
<select id="queryIvtOutOne" resultType="org.nl.wms.storage_manage.semimanage.service.structIvt.dao.StIvtStructivtBcp">
|
||||
SELECT
|
||||
ivt.*
|
||||
FROM
|
||||
st_ivt_structivt_bcp ivt
|
||||
LEFT JOIN st_ivt_structattr attr ON ivt.struct_id = attr.struct_id
|
||||
WHERE ivt.canuse_qty > 0
|
||||
<if test="stor_id != null and stor_id != ''">
|
||||
and attr.stor_id = #{stor_id}
|
||||
</if>
|
||||
<if test="sect_id != null and sect_id != ''">
|
||||
and attr.sect_id = #{sect_id}
|
||||
</if>
|
||||
<if test="material_id != null and material_id != ''">
|
||||
and ivt.material_id = #{material_id}
|
||||
</if>
|
||||
order by ivt.canuse_qty ASC,ivt.struct_code ASC
|
||||
|
||||
LIMIT 1
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
|
||||
@@ -61,6 +61,11 @@ public class StIvtStructivtBcpServiceImpl extends ServiceImpl<StIvtStructivtBcpM
|
||||
return this.baseMapper.getPdaBcpMaterialIvt(jo);
|
||||
}
|
||||
|
||||
@Override
|
||||
public StIvtStructivtBcp queryIvtOutOne(JSONObject json) {
|
||||
return this.baseMapper.queryIvtOutOne(json);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object getBcpIvt(StructIvtBcpQuery query, PageQuery pageQuery) {
|
||||
com.github.pagehelper.Page<Object> page = PageHelper.startPage(pageQuery.getPage() + 1, pageQuery.getSize());
|
||||
|
||||
@@ -3,6 +3,7 @@ package org.nl.wms.system_manage.controller.dict;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaIgnore;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.nl.common.anno.Log;
|
||||
@@ -121,8 +122,8 @@ public class SysDictController {
|
||||
@ApiOperation("查询字典详情")
|
||||
@PostMapping("/dictDetailByCode")
|
||||
@SaIgnore
|
||||
public ResponseEntity<Object> createDetail(@RequestBody String code){
|
||||
return new ResponseEntity<>(dictService.getDictByName(code),HttpStatus.OK);
|
||||
public ResponseEntity<Object> queryDetail(@RequestBody JSONObject code){
|
||||
return new ResponseEntity<>(TableDataInfo.build(dictService.getDictByName(code.getString("code"))),HttpStatus.OK);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -121,7 +121,7 @@ public class SysDictServiceImpl extends ServiceImpl<SysDictMapper, Dict> impleme
|
||||
public List<Dict> getDictByName(String name) {
|
||||
List<Dict> dictList = sysDictMapper.selectList(new LambdaQueryWrapper<Dict>().eq(Dict::getCode, name)
|
||||
.isNotNull(Dict::getLabel)
|
||||
.ne(Dict::getLabel, ""));
|
||||
.ne(Dict::getLabel, "").select(Dict::getLabel,Dict::getValue));
|
||||
return dictList;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user