rev:刻字包装服务

This commit is contained in:
zhangzhiqiang
2023-07-04 08:47:09 +08:00
parent 128272a27d
commit 418fc4b966
31 changed files with 939 additions and 294 deletions

View File

@@ -3,7 +3,7 @@ package org.nl.common.utils;
import com.google.common.cache.Cache; import com.google.common.cache.Cache;
import com.google.common.cache.CacheBuilder; import com.google.common.cache.CacheBuilder;
import lombok.extern.slf4j.Slf4j; 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 org.springframework.stereotype.Component;
import javax.annotation.PostConstruct; import javax.annotation.PostConstruct;

View File

@@ -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.SpeMachinery.SpeFullTask;
import org.nl.wms.product_manage.sch.tasks.WashMachineryTask; 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.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.callMaterial.WrapCallMaterialTask;
import org.nl.wms.product_manage.sch.tasks.sendEmpty.WrapSendEmptyTask; 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.PlotterSendMaterialTask;
import org.nl.wms.product_manage.sch.tasks.sendMaterial.WashSendMaterialTask;
import org.springframework.context.SmartLifecycle; import org.springframework.context.SmartLifecycle;
import org.springframework.context.annotation.Configuration; 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_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_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_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_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_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()); System.out.println("初始化Task_Collent完成777"+AcsToWmsServiceImpl.Task_Collent.size());
} }

View File

@@ -4,6 +4,7 @@ package org.nl.wms.masterdata_manage.storage.service.storage;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import org.nl.wms.masterdata_manage.storage.service.storage.dao.StIvtStructattr; import org.nl.wms.masterdata_manage.storage.service.storage.dao.StIvtStructattr;
import org.nl.wms.storage_manage.productmanage.service.structIvt.dao.StIvtStructivtCp;
/** /**
* <p> * <p>
@@ -46,4 +47,11 @@ public interface IStIvtStructattrService extends IService<StIvtStructattr> {
* @param jo * @param jo
*/ */
StIvtStructattr getExceedAttr(JSONObject jo); StIvtStructattr getExceedAttr(JSONObject jo);
/**
* 仓位锁定
* @param type
* @param inv_code
*/
void lockStruct(String struct_code, String type, String inv_code);
} }

View File

@@ -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.StIvtSectattr;
import org.nl.wms.masterdata_manage.storage.service.storage.dao.StIvtStructattr; 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.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.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
@@ -35,10 +39,6 @@ public class StIvtStructattrServiceImpl extends ServiceImpl<StIvtStructattrMappe
@Autowired @Autowired
private IStIvtSectattrService sectattrService; private IStIvtSectattrService sectattrService;
@Autowired
private IStIvtBsrealstorattrService storattrService;
@Autowired
private IStIvtStructattrService structattrService;
@Override @Override
public String create(JSONObject form) { public String create(JSONObject form) {
@@ -98,7 +98,7 @@ public class StIvtStructattrServiceImpl extends ServiceImpl<StIvtStructattrMappe
JSONObject sect_cas = new JSONObject(); JSONObject sect_cas = new JSONObject();
sect_cas.put("value", sect.getSect_id()); sect_cas.put("value", sect.getSect_id());
sect_cas.put("label", sect.getSect_name()); 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())); .eq("sect_id", sect.getSect_id()));
if (struct_list.size() > 0) { if (struct_list.size() > 0) {
JSONArray struct_ja = new JSONArray(); JSONArray struct_ja = new JSONArray();
@@ -137,4 +137,13 @@ public class StIvtStructattrServiceImpl extends ServiceImpl<StIvtStructattrMappe
.set("update_time",new Date()) .set("update_time",new Date())
.eq("struct_id",form.getString("struct_id"))); .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));
}
} }

View File

@@ -13,7 +13,6 @@ import lombok.RequiredArgsConstructor;
import org.json.XML; import org.json.XML;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.nl.common.utils.WebServiceUtil; import org.nl.common.utils.WebServiceUtil;
import org.nl.config.thread.ThreadPoolExecutorUtil;
import org.nl.modules.common.exception.BadRequestException; import org.nl.modules.common.exception.BadRequestException;
import org.nl.common.utils.SecurityUtils; import org.nl.common.utils.SecurityUtils;
import org.nl.modules.common.utils.RedisUtils; 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.ClassstandardService;
import org.nl.wms.masterdata_manage.备份master.service.MaterialbaseService; import org.nl.wms.masterdata_manage.备份master.service.MaterialbaseService;
import org.nl.wms.masterdata_manage.备份master.service.dto.MaterialbaseDto; 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.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.nl.wms.pda_manage.pda.service.dto.MaterialDto;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.*; import java.util.*;

View File

@@ -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.dev33.satoken.annotation.SaIgnore;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
@@ -12,7 +12,7 @@ import org.nl.common.TableDataInfo;
import org.nl.common.anno.Log; import org.nl.common.anno.Log;
import org.nl.common.utils.api.ResultCode; import org.nl.common.utils.api.ResultCode;
import org.nl.modules.common.exception.BizCoreException; 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.pda_manage.pda.service.CacheLineHandService;
import org.nl.wms.product_manage.service.workprocedure.IPdmBiWorkprocedureService; import org.nl.wms.product_manage.service.workprocedure.IPdmBiWorkprocedureService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@@ -21,7 +21,6 @@ import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.regex.Pattern; import java.util.regex.Pattern;

View File

@@ -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.dev33.satoken.annotation.SaIgnore;
import cn.hutool.core.lang.Assert; import cn.hutool.core.lang.Assert;
@@ -7,8 +7,6 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; 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.anno.Log;
import org.nl.common.utils.MapOf; import org.nl.common.utils.MapOf;
import org.nl.wms.masterdata_manage.storage.service.storage.IStIvtSectattrService; import org.nl.wms.masterdata_manage.storage.service.storage.IStIvtSectattrService;

View File

@@ -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);
}
}

View File

@@ -3,7 +3,7 @@ package org.nl.wms.pda_manage.pda.service;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import org.nl.common.utils.api.CommonResult; 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 org.springframework.data.domain.Pageable;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;

View File

@@ -1,4 +1,4 @@
package org.nl.wms.pda_manage.pda.dto; package org.nl.wms.pda_manage.pda.service.dto;
import lombok.Data; import lombok.Data;

View File

