fix:1.持出库确认校验载具库存是否存在;
2.如果出库单据空出,修复ERP源单据数量;
This commit is contained in:
@@ -6,6 +6,7 @@ import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.ObjectUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.nl.common.domain.constant.DictConstantPool;
|
||||
import org.nl.common.domain.exception.BadRequestException;
|
||||
@@ -17,9 +18,10 @@ import org.nl.wms.dispatch_manage.task.service.dao.SchBaseTask;
|
||||
import org.nl.wms.flow_manage.flow.framework.process.nodeType.excess.impl.DecisionHandler;
|
||||
import org.nl.wms.md_manage.vehicleMater.service.IMdPbVehicleMaterService;
|
||||
import org.nl.wms.md_manage.vehicleMater.service.dao.MdPbVehicleMater;
|
||||
import org.nl.wms.pm_manage.form_data.service.IPmFormDataService;
|
||||
import org.nl.wms.pm_manage.form_data.service.dao.PmFormData;
|
||||
import org.nl.wms.stor_manage.struct.service.IStIvtStructattrService;
|
||||
import org.nl.wms.stor_manage.struct.service.dao.StIvtStructattr;
|
||||
import org.nl.wms.system_manage.service.param.ISysParamService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Propagation;
|
||||
@@ -49,6 +51,8 @@ public class OutStorageTask extends AbstractTask {
|
||||
private IStIvtStructattrService iStIvtStructattrService;
|
||||
@Autowired
|
||||
private IMdPbVehicleMaterService iMdPbVehicleMaterService;
|
||||
@Autowired
|
||||
private IPmFormDataService iPmFormDataService;
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
@@ -57,23 +61,23 @@ public class OutStorageTask extends AbstractTask {
|
||||
String target_point = from.getString("target_point");
|
||||
//通过全局变量获取目标位置
|
||||
String product_area = from.getString("product_area");
|
||||
if (StringUtils.isEmpty(product_area)){
|
||||
if (StringUtils.isEmpty(product_area)) {
|
||||
JSONObject formData = from.getJSONObject("form_data");
|
||||
if (!StringUtils.isEmpty(formData.getString("product_area"))){
|
||||
if (!StringUtils.isEmpty(formData.getString("product_area"))) {
|
||||
product_area = formData.getString("product_area");
|
||||
}
|
||||
}
|
||||
if (StringUtils.isNotEmpty(product_area)){
|
||||
if (StringUtils.isNotEmpty(product_area)) {
|
||||
String configTarget;
|
||||
if (vehicle_code.contains("T")){
|
||||
configTarget = DictConstantPool.PRODUCT_OUT_POINT_TP.get(product_area);
|
||||
}else {
|
||||
configTarget = DictConstantPool.PRODUCT_OUT_POINT.get(product_area);
|
||||
if (vehicle_code.contains("T")) {
|
||||
configTarget = DictConstantPool.PRODUCT_OUT_POINT_TP.get(product_area);
|
||||
} else {
|
||||
configTarget = DictConstantPool.PRODUCT_OUT_POINT.get(product_area);
|
||||
}
|
||||
if (StringUtils.isEmpty(configTarget)){
|
||||
if (StringUtils.isEmpty(configTarget)) {
|
||||
throw new BadRequestException("创建任务失败:出库点车间点位对应关系配置异常");
|
||||
}
|
||||
target_point=configTarget;
|
||||
target_point = configTarget;
|
||||
}
|
||||
if (StringUtils.isEmpty(vehicle_code) ||StringUtils.isEmpty(target_point)){
|
||||
throw new BadRequestException("创建任务失败:方法请求参数不能为空");
|
||||
|
||||
@@ -2,6 +2,7 @@ package org.nl.wms.dispatch_manage.task.service;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import org.nl.common.domain.entity.PageQuery;
|
||||
import org.nl.wms.dispatch_manage.task.service.dao.SchBaseTask;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
@@ -63,4 +64,7 @@ public interface ISchBaseTaskService extends IService<SchBaseTask> {
|
||||
|
||||
JSONObject errorTask(JSONObject param,String type);
|
||||
|
||||
JSONObject getIoSourceFormData(String vehicle_code, String pcsn);
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package org.nl.wms.dispatch_manage.task.service.dao.mapper;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import org.apache.ibatis.annotations.Select;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
@@ -24,4 +25,6 @@ public interface SchBaseTaskMapper extends BaseMapper<SchBaseTask> {
|
||||
IPage<SchBaseTask> selectPageLeftJoin(IPage<SchBaseTask> pages, @Param("whereJson") SchBaseTaskQuery whereJson, @Param("collect") List<String> collect);
|
||||
|
||||
List<Map> getByVehicle(@Param("vehicles") List<String> vehicles);
|
||||
|
||||
JSONObject getIoSourceFormData(@Param("vehicle_code") String vehicle_code, @Param("pcsn") String pcsn);
|
||||
}
|
||||
|
||||
@@ -38,6 +38,17 @@
|
||||
</where>
|
||||
ORDER BY t.create_time DESC
|
||||
</select>
|
||||
<select id="getIoSourceFormData" resultType="com.alibaba.fastjson.JSONObject">
|
||||
SELECT
|
||||
st_ivt_iostorinvdtl.source_form_data
|
||||
FROM
|
||||
st_ivt_iostorinvdtl
|
||||
LEFT JOIN st_ivt_iostorinv ON st_ivt_iostorinv.id = st_ivt_iostorinvdtl.inv_id
|
||||
WHERE
|
||||
vehicle_code = #{vehicle_code}
|
||||
AND pcsn = #{pcsn}
|
||||
AND st_ivt_iostorinv.STATUS <![CDATA[<]]> 80
|
||||
</select>
|
||||
<select id="getByVehicle" resultType="java.util.Map">
|
||||
SELECT
|
||||
md_pb_vehicleMater.*,
|
||||
|
||||
@@ -1,17 +1,20 @@
|
||||
package org.nl.wms.dispatch_manage.task.service.impl;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.lang.Assert;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.http.HttpStatus;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
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.LambdaUpdateWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.lang.Assert;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.apache.commons.lang3.ObjectUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.nl.common.TableDataInfo;
|
||||
import org.nl.common.domain.entity.PageQuery;
|
||||
import org.nl.common.domain.exception.BadRequestException;
|
||||
@@ -20,10 +23,9 @@ import org.nl.common.publish.BussEventMulticaster;
|
||||
import org.nl.common.utils.*;
|
||||
import org.nl.wms.dispatch_manage.task.handler.AbstractTask;
|
||||
import org.nl.wms.dispatch_manage.task.handler.impl.MoveStorageTask;
|
||||
import org.nl.wms.dispatch_manage.task.service.ISchBaseTaskService;
|
||||
import org.nl.wms.dispatch_manage.task.service.dao.SchBaseTask;
|
||||
import org.nl.wms.dispatch_manage.task.service.dao.mapper.SchBaseTaskMapper;
|
||||
import org.nl.wms.dispatch_manage.task.service.ISchBaseTaskService;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.nl.wms.dispatch_manage.task.service.dto.SchBaseTaskQuery;
|
||||
import org.nl.wms.external_system.acs.service.WmsToAcsService;
|
||||
import org.nl.wms.flow_manage.flow.framework.process.nodeType.excess.impl.DecisionHandler;
|
||||
@@ -32,6 +34,8 @@ import org.nl.wms.flow_manage.flow.service.execution.dao.ActRuExecution;
|
||||
import org.nl.wms.flow_manage.monitor.event.FlowContinueEvent;
|
||||
import org.nl.wms.md_manage.vehicleMater.service.IMdPbVehicleMaterService;
|
||||
import org.nl.wms.md_manage.vehicleMater.service.dao.MdPbVehicleMater;
|
||||
import org.nl.wms.pm_manage.form_data.service.IPmFormDataService;
|
||||
import org.nl.wms.pm_manage.form_data.service.dao.PmFormData;
|
||||
import org.nl.wms.stor_manage.struct.service.IStIvtStructattrService;
|
||||
import org.nl.wms.stor_manage.struct.service.dao.StIvtStructattr;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@@ -63,9 +67,10 @@ public class SchBaseTaskServiceImpl extends ServiceImpl<SchBaseTaskMapper, SchBa
|
||||
@Autowired
|
||||
@Lazy
|
||||
private MoveStorageTask moveStorageTask;
|
||||
|
||||
@Autowired
|
||||
private WmsToAcsService wmsToAcsService;
|
||||
@Autowired
|
||||
private IPmFormDataService iPmFormDataService;
|
||||
|
||||
@Override
|
||||
public IPage<SchBaseTask> queryAll(SchBaseTaskQuery whereJson, PageQuery page) {
|
||||
@@ -176,6 +181,26 @@ public class SchBaseTaskServiceImpl extends ServiceImpl<SchBaseTaskMapper, SchBa
|
||||
.in("task_code", taskCodes));
|
||||
}
|
||||
}
|
||||
} else if (param.getString("status").equals(StatusEnum.FORM_STATUS.code("取消"))) {
|
||||
//出库任务空出取消,ERP源单数量变更回去
|
||||
List<MdPbVehicleMater> vehicleMaterList = iMdPbVehicleMaterService.list(
|
||||
new QueryWrapper<MdPbVehicleMater>()
|
||||
.eq("task_code", task.getTask_code()).eq("vehicle_code", task.getVehicle_code())
|
||||
|
||||
);
|
||||
if (ObjectUtils.isNotEmpty(vehicleMaterList)) {
|
||||
//查找未完成的出库单与明细
|
||||
JSONObject formData = this.getIoSourceFormData(task.getVehicle_code(), vehicleMaterList.get(0).getPcsn());
|
||||
if (formData != null) {
|
||||
String formDataId = formData.getJSONObject("source_form_data").getString("id");
|
||||
String qty = formData.getJSONObject("source_form_data").getString("qty");
|
||||
if (StringUtils.isNotBlank(formDataId) && StringUtils.isNotBlank(qty)) {
|
||||
iPmFormDataService.update(new LambdaUpdateWrapper<PmFormData>()
|
||||
.set(PmFormData::getQty, qty)
|
||||
.eq(PmFormData::getId, formDataId));
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
this.update(new UpdateWrapper<SchBaseTask>()
|
||||
.set("status", param.getString("status"))
|
||||
@@ -238,6 +263,11 @@ public class SchBaseTaskServiceImpl extends ServiceImpl<SchBaseTaskMapper, SchBa
|
||||
return null;
|
||||
}
|
||||
|
||||
public JSONObject getIoSourceFormData(String vehicle_code, String pcsn) {
|
||||
return this.baseMapper.getIoSourceFormData(vehicle_code, pcsn);
|
||||
}
|
||||
|
||||
|
||||
private void moveTask(SchBaseTask task, String struct_code, StIvtStructattr stIvtStructattr) {
|
||||
AtomicReference<String> moveStruct = new AtomicReference<>();
|
||||
this.update(new UpdateWrapper<SchBaseTask>()
|
||||
|
||||
@@ -6,11 +6,13 @@ import cn.hutool.core.date.DateUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||
import org.apache.commons.lang3.ObjectUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.nl.common.TableDataInfo;
|
||||
import org.nl.common.anno.Log;
|
||||
import org.nl.common.domain.exception.BadRequestException;
|
||||
import org.nl.common.enums.StatusEnum;
|
||||
import org.nl.common.utils.RedissonUtils;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.wms.flow_manage.flow.service.execution.IActRuExecutionService;
|
||||
import org.nl.wms.flow_manage.flow.service.execution.dao.ActRuExecution;
|
||||
@@ -18,9 +20,9 @@ import org.nl.wms.md_manage.group_dick.service.IMdGruopDickService;
|
||||
import org.nl.wms.md_manage.group_dick.service.dao.MdGruopDick;
|
||||
import org.nl.wms.md_manage.vehicleMater.service.IMdPbVehicleMaterService;
|
||||
import org.nl.wms.md_manage.vehicleMater.service.dao.MdPbVehicleMater;
|
||||
import org.nl.wms.pda_manage.palletio.service.PalletIostorinvService;
|
||||
import org.nl.wms.pm_manage.form_data.service.IPmFormDataService;
|
||||
import org.nl.wms.pm_manage.form_data.service.dao.PmFormData;
|
||||
import org.nl.wms.stor_manage.struct.service.IStIvtStructattrService;
|
||||
import org.nl.wms.stor_manage.struct.service.dao.StIvtStructattr;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
@@ -30,6 +32,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
@@ -47,10 +50,11 @@ public class IOStorageController {
|
||||
private IMdPbVehicleMaterService iMdPbVehicleMaterService;
|
||||
@Autowired
|
||||
private IActRuExecutionService iActRuExecutionService;
|
||||
@Autowired
|
||||
private IPmFormDataService iPmFormDataService;
|
||||
|
||||
@Autowired
|
||||
private IMdGruopDickService iMdGruopDickService;
|
||||
@Autowired
|
||||
private IStIvtStructattrService iStIvtStructattrService;
|
||||
|
||||
@PostMapping("out")
|
||||
@SaIgnore
|
||||
@@ -60,16 +64,27 @@ public class IOStorageController {
|
||||
MdPbVehicleMater one = iMdPbVehicleMaterService.getOne(new QueryWrapper<MdPbVehicleMater>()
|
||||
.eq("vehicle_code", vehicle_code)
|
||||
.eq("is_delete", false));
|
||||
if (one!=null){
|
||||
if (one != null) {
|
||||
//校验料箱是否还存在库存
|
||||
RedissonUtils.lock(() -> {
|
||||
QueryWrapper<StIvtStructattr> query = new QueryWrapper<StIvtStructattr>()
|
||||
.eq("is_used", true)
|
||||
.eq("lock_type", StatusEnum.LOCK.code("无锁"))
|
||||
.eq("vehicle_code", vehicle_code);
|
||||
List<StIvtStructattr> list = iStIvtStructattrService.list(query);
|
||||
if (ObjectUtils.isNotEmpty(list)) {
|
||||
throw new BadRequestException(String.format("出库确认失败:当前载具号在立库的库位:%s中,请检查!", list.get(0).getStruct_code()));
|
||||
}
|
||||
}, StatusEnum.STRATEGY_TYPE.code("出库") + vehicle_code, 5);
|
||||
//流程校验
|
||||
String proc_inst_id = one.getProc_inst_id();
|
||||
if (!StringUtils.isEmpty(proc_inst_id)){
|
||||
if (!StringUtils.isEmpty(proc_inst_id)) {
|
||||
String parent_id = iActRuExecutionService.getParentByChild(proc_inst_id);
|
||||
ActRuExecution ruExecution = iActRuExecutionService.getOne(new QueryWrapper<ActRuExecution>()
|
||||
.eq("proc_inst_id",parent_id)
|
||||
.eq("proc_inst_id", parent_id)
|
||||
.lt("status", StatusEnum.FLOW_STATUS.code("完成")));
|
||||
if (ruExecution!=null){
|
||||
throw new BadRequestException(String.format("当前载具%s业务流程%s未完成",vehicle_code,parent_id));
|
||||
if (ruExecution != null) {
|
||||
throw new BadRequestException(String.format("当前载具%s业务流程%s未完成", vehicle_code, parent_id));
|
||||
}
|
||||
}
|
||||
//单据校验"针对托盘库做条件判断
|
||||
|
||||
Reference in New Issue
Block a user