rev : 出入库下发任务

This commit is contained in:
2023-06-03 11:15:39 +08:00
parent 88f543c843
commit 95b33ac5d4
10 changed files with 173 additions and 2 deletions

View File

@@ -34,6 +34,8 @@ public enum AcsTaskEnum {
TASK_WARP_EMPTY("8","包装机-送空框"),
TASK_STRUCT_IN("9","入库-生产入库"),
TASK_STRUCT_OUT("10","出库-生产出库"),
TASK_STRUCT_CP_IN("9","入库-成品-生产入库"),
TASK_STRUCT_CP_OUT("10","出库-成品-生产出库"),
TASK_STRUCT_CHECK("11","盘点任务"),
TASK_STRUCT_SHUT("12","拼盘任务"),

View File

@@ -141,4 +141,14 @@ public interface IStIvtIostorinvCpOutService extends IService<StIvtIostorinvCp>
* }
*/
void manualDiv(JSONObject whereJson);
/**
* 任务操作
* @param whereJson
* {
* ""
* }
*/
void taskOperate(JSONObject whereJson);
}

View File

@@ -154,4 +154,13 @@ public interface IStIvtIostorinvCpService extends IService<StIvtIostorinvCp> {
*/
void confirm(JSONObject whereJson);
/**
* 任务操作
* @param whereJson
* {
* ""
* }
*/
void taskOperate(JSONObject whereJson);
}

View File

@@ -50,4 +50,10 @@ public interface IStIvtIostorinvdisCpService extends IService<StIvtIostorinvdisC
* @param dtlDao /
*/
void onductDataOutDis(List<StIvtStructivtCp> list, StIvtIostorinvdtlCp dtlDao);
/**
* 分配完成方法
* @param json /
*/
void confirm(JSONObject json);
}

View File

@@ -45,4 +45,5 @@ public interface IStIvtIostorinvdtlCpService extends IService<StIvtIostorinvdtlC
* @return
*/
List getDisDtl(Map<String, Object> map);
}

View File