@@ -1,4 +1,4 @@
package org.nl.wms.pda_manage.pda.dto; package org.nl.wms.pda_manage.pda.service.dto;
import lombok.Data; import lombok.Data;

View File

@@ -8,7 +8,6 @@ import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import io.jsonwebtoken.lang.Assert;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils; 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.*;
import org.nl.common.utils.api.CommonResult; import org.nl.common.utils.api.CommonResult;
import org.nl.common.utils.api.RestBusinessTemplate; 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.exception.BadRequestException;
import org.nl.modules.common.utils.RedisUtils; import org.nl.modules.common.utils.RedisUtils;
import org.nl.modules.wql.WQL; 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.ext.acs.service.WmsToAcsService;
import org.nl.wms.masterdata_manage.service.material.IMdMeMaterialbaseService; import org.nl.wms.masterdata_manage.service.material.IMdMeMaterialbaseService;
import org.nl.wms.masterdata_manage.service.material.dao.MdMeMaterialbase; 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.pda_manage.pda.service.CacheLineHandService;
import org.nl.wms.product_manage.service.device.IPdmBiDeviceService; import org.nl.wms.product_manage.service.device.IPdmBiDeviceService;
import org.nl.wms.product_manage.service.device.dao.PdmBiDevice; 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.beans.factory.annotation.Qualifier;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
import org.springframework.scheduling.annotation.Async; import org.springframework.scheduling.annotation.Async;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;

View File

@@ -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;
}
}

View File

@@ -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;
}
}

View File