@@ -7,11 +7,13 @@ import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.jetbrains.annotations.NotNull;
import org.nl.common.TableDataInfo;
import org.nl.common.domain.query.PageQuery;
import org.nl.common.enums.AcsTaskEnum;
import org.nl.common.publish.BussEventMulticaster;
import org.nl.common.publish.event.PointEvent;
import org.nl.common.utils.IdUtil;
@@ -378,9 +380,11 @@ public class StIvtIostorinvCpOutServiceImpl extends ServiceImpl<StIvtIostorinvCp
);
PointEvent event = PointEvent.builder()
.type(CHANGE_BILL_TYPE_ENUM.IOSTORINV_IN_SEND.getCode())
.type(AcsTaskEnum.TASK_STRUCT_CP_OUT.getCode())
.point_code1(disDao.getStruct_code())
.point_code2(pointDao.getPoint_code())
.vehicle_code(disDao.getStoragevehicle_code())
.product_area("A1") // 暂时写死
.callback((Consumer<String>) disDao::setTask_id)
.build();
BussEventMulticaster.Publish(event);
@@ -533,6 +537,37 @@ public class StIvtIostorinvCpOutServiceImpl extends ServiceImpl<StIvtIostorinvCp
updateMst(mstDao.getIostorinv_id());
}
@Override
public void taskOperate(JSONObject form) {
String task_id = form.getString("task_id");
String status = form.getString("status");
StIvtIostorinvdisCp disDao = iostorinvdisCpService.getOne(new QueryWrapper<StIvtIostorinvdisCp>().lambda()
.eq(StIvtIostorinvdisCp::getTask_id, task_id));
// 更新任务状态为完成
if (status.equals(AcsTaskEnum.STATUS_FINISH.getCode())) {
iostorinvdisCpService.update(
new UpdateWrapper<StIvtIostorinvdisCp>().lambda()
.eq(StIvtIostorinvdisCp::getTask_id, task_id)
.set(StIvtIostorinvdisCp::getWork_status, IOSEnum.WORK_STATUS.code("完成"))
);
// 调用分配完成
JSONObject mst_jo = new JSONObject();
mst_jo.put("iostorinvdtl_id", disDao.getIostorinvdtl_id());
mst_jo.put("iostorinv_id", disDao.getIostorinv_id());
mst_jo.put("is_out", true);
iostorinvdisCpService.confirm(mst_jo);
} else {
iostorinvdisCpService.update(
new UpdateWrapper<StIvtIostorinvdisCp>().lambda()
.eq(StIvtIostorinvdisCp::getTask_id, task_id)
.set(StIvtIostorinvdisCp::getWork_status, IOSEnum.WORK_STATUS.code("执行中"))
);
}
}
@NotNull
private StIvtIostorinvCp packageMstForm(StIvtIostorinvCp stIvtIostorinvCp,JSONObject whereJson,Boolean isUpdate) {
JSONArray rows = whereJson.getJSONArray("tableData");

View File

@@ -14,6 +14,7 @@ import io.jsonwebtoken.lang.Assert;
import org.jetbrains.annotations.NotNull;
import org.nl.common.TableDataInfo;
import org.nl.common.domain.query.PageQuery;
import org.nl.common.enums.AcsTaskEnum;
import org.nl.common.publish.BussEventMulticaster;
import org.nl.common.publish.event.PointEvent;
import org.nl.common.utils.IdUtil;
@@ -52,6 +53,7 @@ import org.nl.wms.storage_manage.productmanage.service.structIvt.IStIvtStructivt
import org.nl.wms.storage_manage.productmanage.util.ChangeIvtUtil;
import org.nl.wms.storage_manage.productmanage.util.DivRuleCpService;
import org.nl.wms.storage_manage.productmanage.util.RuleUtil;
import org.nl.wms.storage_manage.semimanage.service.iostorInv.dao.StIvtIostorinvBcp;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -563,9 +565,11 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl<StIvtIostorinvCpMap
);
PointEvent event = PointEvent.builder()
.type(CHANGE_BILL_TYPE_ENUM.IOSTORINV_IN_SEND.getCode())
.type(AcsTaskEnum.TASK_STRUCT_CP_IN.getCode())
.point_code2(disDao.getStruct_code())
.point_code1(pointDao.getPoint_code())
.vehicle_code(disDao.getStoragevehicle_code())
.product_area("A1") // 暂时写死
.callback((Consumer<String>) disDao::setTask_id)
.build();
BussEventMulticaster.Publish(event);
@@ -657,6 +661,38 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl<StIvtIostorinvCpMap
}
@Override
@Transactional(rollbackFor = Exception.class)
public void taskOperate(JSONObject form) {
String task_id = form.getString("task_id");
String status = form.getString("status");
StIvtIostorinvdisCp disDao = iostorinvdisCpService.getOne(new QueryWrapper<StIvtIostorinvdisCp>().lambda()
.eq(StIvtIostorinvdisCp::getTask_id, task_id));
// 更新任务状态为完成
if (status.equals(AcsTaskEnum.STATUS_FINISH.getCode())) {
iostorinvdisCpService.update(
new UpdateWrapper<StIvtIostorinvdisCp>().lambda()
.eq(StIvtIostorinvdisCp::getTask_id, task_id)
.set(StIvtIostorinvdisCp::getWork_status, IOSEnum.WORK_STATUS.code("完成"))
);
// 调用分配完成
JSONObject mst_jo = new JSONObject();
mst_jo.put("iostorinvdtl_id", disDao.getIostorinvdtl_id());
mst_jo.put("iostorinv_id", disDao.getIostorinv_id());
mst_jo.put("is_out", false);
iostorinvdisCpService.confirm(mst_jo);
} else {
iostorinvdisCpService.update(
new UpdateWrapper<StIvtIostorinvdisCp>().lambda()
.eq(StIvtIostorinvdisCp::getTask_id, task_id)
.set(StIvtIostorinvdisCp::getWork_status, IOSEnum.WORK_STATUS.code("执行中"))
);
}
}
@NotNull
private StIvtIostorinvCp packageMstForm(StIvtIostorinvCp stIvtIostorinvCp,JSONObject whereJson,Boolean isUpdate) {
JSONArray rows = whereJson.getJSONArray("tableData");

View File

@@ -4,6 +4,7 @@ import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.NumberUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.nl.common.utils.IdUtil;
import org.nl.common.utils.SecurityUtils;
@@ -19,7 +20,11 @@ import org.nl.wms.masterdata_manage.storage.service.storage.IStIvtStructattrServ
import org.nl.wms.masterdata_manage.storage.service.storage.dao.StIvtStructattr;
import org.nl.wms.storage_manage.IOSEnum;
import org.nl.wms.storage_manage.IVTEnum;
import org.nl.wms.storage_manage.productmanage.service.iostorInv.IStIvtIostorinvCpOutService;
import org.nl.wms.storage_manage.productmanage.service.iostorInv.IStIvtIostorinvCpService;
import org.nl.wms.storage_manage.productmanage.service.iostorInv.IStIvtIostorinvdisCpService;
import org.nl.wms.storage_manage.productmanage.service.iostorInv.IStIvtIostorinvdtlCpService;
import org.nl.wms.storage_manage.productmanage.service.iostorInv.dao.StIvtIostorinvCp;
import org.nl.wms.storage_manage.productmanage.service.iostorInv.dao.StIvtIostorinvdisCp;
import org.nl.wms.storage_manage.productmanage.service.iostorInv.dao.StIvtIostorinvdtlCp;
import org.nl.wms.storage_manage.productmanage.service.iostorInv.dao.mapper.StIvtIostorinvdisCpMapper;
@@ -56,6 +61,15 @@ public class StIvtIostorinvdisCpServiceImpl extends ServiceImpl<StIvtIostorinvdi
@Autowired
protected IStIvtStructattrService iStIvtStructattrService; // 仓位属性服务
@Autowired
protected IStIvtIostorinvdtlCpService iostorinvdtlCpService; // 成品出入库明细表服务
@Autowired
protected IStIvtIostorinvCpService iStIvtIostorinvCpService; // 成品出入库服务
@Autowired
protected IStIvtIostorinvCpOutService iStIvtIostorinvCpOutService; // 成品出库服务
@Override
public void batchInsert(Collection<StIvtIostorinvdisCp> list) {
if (!CollectionUtils.isEmpty(list)){
@@ -168,4 +182,50 @@ public class StIvtIostorinvdisCpServiceImpl extends ServiceImpl<StIvtIostorinvdi
}
}
@Override
public void confirm(JSONObject json) {
// 判断此明细下的所有分配明细是否为完成
List<StIvtIostorinvdisCp> disDaoList = this.list(
new QueryWrapper<StIvtIostorinvdisCp>().lambda()
.eq(StIvtIostorinvdisCp::getIostorinvdtl_id, json.getString("iostorinvdtl_id"))
);
boolean is_confirm_dis = disDaoList.stream()
.allMatch(row -> row.getWork_status().equals(IOSEnum.WORK_STATUS.code("完成")));
if (is_confirm_dis) {
// 更新明细为完成
iostorinvdtlCpService.update(
new UpdateWrapper<StIvtIostorinvdtlCp>().lambda()
.set(StIvtIostorinvdtlCp::getBill_status,IOSEnum.BILL_STATUS.code("完成"))
.eq(StIvtIostorinvdtlCp::getIostorinvdtl_id,json.getString("iostorinvdtl_id"))
);
// 判断明细是否为完成
List<StIvtIostorinvdtlCp> dtlDaoList = iostorinvdtlCpService.list(
new QueryWrapper<StIvtIostorinvdtlCp>().lambda()
.eq(StIvtIostorinvdtlCp::getIostorinv_id, json.getString("iostorinv_id"))
);
boolean is_confirm_dtl = dtlDaoList.stream()
.allMatch(row -> row.getBill_status().equals(IOSEnum.BILL_STATUS.code("完成")));
if (is_confirm_dtl) {
// 调用主表确认
JSONObject param = new JSONObject();
param.put("iostorinv_id", json.getString("iostorinv_id"));
if (json.getBoolean("is_out")) {
iStIvtIostorinvCpOutService.confirm(param);
} else {
iStIvtIostorinvCpService.confirm(param);
}
}
}
}
}

View File

@@ -4,6 +4,7 @@ import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.apache.commons.lang3.StringUtils;
import org.nl.wms.masterdata_manage.service.master.IMdPbMeasureunitService;
@@ -13,6 +14,7 @@ import org.nl.wms.storage_manage.IOSEnum;
import org.nl.wms.storage_manage.IVTEnum;
import org.nl.wms.storage_manage.productmanage.service.iostorInv.IStIvtIostorinvdisCpService;
import org.nl.wms.storage_manage.productmanage.service.iostorInv.IStIvtIostorinvdtlCpService;
import org.nl.wms.storage_manage.productmanage.service.iostorInv.dao.StIvtIostorinvdisCp;
import org.nl.wms.storage_manage.productmanage.service.iostorInv.dao.StIvtIostorinvdtlCp;
import org.nl.wms.storage_manage.productmanage.service.iostorInv.dao.mapper.StIvtIostorinvdtlCpMapper;
import org.springframework.beans.factory.annotation.Autowired;

View File

@@ -5,6 +5,8 @@ import lombok.AllArgsConstructor;
import lombok.Getter;
import org.nl.common.enums.AcsTaskEnum;
import org.nl.modules.wql.util.SpringContextHolder;
import org.nl.wms.storage_manage.productmanage.service.iostorInv.IStIvtIostorinvCpOutService;
import org.nl.wms.storage_manage.productmanage.service.iostorInv.IStIvtIostorinvCpService;
import org.nl.wms.storage_manage.rawmanage.service.check.IStIvtCheckmstYlService;
import org.nl.wms.storage_manage.semimanage.service.iostorInv.IStIvtIostorinvBcpOutService;
import org.nl.wms.storage_manage.semimanage.service.iostorInv.IStIvtIostorinvBcpService;
@@ -32,6 +34,14 @@ public enum TASKEnum implements FunctionStrategy<String, JSONObject> {
IStIvtShutframeinvBcpService bean = SpringContextHolder.getBean(IStIvtShutframeinvBcpService.class);
bean.confirm(form);
}),
CP_IN_TASK(type -> AcsTaskEnum.TASK_STRUCT_CP_IN.getCode().equals(type), form -> {
IStIvtIostorinvCpService bean = SpringContextHolder.getBean(IStIvtIostorinvCpService.class);
bean.taskOperate(form);
}),
CP_OUT_TASK(type -> AcsTaskEnum.TASK_STRUCT_CP_OUT.getCode().equals(type), form -> {
IStIvtIostorinvCpOutService bean = SpringContextHolder.getBean(IStIvtIostorinvCpOutService.class);
bean.taskOperate(form);
}),
;
private final Predicate<String> predicate;