@@ -8,10 +8,12 @@ import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.nl.common.enums.AcsTaskEnum; import org.nl.common.enums.AcsTaskEnum;
import org.nl.common.enums.StatusEnum; import org.nl.common.enums.StatusEnum;
import org.nl.common.enums.WorkerOrderEnum; import org.nl.common.enums.WorkerOrderEnum;
import org.nl.common.utils.IdUtil; import org.nl.common.utils.IdUtil;
import org.nl.common.utils.RedissonUtils;
import org.nl.common.utils.SecurityUtils; import org.nl.common.utils.SecurityUtils;
import org.nl.modules.common.exception.BadRequestException; import org.nl.modules.common.exception.BadRequestException;
import org.nl.modules.system.util.CodeUtil; 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.IOSEnum;
import org.nl.wms.storage_manage.productmanage.util.DivRuleCpService; import org.nl.wms.storage_manage.productmanage.util.DivRuleCpService;
import org.nl.wms.storage_manage.productmanage.util.RuleUtil; 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.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.TransactionDefinition; import org.springframework.transaction.TransactionDefinition;
@@ -45,11 +48,14 @@ import java.util.stream.Collectors;
/* /*
* @author ZZQ * @author ZZQ
* @Date 2023/6/16 08:40 * @Date 2023/6/16 08:40
* 清洗机下料满料请求
*/ */
@Service @Service
@Slf4j @Slf4j
public class WashSendMaterialTask extends AbstractAcsTask { public class WashSendMaterialTask extends AbstractAcsTask {
@Autowired
private IStIvtStructattrService structattrService;
@Autowired @Autowired
private DivRuleCpService divRuleCpService; private DivRuleCpService divRuleCpService;
@Autowired @Autowired
@@ -61,6 +67,8 @@ public class WashSendMaterialTask extends AbstractAcsTask {
@Autowired @Autowired
private ISchBasePointService pointService; private ISchBasePointService pointService;
@Autowired @Autowired
private WashSendMaterialQZTask sendMaterialQZTask;
@Autowired
private WmsToAcsService wms; private WmsToAcsService wms;
@Override @Override
@@ -98,63 +106,69 @@ public class WashSendMaterialTask extends AbstractAcsTask {
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public String createTask(JSONObject param) { public String createTask(JSONObject param) {
String start_point_code = param.getString("device_code"); if (StringUtils.isEmpty(param.getString("weight"))||StringUtils.isEmpty(param.getString("vehicle_code"))){
PdmProduceWorkorder order = workorderService.getOne(new QueryWrapper<PdmProduceWorkorder>() return sendMaterialQZTask.createTask(param);
.eq("workorder_code", param.getString("workorder_code")) }else {
.eq("is_delete", false) String start_point_code = param.getString("device_code");
.lt("workorder_status", WorkerOrderEnum.COMPLETE.getCode())); PdmProduceWorkorder order = workorderService.getOne(new QueryWrapper<PdmProduceWorkorder>()
Assert.notNull(order, String.format("下发工单%s不存在未完成工单", param.getString("workorder_code"))); .eq("workorder_code", param.getString("workorder_code"))
//?刻字满料请求:可以存在多个任务? .eq("is_delete", false)
List<SchBaseTask> list = taskService.list(new QueryWrapper<SchBaseTask>() .lt("workorder_status", WorkerOrderEnum.COMPLETE.getCode()));
.lt("task_status", StatusEnum.TASK_FINISH.getCode()) Assert.notNull(order, String.format("下发工单%s不存在未完成工单", param.getString("workorder_code")));
.and(wa->wa //?刻字满料请求:可以存在多个任务?
.eq("point_code1", param.getString("device_code")) List<SchBaseTask> list = taskService.list(new QueryWrapper<SchBaseTask>()
.or() .lt("task_status", StatusEnum.TASK_FINISH.getCode())
.eq("point_code2", param.getString("device_code"))) .and(wa->wa
); .eq("point_code1", param.getString("device_code"))
if (!CollectionUtils.isEmpty(list)){ .or()
throw new BadRequestException(String.format("设备%s存在未完成任务"+list.stream().map(SchBaseTask::getTask_id).collect(Collectors.toList()).toString(), param.getString("device_code"))); .eq("point_code2", param.getString("device_code")))
} );
// 查找任务状态 if (!CollectionUtils.isEmpty(list)){
String taskdtl_id = IdUtil.getStringId(); throw new BadRequestException(String.format("设备%s存在未完成任务"+list.stream().map(SchBaseTask::getTask_id).collect(Collectors.toList()).toString(), param.getString("device_code")));
JSONObject task = new JSONObject(); }
task.put("task_id", taskdtl_id); // 查找任务状态
task.put("task_name", AcsTaskEnum.REQUEST_WASH_FULL.getDesc()); String taskdtl_id = IdUtil.getStringId();
task.put("task_type", AcsTaskEnum.REQUEST_WASH_FULL.getCode()); JSONObject task = new JSONObject();
task.put("task_code", CodeUtil.getNewCode("TASK_CODE")); task.put("task_id", taskdtl_id);
task.put("acs_task_type", AcsTaskEnum.ACS_TASK_TYPE_NON_WEIGHING_TASK_OF_PS20.getCode()); task.put("task_name", AcsTaskEnum.REQUEST_WASH_FULL.getDesc());
task.put("material_id", order.getMaterial_id()); task.put("task_type", AcsTaskEnum.REQUEST_WASH_FULL.getCode());
task.put("task_status", TaskStatusEnum.CREATED.getCode()); task.put("task_code", CodeUtil.getNewCode("TASK_CODE"));
task.put("point_code1", start_point_code); task.put("acs_task_type", AcsTaskEnum.ACS_TASK_TYPE_NON_WEIGHING_TASK_OF_PS20.getCode());
task.put("handle_class", this.getClass().getName()); task.put("material_id", order.getMaterial_id());
task.put("is_delete", StatusEnum.STATUS_FLASE.getCode()); task.put("material_qty", param.getString("weight"));
String currentUserId = SecurityUtils.getCurrentUserId(); task.put("vehicle_code", param.getString("vehicle_code"));
task.put("create_id", currentUserId); task.put("task_status", TaskStatusEnum.CREATED.getCode());
task.put("create_name", SecurityUtils.getCurrentNickName()); task.put("point_code1", start_point_code);
task.put("create_time", DateUtil.now()); task.put("handle_class", this.getClass().getName());
task.put("priority", "1"); task.put("is_delete", StatusEnum.STATUS_FLASE.getCode());
task.put("finished_type", "1"); String currentUserId = SecurityUtils.getCurrentUserId();
task.put("agv_system_type", AcsTaskEnum.AGV_SYSTEM_XC.getCode()); task.put("create_id", currentUserId);
task.put("table_fk_id",order.getWorkorder_code()); task.put("create_name", SecurityUtils.getCurrentNickName());
SchBaseTask schBaseTask = task.toJavaObject(SchBaseTask.class); task.put("create_time", DateUtil.now());
taskService.save(schBaseTask); task.put("priority", "1");
// 找终点 task.put("finished_type", "1");
try { task.put("agv_system_type", AcsTaskEnum.AGV_SYSTEM_XC.getCode());
pointConfirm(task); task.put("table_fk_id",order.getWorkorder_code());
JSONArray data = new JSONArray(); SchBaseTask schBaseTask = task.toJavaObject(SchBaseTask.class);
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); 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 @Override
@@ -167,33 +181,31 @@ public class WashSendMaterialTask extends AbstractAcsTask {
/** /**
* 满料请求 * 满料请求
* 从刻字机满料缓存区中获取空位放入就行 * 清洗机入半成品库
*/ */
@Override @Override
@Transactional(timeout=TransactionDefinition.ISOLATION_READ_UNCOMMITTED)
public void pointConfirm(JSONObject task) { public void pointConfirm(JSONObject task) {
// 去刻字缓存区寻找空位 RedissonUtils.lock(()->{
//分配货位。下发任务,更新主单据状态。更新明细任务 // 去刻字缓存区寻找空位
StIvtSectattr sect = sectattrService.getOne(new QueryWrapper<StIvtSectattr>().eq("sect_name", "半成品库区")); //分配货位。下发任务,更新主单据状态。更新明细任务
JSONObject jo = new JSONObject(); StIvtSectattr sect = sectattrService.getOne(new QueryWrapper<StIvtSectattr>().eq("sect_name", "半成品库区"));
jo.put("sect_id", sect.getSect_id()); JSONObject jo = new JSONObject();
jo.put("stor_id", sect.getStor_id()); jo.put("sect_id", sect.getSect_id());
jo.put("rule_type", RuleUtil.PRODUCTION_IN_1); jo.put("stor_id", sect.getStor_id());
StIvtStructattr stIvtStructattr = divRuleCpService.divRuleIn(jo); 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(task.getString("task_code")); // 设置点位
// 设置点位 SchBaseTask schBaseTask = task.toJavaObject(SchBaseTask.class);
task.put("update_time", DateUtil.now()); schBaseTask.setTask_status(StatusEnum.TASK_START_END_P.getCode());
task.put("point_code2",stIvtStructattr.getStruct_code()); schBaseTask.setUpdate_time(new Date());
SchBaseTask schBaseTask = task.toJavaObject(SchBaseTask.class); schBaseTask.setTask_type(AcsTaskEnum.TASK_STRUCT_IN.getCode());
schBaseTask.setTask_status(StatusEnum.TASK_START_END_P.getCode()); taskService.updateById(schBaseTask);
schBaseTask.setUpdate_time(new Date()); structattrService.lockStruct(stIvtStructattr.getStruct_code(), "入库锁",schBaseTask.getTask_id());
schBaseTask.setTask_type(AcsTaskEnum.TASK_STRUCT_IN.getCode()); },"banchengpin_ruku",1);
taskService.updateById(schBaseTask);
} }
@Override @Override

View File

@@ -56,4 +56,10 @@ public interface ISchBasePointService extends IService<SchBasePoint> {
Map getWorkprodureByCode(String id); Map getWorkprodureByCode(String id);
List<Map<String,String>> getAllPointRegin(String points); List<Map<String,String>> getAllPointRegin(String points);
/**
* 任务回调
* @param jo
*/
void taskOperate(JSONObject jo);
} }

View File

@@ -6,6 +6,7 @@ import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 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.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.pagehelper.Page; import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageHelper;
@@ -14,16 +15,25 @@ import io.jsonwebtoken.lang.Assert;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.nl.common.TableDataInfo; import org.nl.common.TableDataInfo;
import org.nl.common.domain.query.PageQuery; import org.nl.common.domain.query.PageQuery;
import org.nl.common.enums.AcsTaskEnum;
import org.nl.common.enums.StatusEnum; import org.nl.common.enums.StatusEnum;
import org.nl.common.utils.IdUtil; import org.nl.common.utils.IdUtil;
import org.nl.common.utils.MapOf;
import org.nl.common.utils.SecurityUtils; import org.nl.common.utils.SecurityUtils;
import org.nl.modules.common.exception.BadRequestException; import org.nl.modules.common.exception.BadRequestException;
import org.nl.modules.wql.core.bean.WQLObject; 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.ISchBasePointService;
import org.nl.wms.scheduler_manage.service.point.dao.SchBasePoint; 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.point.dao.mapper.SchBasePointMapper;
import org.nl.wms.scheduler_manage.service.region.ISchBaseRegionService; 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.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.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@@ -47,6 +57,9 @@ public class SchBasePointServiceImpl extends ServiceImpl<SchBasePointMapper, Sch
@Autowired @Autowired
private ISchBaseRegionService schBaseRegionService; private ISchBaseRegionService schBaseRegionService;
@Autowired
private ISchBaseTaskService taskService;
@Override @Override
public Object queryAll(Map whereJson, PageQuery pageQuery) { public Object queryAll(Map whereJson, PageQuery pageQuery) {
Page<Object> page = PageHelper.startPage(pageQuery.getPage()+1, pageQuery.getSize()); 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) { public List<Map<String,String>> getAllPointRegin(String points) {
return this.baseMapper.getRegionCollent(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()));
}
}
} }

View File

@@ -8,6 +8,7 @@ import lombok.extern.slf4j.Slf4j;
import org.nl.common.enums.WorkerOrderEnum; import org.nl.common.enums.WorkerOrderEnum;
import org.nl.common.utils.BaseCode; import org.nl.common.utils.BaseCode;
import org.nl.common.utils.IdUtil; 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.IMdMeMaterialbaseService;
import org.nl.wms.masterdata_manage.service.material.dao.MdMeMaterialbase; import org.nl.wms.masterdata_manage.service.material.dao.MdMeMaterialbase;
import org.nl.wms.product_manage.sch.tasks.sendMaterial.WashSendMaterialTask; 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.product_manage.service.workorder.dao.PdmProduceWorkorder;
import org.nl.wms.storage_manage.productmanage.service.structIvt.dao.StIvtStructivtCp; 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.iostorInv.IStIvtIostorinvBcpOutService;
import org.nl.wms.storage_manage.semimanage.service.structIvt.dao.StIvtStructivtBcp;
import org.slf4j.MDC; import org.slf4j.MDC;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; 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)); Map<String, List<PdmProduceWorkorder>> collect = list.stream().collect(Collectors.groupingBy(PdmProduceWorkorder::getMaterial_id));
//工单开工规则 //工单开工规则
for (Map.Entry<String, List<PdmProduceWorkorder>> entry : collect.entrySet()) { 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) { JSONObject form = new JSONObject();
BigDecimal need = current_workorder.getPlan_qty().subtract(current_workorder.getDq_real_qty()); form.put("stor_id","528627995269533696");//st_ivt_sectattr紫铜车间-半成品库区
if (need.intValue() <= 0){ continue; } form.put("sect_id","1528631044482404352");
int min = Math.min(canuse_qty.intValue(), need.intValue()); 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(); for (PdmProduceWorkorder current_workorder : current_workorders) {
taskForm.put("workorder_code",current_workorder.getWorkorder_code()); BigDecimal need = current_workorder.getPlan_qty().subtract(current_workorder.getDq_real_qty());
taskForm.put("device_code",current_workorder.getDevice_code()); if (need.intValue() <= 0){ continue; }
taskForm.put("qty",min); int min = Math.min(canuse_qty.intValue(), need.intValue());
taskForm.put("weight",material.getNet_weight().doubleValue()*min);
taskForm.put("material_id",material.getMaterial_id()); JSONObject taskForm = new JSONObject();
taskForm.put("material_code",material.getMaterial_code()); taskForm.put("workorder_code",current_workorder.getWorkorder_code());
taskForm.put("material_spec",material.getMaterial_spec()); taskForm.put("device_code",current_workorder.getDevice_code());
taskForm.put("task_grop_id", grop_id); taskForm.put("qty",min);
engraveCallMaterialTask.createTask(taskForm); taskForm.put("weight",material.getNet_weight().doubleValue()*min);
canuse_qty = canuse_qty.subtract(need); taskForm.put("material_id",material.getMaterial_id());
if (canuse_qty.intValue()<=0){return;} taskForm.put("material_code",material.getMaterial_code());
} taskForm.put("material_spec",material.getMaterial_spec());
if (canuse_qty.intValue() > 0){ taskForm.put("task_grop_id", grop_id);
JSONObject taskForm = new JSONObject(); engraveCallMaterialTask.createTask(taskForm);
taskForm.put("workorder_code"," "); canuse_qty = canuse_qty.subtract(need);
taskForm.put("device_code",""); if (canuse_qty.intValue()<=0){return;}
taskForm.put("qty",canuse_qty); }
taskForm.put("weight",material.getNet_weight().multiply(canuse_qty)); if (canuse_qty.intValue() > 0){
taskForm.put("material_id",material.getMaterial_id()); JSONObject taskForm = new JSONObject();
taskForm.put("material_code",material.getMaterial_code()); taskForm.put("workorder_code"," ");
taskForm.put("material_spec",material.getMaterial_spec()); taskForm.put("device_code","");
taskForm.put("task_grop_id", grop_id); taskForm.put("qty",canuse_qty);
engraveCallMaterialTask.createTask(taskForm); 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);
}
}
} }
} }
} }

View File

@@ -3,6 +3,7 @@ package org.nl.wms.storage_manage.productmanage.util;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import org.nl.wms.masterdata_manage.storage.service.storage.dao.StIvtStructattr; 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.productmanage.service.structIvt.dao.StIvtStructivtCp;
import org.nl.wms.storage_manage.semimanage.service.structIvt.dao.StIvtStructivtBcp;
/** /**
* <p> * <p>
@@ -39,5 +40,8 @@ public interface DivRuleCpService {
* @return StIvtStructattr / * @return StIvtStructattr /
*/ */
StIvtStructivtCp divRuleOut(JSONObject whereJson); StIvtStructivtCp divRuleOut(JSONObject whereJson);
StIvtStructivtCp divRuleOutAndLock(JSONObject whereJson);
StIvtStructivtBcp divRuleOutBcp(JSONObject whereJson);
} }

View File

@@ -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.service.structIvt.dao.StIvtStructivtCp;
import org.nl.wms.storage_manage.productmanage.util.DivRuleCpService; import org.nl.wms.storage_manage.productmanage.util.DivRuleCpService;
import org.nl.wms.storage_manage.productmanage.util.RuleUtil; 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.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.TransactionDefinition;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
/** /**
* <p> * <p>
@@ -34,13 +39,13 @@ public class DivRuleCpServiceImpl implements DivRuleCpService {
@Autowired @Autowired
protected IStIvtStructivtCpService iStIvtStructivtCpService; // 仓位库存服务 protected IStIvtStructivtCpService iStIvtStructivtCpService; // 仓位库存服务
private StIvtStructattr attrDao; @Autowired
private IStIvtStructivtBcpService bcpService;
private StIvtStructivtCp ivtDao;
@Override @Override
public StIvtStructattr divRuleIn(JSONObject whereJson) { public StIvtStructattr divRuleIn(JSONObject whereJson) {
StIvtStructattr attrDao;
String stor_id = whereJson.getString("stor_id"); String stor_id = whereJson.getString("stor_id");
String sect_id = whereJson.getString("sect_id"); String sect_id = whereJson.getString("sect_id");
@@ -49,15 +54,15 @@ public class DivRuleCpServiceImpl implements DivRuleCpService {
switch (whereJson.getString("rule_type")) { switch (whereJson.getString("rule_type")) {
case RuleUtil.PRODUCTION_IN_1 : case RuleUtil.PRODUCTION_IN_1 :
attrDao = iStIvtStructattrService.getOne( attrDao = iStIvtStructattrService.getOne(
new QueryWrapper<StIvtStructattr>().lambda() new QueryWrapper<StIvtStructattr>().lambda()
.eq(StIvtStructattr::getStor_id, stor_id) .eq(StIvtStructattr::getStor_id, stor_id)
.eq(StIvtStructattr::getSect_id, sect_id) .eq(StIvtStructattr::getSect_id, sect_id)
.eq(StIvtStructattr::getIs_used, IOSEnum.IS_USED.code("")) .eq(StIvtStructattr::getIs_used, IOSEnum.IS_USED.code(""))
.eq(StIvtStructattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定")) .eq(StIvtStructattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定"))
.eq(StIvtStructattr::getStoragevehicle_code,"") .eq(StIvtStructattr::getStoragevehicle_code, "")
.orderByAsc(StIvtStructattr::getStruct_code) .orderByAsc(StIvtStructattr::getStruct_code)
,false); , false);
break; break;
case RuleUtil.PRODUCTION_IN_2 : case RuleUtil.PRODUCTION_IN_2 :
attrDao = iStIvtStructattrService.getExceedAttr(whereJson); attrDao = iStIvtStructattrService.getExceedAttr(whereJson);
@@ -70,13 +75,15 @@ public class DivRuleCpServiceImpl implements DivRuleCpService {
.eq(StIvtStructattr::getStruct_id, attrDao.getControl_code()) .eq(StIvtStructattr::getStruct_id, attrDao.getControl_code())
); );
break; break;
default:
return null;
} }
return attrDao; return attrDao;
} }
@Override @Override
public StIvtStructivtCp divRuleOut(JSONObject whereJson) { public StIvtStructivtCp divRuleOut(JSONObject whereJson) {
StIvtStructivtCp ivtDao;
String stor_id = whereJson.getString("stor_id"); String stor_id = whereJson.getString("stor_id");
String sect_id = whereJson.getString("sect_id"); String sect_id = whereJson.getString("sect_id");
@@ -97,30 +104,14 @@ public class DivRuleCpServiceImpl implements DivRuleCpService {
throw new BadRequestException("物料不能为空"); throw new BadRequestException("物料不能为空");
ivtDao = iStIvtStructivtCpService.queryIvtOutOne(whereJson); ivtDao = iStIvtStructivtCpService.queryIvtOutOne(whereJson);
break; break;
default:
return null;
} }
return ivtDao; return ivtDao;
} }
@Override @Override
public StIvtStructivtCp divRuleOutAndLock(JSONObject whereJson) { public StIvtStructivtBcp divRuleOutBcp(JSONObject whereJson) {
RedissonUtils.lock(()->{ return bcpService.queryIvtOutOne(whereJson);
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;
} }
} }

View File

@@ -5,6 +5,7 @@ import lombok.AllArgsConstructor;
import lombok.Getter; import lombok.Getter;
import org.nl.common.enums.AcsTaskEnum; import org.nl.common.enums.AcsTaskEnum;
import org.nl.modules.wql.util.SpringContextHolder; 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.pda.service.PdaStBcpInService;
import org.nl.wms.storage_manage.productmanage.service.check.IStIvtCheckmstCpService; import org.nl.wms.storage_manage.productmanage.service.check.IStIvtCheckmstCpService;
import org.nl.wms.storage_manage.productmanage.service.iostorInv.IStIvtIostorinvCpOutService; 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); IStIvtCheckmstCpService bean = SpringContextHolder.getBean(IStIvtCheckmstCpService.class);
bean.taskOperate(form); 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);
}),
; ;

View File

@@ -3,9 +3,11 @@ package org.nl.wms.storage_manage.semimanage.service.iostorInv;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import org.nl.common.domain.query.PageQuery; 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.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.dao.StIvtIostorinvBcp;
import org.nl.wms.storage_manage.semimanage.service.iostorInv.dto.BcpIostorInvQuery; 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.List;
import java.util.Map; import java.util.Map;
@@ -53,7 +55,11 @@ public interface IStIvtIostorinvBcpOutService extends IService<StIvtIostorinvBcp
* param.put("material_id", form.getString("material_id")); * param.put("material_id", form.getString("material_id"));
* @return * @return
*/ */
StIvtStructivtCp autoConfirm(JSONObject param); StIvtStructivtBcp autoConfirmout(JSONObject param);
StIvtStructattr autoConfirmin(JSONObject param);
void lockStruct(String struct,String type,String inv_code);
/** /**
* 下发单据 * 下发单据
* @param form * @param form

View File

@@ -20,6 +20,7 @@ import org.nl.common.enums.AcsTaskEnum;
import org.nl.common.publish.BussEventMulticaster; import org.nl.common.publish.BussEventMulticaster;
import org.nl.common.publish.event.PointEvent; import org.nl.common.publish.event.PointEvent;
import org.nl.common.utils.IdUtil; import org.nl.common.utils.IdUtil;
import org.nl.common.utils.RedissonUtils;
import org.nl.common.utils.SecurityUtils; import org.nl.common.utils.SecurityUtils;
import org.nl.modules.common.exception.BadRequestException; import org.nl.modules.common.exception.BadRequestException;
import org.nl.modules.system.util.CodeUtil; 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.product_manage.sch.manage.TaskStatusEnum;
import org.nl.wms.scheduler_manage.service.task.ISchBaseTaskService; import org.nl.wms.scheduler_manage.service.task.ISchBaseTaskService;
import org.nl.wms.scheduler_manage.service.task.dao.SchBaseTask; 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.IOSEnum;
import org.nl.wms.storage_manage.basedata.service.record.service.IStIvtStructivtflowService; 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.ChangeIvtUtil;
import org.nl.wms.storage_manage.productmanage.util.DivRuleCpService; import org.nl.wms.storage_manage.productmanage.util.DivRuleCpService;
import org.nl.wms.storage_manage.productmanage.util.RuleUtil; 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.nl.wms.storage_manage.semimanage.service.structIvt.dao.StIvtStructivtBcp;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal; import java.math.BigDecimal;
@@ -76,8 +76,6 @@ public class StIvtIostorinvBcpOutServiceImpl extends ServiceImpl<StIvtIostorinvB
@Autowired @Autowired
private IStIvtStructivtBcpService structivtBcpService; private IStIvtStructivtBcpService structivtBcpService;
@Autowired @Autowired
private IStIvtStructivtflowService structivtflowService;
@Autowired
private IStIvtStructattrService structattrService; private IStIvtStructattrService structattrService;
@Autowired @Autowired
private DivRuleCpService divRuleCpService; private DivRuleCpService divRuleCpService;
@@ -244,69 +242,148 @@ public class StIvtIostorinvBcpOutServiceImpl extends ServiceImpl<StIvtIostorinvB
} }
@Override @Override
@Transactional public StIvtStructivtBcp autoConfirmout(JSONObject form) {
public StIvtStructivtCp autoConfirm(JSONObject form) { final StIvtStructivtBcp[] structivtBcp = new StIvtStructivtBcp[1];
MdMeMaterialbase material = materialbaseService.getOne(new QueryWrapper<MdMeMaterialbase>().eq("material_id", form.getString("material_id"))); RedissonUtils.lock(()->{
JSONObject param = new JSONObject(); MdMeMaterialbase material = materialbaseService.getOne(new QueryWrapper<MdMeMaterialbase>().eq("material_id", form.getString("material_id")));
param.put("stor_id", form.getString("stor_id")); JSONObject param = new JSONObject();
param.put("sect_id", form.getString("sect_id")); param.put("stor_id", form.getString("stor_id"));
param.put("material_id", form.getString("material_id")); param.put("sect_id", form.getString("sect_id"));
param.put("rule_type", RuleUtil.PRODUCTION_OUT_2); param.put("material_id", form.getString("material_id"));
// 2.锁定仓位 param.put("rule_type", RuleUtil.PRODUCTION_OUT_2);
StIvtStructivtCp structivtBcp = divRuleCpService.divRuleOutAndLock(param); // 2.锁定仓位
if (structivtBcp == null){ structivtBcp[0] = divRuleCpService.divRuleOutBcp(param);
return null; if (structivtBcp[0] != null){
} StIvtIostorinvBcp mst = new StIvtIostorinvBcp();
StIvtIostorinvBcp mst = new StIvtIostorinvBcp(); mst.setIostorinv_id(IdUtil.getStringId());
mst.setIostorinv_id(IdUtil.getStringId()); mst.setBill_code(CodeUtil.getNewCode("IO_CODE"));
mst.setBill_code(CodeUtil.getNewCode("IO_CODE")); mst.setBiz_date(form.getString("biz_date"));
mst.setBiz_date(form.getString("biz_date")); mst.setBill_type(form.getString("bill_type"));
mst.setBill_type(form.getString("bill_type")); mst.setIo_type(IOSEnum.IO_TYPE.code("出库"));
mst.setIo_type(IOSEnum.IO_TYPE.code("出库")); mst.setBill_status(IOSEnum.BILL_STATUS.code("生成"));
mst.setBill_status(IOSEnum.BILL_STATUS.code("生成")); mst.setRemark(form.getString("remark"));
mst.setRemark(form.getString("remark")); mst.setWorkshop_id(form.getString("product_code"));
mst.setWorkshop_id(form.getString("product_code")); mst.setPoint_code(form.getString("point_code"));
mst.setPoint_code(form.getString("point_code")); mst.setMaterial_id(material.getMaterial_id());
mst.setMaterial_id(material.getMaterial_id()); mst.setPcsn(StringUtils.isNotEmpty(form.getString("pcsn")) ? form.getString("pcsn") : DateUtil.today());
mst.setPcsn(StringUtils.isNotEmpty(form.getString("pcsn")) ? form.getString("pcsn") : DateUtil.today()); mst.setPlan_qty(structivtBcp[0].getCanuse_qty());
mst.setPlan_qty(structivtBcp.getCanuse_qty()); mst.setQuality_scode(structivtBcp[0].getQuality_scode());
mst.setQuality_scode(structivtBcp.getQuality_scode()); mst.setQty_unit_id(structivtBcp[0].getQty_unit_id());
mst.setQty_unit_id(structivtBcp.getQty_unit_id()); mst.setBase_bill_code("");
mst.setBase_bill_code(""); mst.setQty_unit_name(" ");
mst.setQty_unit_name(" "); mst.setUnit_weight(material.getNet_weight());
mst.setUnit_weight(material.getNet_weight()); mst.setStoragevehicle_code(" ");
mst.setStoragevehicle_code(" "); mst.setStoragevehicle_id(" ");
mst.setStoragevehicle_id(" "); 仓库数据:
仓库数据: {
{ StIvtBsrealstorattr stor = storattrService.getOne(new QueryWrapper<StIvtBsrealstorattr>().eq("stor_id", form.getString("stor_id")));
StIvtBsrealstorattr stor = storattrService.getOne(new QueryWrapper<StIvtBsrealstorattr>().eq("stor_id", form.getString("stor_id"))); mst.setStor_id(stor.getStor_id());
mst.setStor_id(stor.getStor_id()); mst.setStor_code(stor.getStor_code());
mst.setStor_code(stor.getStor_code()); mst.setStor_name(stor.getStor_name());
mst.setStor_name(stor.getStor_name()); StIvtSectattr sect = sectattrService.getById(form.getString("sect_id"));
StIvtSectattr sect = sectattrService.getById(form.getString("sect_id")); mst.setSect_code(sect.getSect_code());
mst.setSect_code(sect.getSect_code()); mst.setSect_id(sect.getSect_id());
mst.setSect_id(sect.getSect_id()); mst.setSect_name(sect.getSect_name());
mst.setSect_name(sect.getSect_name()); mst.setStruct_id(structivtBcp[0].getStruct_id());
mst.setStruct_id(structivtBcp.getStruct_id()); mst.setStruct_code(structivtBcp[0].getStruct_code());
mst.setStruct_code(structivtBcp.getStruct_code()); mst.setStruct_name(structivtBcp[0].getStruct_name());
mst.setStruct_name(structivtBcp.getStruct_name()); }
} mst.setCreate_id("1");
mst.setCreate_id("1"); mst.setCreate_name("acs");
mst.setCreate_name("acs"); mst.setCreate_time(DateUtil.now());
mst.setCreate_time(DateUtil.now()); PointEvent event = PointEvent.builder()
PointEvent event = PointEvent.builder() .type(AcsTaskEnum.TASK_STRUCT_OUT.getCode())
.type(AcsTaskEnum.TASK_STRUCT_OUT.getCode()) .point_code1(mst.getPoint_code())
.point_code1(mst.getPoint_code()) .point_code2(structivtBcp[0].getStruct_code())
.point_code2(structivtBcp.getStruct_code()) .vehicle_code(mst.getStoragevehicle_code())
.vehicle_code(mst.getStoragevehicle_code()) .product_area(mst.getWorkshop_id())
.product_area(mst.getWorkshop_id()) .callback((Consumer<String>) mst::setTask_id)
.callback((Consumer<String>) mst::setTask_id) .build();
.build(); BussEventMulticaster.Publish(event);
BussEventMulticaster.Publish(event); mst.setWork_status(IOSEnum.WORK_STATUS.code("生成"));
mst.setWork_status(IOSEnum.WORK_STATUS.code("生成")); mst.setBill_status(IOSEnum.BILL_STATUS.code("分配完"));
mst.setBill_status(IOSEnum.BILL_STATUS.code("分配完")); this.save(mst);
this.save(mst); this.lockStruct(structivtBcp[0].getStruct_code(), "出库锁",mst.getTask_id());
return structivtBcp; }
},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 @Override

View File

@@ -20,6 +20,7 @@ import org.nl.common.publish.BussEventMulticaster;
import org.nl.common.publish.event.PointEvent; import org.nl.common.publish.event.PointEvent;
import org.nl.common.utils.IdUtil; import org.nl.common.utils.IdUtil;
import org.nl.common.utils.MapOf; import org.nl.common.utils.MapOf;
import org.nl.common.utils.RedissonUtils;
import org.nl.common.utils.SecurityUtils; import org.nl.common.utils.SecurityUtils;
import org.nl.modules.common.exception.BadRequestException; import org.nl.modules.common.exception.BadRequestException;
import org.nl.modules.system.util.CodeUtil; import org.nl.modules.system.util.CodeUtil;
@@ -259,58 +260,55 @@ public class StIvtIostorinvBcpServiceImpl extends ServiceImpl<StIvtIostorinvBcpM
@Override @Override
@Transactional @Transactional
public String confirmTask(JSONObject form) { public String confirmTask(JSONObject form) {
Assert.notNull(new Object[]{form, form.get("iostorinv_id")}, "请求参数不能为空"); RedissonUtils.lock(()->{
StIvtIostorinvBcp mst = this.getById(form.getString("iostorinv_id")); Assert.notNull(new Object[]{form, form.get("iostorinv_id")}, "请求参数不能为空");
checkParam(mst); StIvtIostorinvBcp mst = this.getById(form.getString("iostorinv_id"));
//分配货位。下发任务,更新主单据状态。更新明细任务 checkParam(mst);
StIvtSectattr sect = sectattrService.getOne(new QueryWrapper<StIvtSectattr>().eq("sect_name", "半成品库区")); //分配货位。下发任务,更新主单据状态。更新明细任务
JSONObject jo = new JSONObject(); StIvtSectattr sect = sectattrService.getOne(new QueryWrapper<StIvtSectattr>().eq("sect_name", "半成品库区"));
jo.put("sect_id", sect.getSect_id()); JSONObject jo = new JSONObject();
jo.put("stor_id", sect.getStor_id()); jo.put("sect_id", sect.getSect_id());
jo.put("rule_type", RuleUtil.PRODUCTION_IN_1); jo.put("stor_id", sect.getStor_id());
StIvtStructattr stIvtStructattr = divRuleCpService.divRuleIn(jo); jo.put("rule_type", RuleUtil.PRODUCTION_IN_1);
StIvtStructattr stIvtStructattr = divRuleCpService.divRuleIn(jo);
if (ObjectUtil.isEmpty(stIvtStructattr)) { if (ObjectUtil.isEmpty(stIvtStructattr)) {
throw new BadRequestException("无可分配货位"); throw new BadRequestException("无可分配货位");
} }
stIvtStructattr.setLock_type(IOSEnum.LOCK_TYPE.code("入库锁")); 仓库信息:
stIvtStructattr.setInv_code(mst.getBill_code()); {
//维护载具 mst.setSect_id(stIvtStructattr.getSect_id());
structattrService.updateById(stIvtStructattr); 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())
mst.setSect_id(stIvtStructattr.getSect_id()); .acs_task_type("7")
mst.setSect_code(stIvtStructattr.getSect_code()); .task_group_id(IdUtil.getStringId())
mst.setSect_name(stIvtStructattr.getSect_name()); .point_code1(mst.getPoint_code())
mst.setStruct_id(stIvtStructattr.getStruct_id()); .point_code2(stIvtStructattr.getStruct_code())
mst.setStruct_code(stIvtStructattr.getStruct_code()); .vehicle_code(mst.getStoragevehicle_code())
mst.setStruct_name(stIvtStructattr.getStruct_name()); .product_area(mst.getWorkshop_id())
} .callback((Consumer<String>) mst::setTask_id)
.build();
BussEventMulticaster.Publish(event);
PointEvent event = PointEvent.builder() mst.setWork_status(IOSEnum.WORK_STATUS.code("生成"));
.type(AcsTaskEnum.TASK_STRUCT_IN.getCode()) mst.setBill_status(IOSEnum.BILL_STATUS.code("分配完"));
.acs_task_type("7") mst.setUpdate_time(DateUtil.now());
.task_group_id(IdUtil.getStringId()) mst.setUpdate_id(SecurityUtils.getCurrentUserId());
.point_code1(mst.getPoint_code()) mst.setUpdate_name(SecurityUtils.getCurrentNickName());
.point_code2(stIvtStructattr.getStruct_code()) this.updateById(mst);
.vehicle_code(mst.getStoragevehicle_code()) // 下发任务
.product_area(mst.getWorkshop_id()) sendTask(mst.getTask_id());
.callback((Consumer<String>) mst::setTask_id) structattrService.lockStruct(stIvtStructattr.getStruct_code(), "入库锁",mst.getTask_id());
.build(); },"banchengpin_ruku",2);
BussEventMulticaster.Publish(event); return null;
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();
} }
private void checkParam(StIvtIostorinvBcp mst) { private void checkParam(StIvtIostorinvBcp mst) {

View File

@@ -3,6 +3,7 @@ package org.nl.wms.storage_manage.semimanage.service.structIvt;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import org.nl.common.domain.query.PageQuery; import org.nl.common.domain.query.PageQuery;
import org.nl.wms.storage_manage.CHANGE_BILL_TYPE_ENUM; 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.rawmanage.service.structIvt.dto.StructIvtYLQuery;
import org.nl.wms.storage_manage.semimanage.service.structIvt.dao.StIvtStructivtBcp; import org.nl.wms.storage_manage.semimanage.service.structIvt.dao.StIvtStructivtBcp;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
@@ -41,4 +42,6 @@ public interface IStIvtStructivtBcpService extends IService<StIvtStructivtBcp> {
List<Map> getPdaBcpIvt(JSONObject jo); List<Map> getPdaBcpIvt(JSONObject jo);
List<Map> getPdaBcpMaterialIvt(JSONObject jo); List<Map> getPdaBcpMaterialIvt(JSONObject jo);
StIvtStructivtBcp queryIvtOutOne(JSONObject json);
} }

View File

@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.nl.common.domain.query.PageQuery; 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.dao.StIvtStructivtBcp;
import org.nl.wms.storage_manage.semimanage.service.structIvt.dto.StructIvtBcpQuery; 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> getPdaBcpIvt(JSONObject jo);
List<Map> getPdaBcpMaterialIvt(JSONObject jo); List<Map> getPdaBcpMaterialIvt(JSONObject jo);
StIvtStructivtBcp queryIvtOutOne(JSONObject json);
} }

View File

@@ -236,4 +236,25 @@
</where> </where>
</select> </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> </mapper>

View File

@@ -61,6 +61,11 @@ public class StIvtStructivtBcpServiceImpl extends ServiceImpl<StIvtStructivtBcpM
return this.baseMapper.getPdaBcpMaterialIvt(jo); return this.baseMapper.getPdaBcpMaterialIvt(jo);
} }
@Override
public StIvtStructivtBcp queryIvtOutOne(JSONObject json) {
return this.baseMapper.queryIvtOutOne(json);
}
@Override @Override
public Object getBcpIvt(StructIvtBcpQuery query, PageQuery pageQuery) { public Object getBcpIvt(StructIvtBcpQuery query, PageQuery pageQuery) {
com.github.pagehelper.Page<Object> page = PageHelper.startPage(pageQuery.getPage() + 1, pageQuery.getSize()); com.github.pagehelper.Page<Object> page = PageHelper.startPage(pageQuery.getPage() + 1, pageQuery.getSize());

View File

@@ -3,6 +3,7 @@ package org.nl.wms.system_manage.controller.dict;
import cn.dev33.satoken.annotation.SaIgnore; import cn.dev33.satoken.annotation.SaIgnore;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.nl.common.anno.Log; import org.nl.common.anno.Log;
@@ -121,8 +122,8 @@ public class SysDictController {
@ApiOperation("查询字典详情") @ApiOperation("查询字典详情")
@PostMapping("/dictDetailByCode") @PostMapping("/dictDetailByCode")
@SaIgnore @SaIgnore
public ResponseEntity<Object> createDetail(@RequestBody String code){ public ResponseEntity<Object> queryDetail(@RequestBody JSONObject code){
return new ResponseEntity<>(dictService.getDictByName(code),HttpStatus.OK); return new ResponseEntity<>(TableDataInfo.build(dictService.getDictByName(code.getString("code"))),HttpStatus.OK);
} }
} }

View File

@@ -121,7 +121,7 @@ public class SysDictServiceImpl extends ServiceImpl<SysDictMapper, Dict> impleme
public List<Dict> getDictByName(String name) { public List<Dict> getDictByName(String name) {
List<Dict> dictList = sysDictMapper.selectList(new LambdaQueryWrapper<Dict>().eq(Dict::getCode, name) List<Dict> dictList = sysDictMapper.selectList(new LambdaQueryWrapper<Dict>().eq(Dict::getCode, name)
.isNotNull(Dict::getLabel) .isNotNull(Dict::getLabel)
.ne(Dict::getLabel, "")); .ne(Dict::getLabel, "").select(Dict::getLabel,Dict::getValue));
return dictList; return dictList;
} }

View File

@@ -391,9 +391,9 @@
@clear="form.material_id='',form.material_code='',form.material_name='',form.material_spec=''" @clear="form.material_id='',form.material_code='',form.material_name='',form.material_spec=''"
/> />
</el-form-item> </el-form-item>
<el-form-item v-show="form.workprocedure_id == '1535144822984282112'" label="总袋量" prop="demol_num"> <el-form-item v-show="form.workprocedure_id == '1535144822984282112'" label="总袋量" prop="bag_num">
<el-input-number <el-input-number
v-model="form.package_ext.demol_num" v-model="form.package_ext.bag_num"
style="width: 200px;" style="width: 200px;"
clearable clearable
@focus="materialShow=true" @focus="materialShow=true"