add:增加托盘倒库手持批量组盘;
生产入库托盘混托入库回传;
发货通知单,销售出库单回传。
This commit is contained in:
@@ -22,7 +22,7 @@ public enum StatusEnum {
|
||||
/**
|
||||
* 单据状态
|
||||
*/
|
||||
FORM_STATUS(ForkMap.of("生成", "10", null, "已分配", "13", null, "下发", "15", null, "执行中", "20", null, "暂停", "30", null, "完成", "80", null, "强制完成", "82", null, "取消", "90", null)),
|
||||
FORM_STATUS(ForkMap.of("生成", "10", null, "已分配", "13", null, "下发", "15", null, "执行中", "20", null, "暂停", "30", null, "待回传", "40", null, "完成", "80", null, "强制完成", "82", null, "取消", "90", null)),
|
||||
|
||||
/**
|
||||
* 出入库单据类型退货出库
|
||||
@@ -45,7 +45,7 @@ public enum StatusEnum {
|
||||
*/
|
||||
ERP_TYPE(ForkMap.of("PRD_MO", "10", "生产订单", "PUR_ReceiveBill", "11", "收料通知单",
|
||||
"SAL_SaleOrder", "12", "销售订单", "PRD_INSTOCK", "13", "生产入库单", "STK_InStock", "14", "采购入库单",
|
||||
"SAL_RETURNSTOCK", "15", "销售退货入库单", "PUR_MRB", "18", "采购退料出库单",
|
||||
"SAL_RETURNSTOCK", "15", "销售退货入库单", "SAL_OUTSTOCK", "16", "销售出库单", "PUR_MRB", "18", "采购退料出库单",
|
||||
"SUB_PickMtrl", "19", "委外用料清单", "PRD_PPBOM", "20", "生产用料清单", "PRD_PickMtrl", "21", "生产领料单",
|
||||
"SP_PickMtrl", "22", "简单生产领料单", "STK_TransferDirect", "23", "调拨出库单", "STK_MisDelivery", "26", "其他出库单", "PRD_ReturnMtrl", "27", "生产退料单", "PRD_FeedMtrl", "28", "生产补料单", "SUB_RETURNMTRL", "29", "委外退料单")),
|
||||
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
package org.nl.wms.decision_manage.handler.chainer.impl;
|
||||
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
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 com.github.javaparser.utils.Log;
|
||||
import lombok.Data;
|
||||
@@ -11,6 +13,8 @@ import org.nl.common.enums.StatusEnum;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.common.utils.SpringContextHolder;
|
||||
import org.nl.wms.decision_manage.handler.chainer.DecisionerChain;
|
||||
import org.nl.wms.dispatch_manage.task.service.ISchBaseTaskService;
|
||||
import org.nl.wms.dispatch_manage.task.service.dao.SchBaseTask;
|
||||
import org.nl.wms.md_manage.vehicleMater.service.IMdPbVehicleMaterService;
|
||||
import org.nl.wms.md_manage.vehicleMater.service.dao.MdPbVehicleMater;
|
||||
import org.nl.wms.stor_manage.struct.service.IStIvtStructattrService;
|
||||
@@ -55,9 +59,20 @@ public class EndDecisionChainer extends DecisionerChain<List> {
|
||||
boolean in_storage = StatusEnum.STRATEGY_TYPE.code("入库").equals(strategy_type);
|
||||
IStIvtStructattrService iStIvtStructattrService = SpringContextHolder.getBean(IStIvtStructattrService.class);
|
||||
IMdPbVehicleMaterService iMdPbVehicleMaterService = SpringContextHolder.getBean(IMdPbVehicleMaterService.class);
|
||||
ISchBaseTaskService iSchBaseTaskService = SpringContextHolder.getBean(ISchBaseTaskService.class);
|
||||
List<String> structs = new ArrayList<>();
|
||||
//入库分配
|
||||
if (in_storage) {
|
||||
//混托任务判断
|
||||
if (startParam.getString("vehicle_code").contains("T")) {
|
||||
List<SchBaseTask> schBaseTaskList = iSchBaseTaskService.list(new QueryWrapper<SchBaseTask>()
|
||||
.eq("vehicle_code", startParam.getString("vehicle_code")).select("point_code2")
|
||||
.lt("status", StatusEnum.FORM_STATUS.code("完成")));
|
||||
if (CollectionUtil.isNotEmpty(schBaseTaskList)) {
|
||||
structs.add(schBaseTaskList.get(0).getPoint_code2());
|
||||
return structs;
|
||||
}
|
||||
}
|
||||
StIvtStructattr struct = (StIvtStructattr) transfers.get(0);
|
||||
UpdateWrapper<StIvtStructattr> updateWrapper = new UpdateWrapper<>();
|
||||
updateWrapper.set("lock_type", StatusEnum.LOCK.code("入库锁"))
|
||||
|
||||
@@ -70,11 +70,12 @@ public class GroupDickInStorageTask extends AbstractTask {
|
||||
}
|
||||
String groupId = item.get(0).getGroup_id();
|
||||
MdGruopDick mst = iMdGruopDickService.getById(groupId);
|
||||
SchBaseTask schBaseTask = iSchBaseTaskService.getOne(new QueryWrapper<SchBaseTask>()
|
||||
.eq("vehicle_code", vehicle_code).select("task_code")
|
||||
.lt("status", StatusEnum.FORM_STATUS.code("完成")));
|
||||
if (schBaseTask != null) {
|
||||
throw new BadRequestException("申请任务失败:载具" + vehicle_code + "已经存任务" + schBaseTask.getTask_code());
|
||||
List<SchBaseTask> list = iSchBaseTaskService.list(new QueryWrapper<SchBaseTask>().eq("vehicle_code", vehicle_code)
|
||||
.lt("status", StatusEnum.FORM_STATUS.code("完成")).select("vehicle_code"));
|
||||
if (!CollectionUtils.isEmpty(list)){
|
||||
if (!list.get(0).getVehicle_code().contains("T")) {
|
||||
throw new BadRequestException("申请任务失败:载具" + vehicle_code + "已经存任务" + list.get(0).getTask_code());
|
||||
}
|
||||
}
|
||||
JSONObject mstJ = (JSONObject) JSONObject.toJSON(mst);
|
||||
MdPbVehicleMaterVo vehicleMater = item.get(0);
|
||||
|
||||
@@ -53,16 +53,20 @@ public class InStorageTask extends AbstractTask {
|
||||
if (StringUtils.isEmpty(vehicle_code) ||StringUtils.isEmpty(start_point)||StringUtils.isEmpty(struct_code)){
|
||||
throw new BadRequestException("创建任务失败:方法请求参数不能为空");
|
||||
}
|
||||
List<SchBaseTask> list = iSchBaseTaskService.list(new QueryWrapper<SchBaseTask>().eq("vehicle_code", vehicle_code)
|
||||
.lt("status", StatusEnum.FORM_STATUS.code("完成")));
|
||||
if (!CollectionUtils.isEmpty(list)){
|
||||
throw new BadRequestException("当前载具存在任务:"+list.stream().map(SchBaseTask::getTask_code).collect(Collectors.joining(",")));
|
||||
}
|
||||
SchBaseTask task = new SchBaseTask();
|
||||
task.setStatus(StatusEnum.FORM_STATUS.code("生成"));
|
||||
List<SchBaseTask> list = iSchBaseTaskService.list(new QueryWrapper<SchBaseTask>().eq("vehicle_code", vehicle_code)
|
||||
.lt("status", StatusEnum.FORM_STATUS.code("完成")).select("vehicle_code"));
|
||||
if (!CollectionUtils.isEmpty(list)){
|
||||
if (!list.get(0).getVehicle_code().contains("T")) {
|
||||
throw new BadRequestException("申请任务失败:载具" + vehicle_code + "已经存任务" + list.get(0).getTask_code());
|
||||
}else {
|
||||
task.setStatus(StatusEnum.FORM_STATUS.code("待回传"));
|
||||
}
|
||||
}
|
||||
task.setId(IdUtil.getStringId());
|
||||
task.setSource_form_id(from.getString("id"));
|
||||
task.setTask_code(CodeUtil.getNewCode("TASK_CODE"));
|
||||
task.setStatus(StatusEnum.FORM_STATUS.code("生成"));
|
||||
task.setHandle_class(this.getClass().getName());
|
||||
task.setAcs_type(StatusEnum.ACS_TYPE.code("立库"));
|
||||
task.setCreate_time(DateUtil.now());
|
||||
|
||||
@@ -29,7 +29,9 @@ import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
|
||||
/**
|
||||
@@ -82,58 +84,80 @@ public class PalletInStorageTask extends AbstractTask {
|
||||
if (CollectionUtils.isEmpty(item)) {
|
||||
throw new BadRequestException("申请任务失败:载具" + vehicle_code + "载具物料信息信息不存在");
|
||||
}
|
||||
MdPbVehicleMaterVo vehicleMaterVo = item.get(0);
|
||||
String remark = vehicleMaterVo.getRemark();
|
||||
String isCheck = StringUtils.isNotBlank(vehicleMaterVo.getIs_check()) ? "1" : vehicleMaterVo.getIs_check();
|
||||
if ("空托盘入库".equals(remark)) {
|
||||
iBmVehicleInfoService.update(new UpdateWrapper<BmVehicleInfo>()
|
||||
.set("h", Integer.valueOf(h))
|
||||
.set("update_time", DateUtil.now())
|
||||
.set("update_name", "ACS托盘入库申请")
|
||||
.eq("vehicle_code", vehicle_code));
|
||||
MdPbVehicleMaterVo vehicleMater = item.get(0);
|
||||
//拣选回库流程
|
||||
BussEventMulticaster.Publish(
|
||||
new FlowStartEvent("pallet_in",
|
||||
(proc_inst_id,empPlace) -> iMdPbVehicleMaterService.update(new UpdateWrapper<MdPbVehicleMater>()
|
||||
.set("proc_inst_id",proc_inst_id)
|
||||
.eq("vehicle_code",vehicle_code)
|
||||
.eq("is_delete",false))
|
||||
,new JSONObject(MapOf.of("start_point", point_code1)))
|
||||
.build("md_pb_vehicleMater",vehicleMater.getId(),null,null, (JSONObject) JSONObject.toJSON(vehicleMater))
|
||||
);
|
||||
}else {
|
||||
String groupId = vehicleMaterVo.getGroup_id();
|
||||
MdGruopDick mst = iMdGruopDickService.getById(groupId);
|
||||
if (mst == null) {
|
||||
throw new BadRequestException("申请任务失败,载具没有组盘信息!");
|
||||
List<MdPbVehicleMaterVo> newVehicleMater =new ArrayList<>();
|
||||
//混托任务判断
|
||||
if (item.get(0).getVehicle_code().contains("T")&&item.size() > 1) {
|
||||
newVehicleMater= item.stream().filter(r -> r.getNeed_pick() == null || !r.getNeed_pick()).collect(Collectors.toList());
|
||||
if (newVehicleMater.size() ==item.size()) {
|
||||
newVehicleMater.get(0).setNeed_pick(true);
|
||||
}else{
|
||||
item.stream().filter(r -> r.getNeed_pick() != null && r.getNeed_pick()).findFirst().ifPresent(newVehicleMater::add);
|
||||
}
|
||||
SchBaseTask schBaseTask = iSchBaseTaskService.getOne(new QueryWrapper<SchBaseTask>()
|
||||
.eq("vehicle_code", vehicle_code).select("task_code")
|
||||
.lt("status", StatusEnum.FORM_STATUS.code("完成")));
|
||||
if (schBaseTask != null) {
|
||||
throw new BadRequestException("申请任务失败:载具" + vehicle_code + "已经存任务" + schBaseTask.getTask_code());
|
||||
}
|
||||
iBmVehicleInfoService.update(new UpdateWrapper<BmVehicleInfo>()
|
||||
.set("h", Integer.valueOf(h))
|
||||
.set("update_time", DateUtil.now())
|
||||
.set("update_name", "ACS托盘入库申请")
|
||||
.eq("vehicle_code",vehicle_code));
|
||||
|
||||
JSONObject mstJ = (JSONObject) JSONObject.toJSON(mst);
|
||||
MdPbVehicleMaterVo vehicleMater = vehicleMaterVo;
|
||||
mstJ.put("stor_code", vehicleMater.getStor_code());
|
||||
BussEventMulticaster.Publish(
|
||||
new FlowStartEvent("md_group",
|
||||
(proc_inst_id, empPlace) -> iMdPbVehicleMaterService.update(new UpdateWrapper<MdPbVehicleMater>()
|
||||
.set("proc_inst_id", proc_inst_id)
|
||||
.eq("vehicle_code", vehicle_code)
|
||||
.eq("is_delete", false))
|
||||
, new JSONObject(MapOf.of("start_point", point_code1, "isCheck", isCheck)))
|
||||
.build("md_group_dick", mst.getId(), mst.getSource_form_type(), mst.getSource_form_id(), mstJ)
|
||||
.build("md_pb_vehicleMater", item)
|
||||
);
|
||||
} else {
|
||||
newVehicleMater = item;
|
||||
}
|
||||
newVehicleMater.forEach(r -> {
|
||||
String remark = r.getRemark();
|
||||
String isCheck = StringUtils.isNotBlank(r.getIs_check()) ? "1" : r.getIs_check();
|
||||
if ("空托盘入库".equals(remark)) {
|
||||
iBmVehicleInfoService.update(new UpdateWrapper<BmVehicleInfo>()
|
||||
.set("h", Integer.valueOf(h))
|
||||
.set("update_time", DateUtil.now())
|
||||
.set("update_name", "ACS托盘入库申请")
|
||||
.eq("vehicle_code", vehicle_code));
|
||||
MdPbVehicleMaterVo vehicleMater = item.get(0);
|
||||
//拣选回库流程
|
||||
BussEventMulticaster.Publish(
|
||||
new FlowStartEvent("pallet_in",
|
||||
(proc_inst_id, empPlace) -> iMdPbVehicleMaterService.update(new UpdateWrapper<MdPbVehicleMater>()
|
||||
.set("proc_inst_id", proc_inst_id)
|
||||
.eq("vehicle_code", vehicle_code)
|
||||
.eq("is_delete", false))
|
||||
, new JSONObject(MapOf.of("start_point", point_code1)))
|
||||
.build("md_pb_vehicleMater", vehicleMater.getId(), null, null, (JSONObject) JSONObject.toJSON(vehicleMater))
|
||||
);
|
||||
} else {
|
||||
String groupId = r.getGroup_id();
|
||||
MdGruopDick mst = iMdGruopDickService.getById(groupId);
|
||||
if (mst == null) {
|
||||
throw new BadRequestException("申请任务失败,载具没有组盘信息!");
|
||||
}
|
||||
List<SchBaseTask> list = iSchBaseTaskService.list(new QueryWrapper<SchBaseTask>().eq("vehicle_code", vehicle_code)
|
||||
.lt("status", StatusEnum.FORM_STATUS.code("完成")).select("vehicle_code"));
|
||||
if (!CollectionUtils.isEmpty(list)) {
|
||||
if (!list.get(0).getVehicle_code().contains("T")) {
|
||||
throw new BadRequestException("申请任务失败:载具" + vehicle_code + "已经存任务" + list.get(0).getTask_code());
|
||||
}
|
||||
}
|
||||
// SchBaseTask schBaseTask = iSchBaseTaskService.getOne(new QueryWrapper<SchBaseTask>()
|
||||
// .eq("vehicle_code", vehicle_code).select("task_code","vehicle_code")
|
||||
// .lt("status", StatusEnum.FORM_STATUS.code("完成")));
|
||||
// if (schBaseTask != null) {
|
||||
// if (!schBaseTask.getVehicle_code().contains("T")) {
|
||||
// throw new BadRequestException("申请任务失败:载具" + vehicle_code + "已经存任务" + schBaseTask.getTask_code());
|
||||
// }
|
||||
// }
|
||||
iBmVehicleInfoService.update(new UpdateWrapper<BmVehicleInfo>()
|
||||
.set("h", Integer.valueOf(h))
|
||||
.set("update_time", DateUtil.now())
|
||||
.set("update_name", "ACS托盘入库申请")
|
||||
.eq("vehicle_code", vehicle_code));
|
||||
|
||||
JSONObject mstJ = (JSONObject) JSONObject.toJSON(mst);
|
||||
MdPbVehicleMaterVo vehicleMater = r;
|
||||
mstJ.put("stor_code", vehicleMater.getStor_code());
|
||||
BussEventMulticaster.Publish(
|
||||
new FlowStartEvent("md_group",
|
||||
(proc_inst_id, empPlace) -> iMdPbVehicleMaterService.update(new UpdateWrapper<MdPbVehicleMater>()
|
||||
.set("proc_inst_id", proc_inst_id)
|
||||
.eq("vehicle_code", vehicle_code)
|
||||
.eq("is_delete", false))
|
||||
, new JSONObject(MapOf.of("start_point", point_code1, "isCheck", isCheck)))
|
||||
.build("md_group_dick", mst.getId(), mst.getSource_form_type(), mst.getSource_form_id(), mstJ)
|
||||
.build("md_pb_vehicleMater", item)
|
||||
);
|
||||
}
|
||||
});
|
||||
List<SchBaseTask> list = iSchBaseTaskService.list(new QueryWrapper<SchBaseTask>().eq("vehicle_code", vehicle_code)
|
||||
.lt("status", StatusEnum.FORM_STATUS.code("完成")));
|
||||
if (ObjectUtils.isNotEmpty(list)) {
|
||||
|
||||
@@ -98,7 +98,6 @@ public class FormActivityBehavior extends FlowNodeActivityBehavior<JSONObject> {
|
||||
mst_json.put("source_form_type",handler.getString("source_form_type"));
|
||||
StIvtIostorinv mst = mst_json.toJavaObject(StIvtIostorinv.class);
|
||||
handler.put("form_id",mst.getId());
|
||||
|
||||
JSONArray itemArr = handler.getJSONArray("item");
|
||||
if(itemArr !=null){
|
||||
for (int i = 0; i < itemArr.size(); i++) {
|
||||
|
||||
@@ -79,6 +79,19 @@ public class MdGruopDickController {
|
||||
return new ResponseEntity<>(TableDataInfo.build(),HttpStatus.OK);
|
||||
}
|
||||
|
||||
|
||||
@PostMapping("/mixingGroupDick")
|
||||
@Log("托盘混料组盘")
|
||||
@SaIgnore
|
||||
public ResponseEntity<Object> mixingGroupDick(@RequestBody MaterGroupDto dicks) {
|
||||
RedissonUtils.lock(() -> {
|
||||
iMdGruopDickService.mixingGroupDick((JSONObject) JSONObject.toJSON(dicks));
|
||||
}, "托盘混料组盘", null);
|
||||
return new ResponseEntity<>(TableDataInfo.build(),HttpStatus.OK);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@PostMapping
|
||||
@Log("人工组盘入库")
|
||||
@SaIgnore
|
||||
|
||||
@@ -27,6 +27,10 @@ public interface IMdGruopDickService extends IService<MdGruopDick> {
|
||||
Object queryAll(GroupDickQuery query, PageQuery page);
|
||||
|
||||
void groupDick(JSONObject form);
|
||||
void mixingGroupDick(JSONObject form);
|
||||
|
||||
|
||||
|
||||
void delete(@RequestBody String[] ids);
|
||||
|
||||
|
||||
|
||||
@@ -63,6 +63,7 @@ import java.util.stream.Collectors;
|
||||
@Service
|
||||
public class MdGruopDickServiceImpl extends ServiceImpl<MdGruopDickMapper, MdGruopDick> implements IMdGruopDickService {
|
||||
|
||||
|
||||
@Autowired
|
||||
private IMdPbVehicleMaterService iMdPbVehicleMaterService;
|
||||
@Autowired
|
||||
@@ -121,6 +122,118 @@ public class MdGruopDickServiceImpl extends ServiceImpl<MdGruopDickMapper, MdGru
|
||||
return build;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void mixingGroupDick(JSONObject forms) {
|
||||
List<Map> tableData = (List) forms.remove("item");
|
||||
String vehicleCode = forms.getString("vehicle_code");
|
||||
if (CollectionUtils.isEmpty(forms)) {
|
||||
throw new BadRequestException("组盘失败:入库明细数据不能为空");
|
||||
}
|
||||
if (StringUtils.isBlank(vehicleCode)) {
|
||||
throw new BadRequestException("组盘失败:载具" + vehicleCode + "信息不能为空!");
|
||||
}
|
||||
if (!vehicleCode.contains("T")) {
|
||||
throw new BadRequestException("组盘失败:载具" + vehicleCode + "不是托盘,不能进行混料组盘!");
|
||||
}
|
||||
BmVehicleInfo vehicleInfo = iBmVehicleInfoService.vehileInfo(vehicleCode);
|
||||
if (vehicleInfo == null) {
|
||||
throw new BadRequestException("组盘失败:载具" + vehicleCode + "信息不存在请在载具信息中维护");
|
||||
}
|
||||
Integer h = vehicleInfo.getH();
|
||||
RedissonUtils.lock(() -> {
|
||||
//组盘前库存校验
|
||||
QueryWrapper<StIvtStructattr> ivtList = new QueryWrapper<StIvtStructattr>()
|
||||
.eq("vehicle_code", vehicleInfo.getVehicle_code());
|
||||
List<StIvtStructattr> existList = iStIvtStructattrService.list(ivtList);
|
||||
if (ObjectUtils.isNotEmpty(existList)) {
|
||||
throw new BadRequestException(String.format("组盘失败:当前载具号在立库的库位中未出库:%s中,请核查库存记录!", existList.get(0).getStruct_code()));
|
||||
}
|
||||
if (!vehicleInfo.getVehicle_code().contains("T")) {
|
||||
//组盘前符合条件库位数量校验
|
||||
QueryWrapper<StIvtStructattr> query = new QueryWrapper<StIvtStructattr>()
|
||||
.eq("is_used", true)
|
||||
.eq("lock_type", StatusEnum.LOCK.code("无锁"))
|
||||
.eq("stor_code", forms.getString("stor_code"))
|
||||
.isNull("vehicle_code");
|
||||
if (h != null) {
|
||||
query.ge("h", h);
|
||||
}
|
||||
int structCount = iStIvtStructattrService.count(query);
|
||||
if (structCount < DictConstantPool.STRUCT_COUNT) {
|
||||
throw new BadRequestException("入库失败:当前仓库可用库位小于" + DictConstantPool.STRUCT_COUNT);
|
||||
}
|
||||
}
|
||||
}, StatusEnum.STRATEGY_TYPE.code("入库") + forms.getString("stor_code"), 5);
|
||||
String now = DateUtil.now();
|
||||
forms.put("create_name", SecurityUtils.getCurrentNickName());
|
||||
forms.put("create_time", now);
|
||||
forms.put("status", StatusEnum.FORM_STATUS.code("生成"));
|
||||
List<MdPbVehicleMater> vehicleMaters = new ArrayList<>();
|
||||
Map<String, MdGruopDick> map = new HashMap<>();
|
||||
if (!CollectionUtils.isEmpty(forms)) {
|
||||
//父级组盘
|
||||
MdGruopDick mdGruopDick = new MdGruopDick();
|
||||
String groupDick = null;
|
||||
List<MdPbVehicleMater> tmpCount = iMdPbVehicleMaterService.list(new QueryWrapper<MdPbVehicleMater>()
|
||||
.eq("is_delete", false)
|
||||
.in("vehicle_code", forms.getString("vehicle_code")));
|
||||
if (tmpCount.size() > 0) {
|
||||
groupDick = tmpCount.get(0).getGroup_id();
|
||||
mdGruopDick.setStatus(StatusEnum.FORM_STATUS.code("完成"));
|
||||
mdGruopDick.setUpdate_name(SecurityUtils.getCurrentNickName());
|
||||
mdGruopDick.setUpdate_time(now);
|
||||
mdGruopDick.setForm_data(forms.getJSONObject("form_data"));
|
||||
} else {
|
||||
MdGruopDick dick = forms.toJavaObject(MdGruopDick.class);
|
||||
dick.setVehicle_code(vehicleCode);
|
||||
dick.setCode(CodeUtil.getNewCode("md_group_dick"));
|
||||
dick.setId(IdUtil.getStringId());
|
||||
groupDick = dick.getId();
|
||||
dick.setStatus(StatusEnum.FORM_STATUS.code("完成"));
|
||||
dick.setCreate_name(SecurityUtils.getCurrentNickName());
|
||||
dick.setCreate_time(now);
|
||||
dick.setForm_data(forms.getJSONObject("form_data"));
|
||||
map.put(vehicleCode, dick);
|
||||
}
|
||||
for (int i = 0; i < tableData.size(); i++) {
|
||||
Map itemMap = tableData.get(i);
|
||||
JSONObject item = new JSONObject(itemMap);
|
||||
//子级组盘
|
||||
MdPbVehicleMater vehicleMater = item.toJavaObject(MdPbVehicleMater.class);
|
||||
vehicleMater.setGroup_id(groupDick);
|
||||
vehicleMater.setVehicle_code(vehicleCode);
|
||||
vehicleMater.setUnit_id("100438");//个
|
||||
vehicleMater.setStor_code(vehicleCode.toUpperCase().contains("T") ? "FStockPallet" : "FStockId");
|
||||
vehicleMater.setId(IdUtil.getStringId());
|
||||
vehicleMater.setCreate_time(now);
|
||||
vehicleMater.setCreate_name(SecurityUtils.getCurrentNickName());
|
||||
vehicleMaters.add(vehicleMater);
|
||||
}
|
||||
}
|
||||
boolean count = vehicleMaters.stream()
|
||||
.filter(vm -> vm.getVehicle_code() != null && vm.getVehicle_code().contains("T"))
|
||||
//按载具和物料分组
|
||||
.collect(Collectors.groupingBy(
|
||||
vm -> vm.getVehicle_code() + "_" + vm.getMaterial_id(),
|
||||
Collectors.mapping(MdPbVehicleMater::getPcsn, Collectors.toSet())
|
||||
))
|
||||
.values().stream()
|
||||
.anyMatch(pcsnSet -> pcsnSet.size() > 1);
|
||||
if (count) {
|
||||
throw new BadRequestException("组盘失败,原因:同一个载具存在相同物料不同批次的数据,相同物料不同批次不符合混料组盘,请检查或分开组盘!");
|
||||
}
|
||||
//参数校验
|
||||
// List<MdGruopDick> tmpCount2 = this.list(new QueryWrapper<MdGruopDick>().in("vehicle_code", map.keySet()).lt("status", StatusEnum.FORM_STATUS.code("完成")));
|
||||
// if (tmpCount2.size() > 0) {
|
||||
// throw new BadRequestException("组盘失败:当前载具存在未完成的组盘信息" + tmpCount2.stream().map(MdGruopDick::getVehicle_code).collect(Collectors.joining(",")));
|
||||
// }
|
||||
this.saveBatch(map.values());
|
||||
iMdPbVehicleMaterService.saveBatch(vehicleMaters);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void groupDick(JSONObject forms) {
|
||||
@@ -172,8 +285,11 @@ public class MdGruopDickServiceImpl extends ServiceImpl<MdGruopDickMapper, MdGru
|
||||
String vehicle_code = item.getString("vehicle_code");
|
||||
MdPbVehicleMater vehicleMater = item.toJavaObject(MdPbVehicleMater.class);
|
||||
MdGruopDick mdGruopDick = map.get(vehicle_code);
|
||||
if (mdGruopDick ==null){
|
||||
if (mdGruopDick == null) {
|
||||
MdGruopDick dick = forms.toJavaObject(MdGruopDick.class);
|
||||
if (dick == null) {
|
||||
dick = new MdGruopDick();
|
||||
}
|
||||
dick.setVehicle_code(vehicle_code);
|
||||
dick.setCode(CodeUtil.getNewCode("md_group_dick"));
|
||||
dick.setId(IdUtil.getStringId());
|
||||
@@ -181,7 +297,7 @@ public class MdGruopDickServiceImpl extends ServiceImpl<MdGruopDickMapper, MdGru
|
||||
dick.setCreate_name(SecurityUtils.getCurrentNickName());
|
||||
dick.setCreate_time(now);
|
||||
dick.setForm_data(forms.getJSONObject("form_data"));
|
||||
map.put(vehicle_code,dick);
|
||||
map.put(vehicle_code, dick);
|
||||
vehicleMater.setGroup_id(dick.getId());
|
||||
}else {
|
||||
vehicleMater.setGroup_id(mdGruopDick.getId());
|
||||
@@ -196,27 +312,50 @@ public class MdGruopDickServiceImpl extends ServiceImpl<MdGruopDickMapper, MdGru
|
||||
vehicleMaters.add(vehicleMater);
|
||||
}
|
||||
}
|
||||
//参数校验
|
||||
List<MdGruopDick> tmpCount2= this.list(new QueryWrapper<MdGruopDick>().in("vehicle_code", map.keySet()).lt("status", StatusEnum.FORM_STATUS.code("完成")));
|
||||
if (tmpCount2.size()>0){
|
||||
throw new BadRequestException("组盘失败:当前载具存在未完成的组盘信息"+tmpCount2.stream().map(MdGruopDick::getVehicle_code).collect(Collectors.joining(",")));
|
||||
}
|
||||
int tmpCount = iBmVehicleInfoService.count(new QueryWrapper<BmVehicleInfo>().in("vehicle_code", map.keySet()));
|
||||
if (tmpCount<map.size()){
|
||||
throw new BadRequestException("组盘失败:载具编号不存在");
|
||||
}
|
||||
List<MdPbVehicleMater> tmpCount1 = iMdPbVehicleMaterService.list(new QueryWrapper<MdPbVehicleMater>()
|
||||
.eq("is_delete",false)
|
||||
.in("vehicle_code", map.keySet()));
|
||||
if (tmpCount1.size()>0){
|
||||
//托盘组盘校验
|
||||
List<MdPbVehicleMater> collect = tmpCount1.stream().filter(mdPbVehicleMater -> mdPbVehicleMater.getNeed_pick()&&mdPbVehicleMater.getVehicle_code().contains("T")).collect(Collectors.toList());
|
||||
if (!CollectionUtils.isEmpty(collect)) {
|
||||
String vehicles = collect.stream().map(MdPbVehicleMater::getVehicle_code).collect(Collectors.joining(","));
|
||||
throw new BadRequestException("载具" + vehicles + "为拣选回库无需组盘");
|
||||
//混托不校验
|
||||
if (!vehicle0.contains("T")) {
|
||||
List<MdGruopDick> tmpCount2 = this.list(new QueryWrapper<MdGruopDick>().in("vehicle_code", map.keySet()).lt("status", StatusEnum.FORM_STATUS.code("完成")));
|
||||
if (tmpCount2.size() > 0) {
|
||||
throw new BadRequestException("组盘失败:当前载具存在未完成的组盘信息" + tmpCount2.stream().map(MdGruopDick::getVehicle_code).collect(Collectors.joining(",")));
|
||||
}
|
||||
} else {
|
||||
//参数校验
|
||||
int tmpCount = iBmVehicleInfoService.count(new QueryWrapper<BmVehicleInfo>().in("vehicle_code", map.keySet()));
|
||||
if (tmpCount < map.size()) {
|
||||
throw new BadRequestException("组盘失败:载具编号不存在");
|
||||
}
|
||||
List<MdPbVehicleMater> checkMaterList = new ArrayList<>(vehicleMaters);
|
||||
List<MdPbVehicleMater> vehicleMaterList = iMdPbVehicleMaterService.list(new QueryWrapper<MdPbVehicleMater>()
|
||||
.eq("is_delete", false)
|
||||
.eq("vehicle_code", vehicle0));
|
||||
if (ObjectUtils.isNotEmpty(vehicleMaterList)) {
|
||||
checkMaterList.addAll(vehicleMaterList);
|
||||
}
|
||||
boolean count = checkMaterList.stream()
|
||||
.filter(vm -> vm.getVehicle_code() != null && vm.getVehicle_code().contains("T"))
|
||||
//按载具和物料分组
|
||||
.collect(Collectors.groupingBy(
|
||||
vm -> vm.getVehicle_code() + "_" + vm.getMaterial_id(),
|
||||
Collectors.mapping(MdPbVehicleMater::getPcsn, Collectors.toSet())
|
||||
))
|
||||
.values().stream()
|
||||
.anyMatch(pcsnSet -> pcsnSet.size() > 1);
|
||||
if (count) {
|
||||
throw new BadRequestException("组盘失败!原因:该托盘存在物料编码相同但批次不同的数据,相同物料不同批次不符合混料组盘,请检查或分开组盘!");
|
||||
}
|
||||
throw new BadRequestException("组盘失败:载具已经存在组盘信息" + tmpCount1.stream().map(MdPbVehicleMater::getVehicle_code).collect(Collectors.joining(",")));
|
||||
}
|
||||
// List<MdPbVehicleMater> tmpCount1 = iMdPbVehicleMaterService.list(new QueryWrapper<MdPbVehicleMater>()
|
||||
// .eq("is_delete",false)
|
||||
// .in("vehicle_code", map.keySet()));
|
||||
// if (tmpCount1.size()>0){
|
||||
// //托盘组盘校验
|
||||
// List<MdPbVehicleMater> collect = tmpCount1.stream().filter(mdPbVehicleMater -> mdPbVehicleMater.getNeed_pick()&&mdPbVehicleMater.getVehicle_code().contains("T")).collect(Collectors.toList());
|
||||
// if (!CollectionUtils.isEmpty(collect)) {
|
||||
// String vehicles = collect.stream().map(MdPbVehicleMater::getVehicle_code).collect(Collectors.joining(","));
|
||||
// throw new BadRequestException("载具" + vehicles + "为拣选回库无需组盘");
|
||||
// }
|
||||
// throw new BadRequestException("组盘失败:载具已经存在组盘信息" + tmpCount1.stream().map(MdPbVehicleMater::getVehicle_code).collect(Collectors.joining(",")));
|
||||
// }
|
||||
this.saveBatch(map.values());
|
||||
iMdPbVehicleMaterService.saveBatch(vehicleMaters);
|
||||
}
|
||||
|
||||
@@ -11,7 +11,10 @@ import java.util.List;
|
||||
@Data
|
||||
public class MaterGroupDto {
|
||||
|
||||
|
||||
/**
|
||||
* 载具编号
|
||||
*/
|
||||
private String vehicle_code;
|
||||
/**
|
||||
* 仓库编码
|
||||
*/
|
||||
|
||||
@@ -45,7 +45,7 @@ public class PdaInController {
|
||||
public ResponseEntity<TableDataInfo> confirm(@RequestBody PdaFormInMst pdaFormInMst) {
|
||||
RedissonUtils.lock(() -> {
|
||||
pdaInIOService.pdaInIostorUseCode(pdaFormInMst);
|
||||
}, pdaFormInMst.getBillNo(), null);
|
||||
}, "合格证入库", null);
|
||||
return new ResponseEntity<>(TableDataInfo.build(), HttpStatus.OK);
|
||||
}
|
||||
|
||||
|
||||
@@ -40,6 +40,40 @@ public class PdaInIOService {
|
||||
* 回传代码
|
||||
*/
|
||||
public void pdaInIostorUseCode(PdaFormInMst mst) {
|
||||
// if (CollectionUtils.isEmpty(mstList)) {
|
||||
// throw new BadRequestException("组盘信息为空,请检查!");
|
||||
// }
|
||||
// if (mstList.get(0).getVehicle_code().contains("T")) {
|
||||
// boolean count = mstList.stream()
|
||||
// .filter(vm -> vm.getVehicle_code() != null && vm.getVehicle_code().contains("T"))
|
||||
// .collect(Collectors.groupingBy(
|
||||
// vm -> vm.getVehicle_code() + "_" + vm.getMaterial_id(),
|
||||
// Collectors.mapping(PdaFormInMst::getPcsn, Collectors.toSet())
|
||||
// ))
|
||||
// .values().stream()
|
||||
// .anyMatch(pcsnSet -> pcsnSet.size() > 1);
|
||||
// if (count) {
|
||||
// throw new BadRequestException("组盘失败,原因:同一个载具存在相同物料不同批次的数据,相同物料不同批次不符合混料组盘,请检查或分开组盘!");
|
||||
// }
|
||||
// } else {
|
||||
// if (mstList.size() > 1) {
|
||||
// throw new BadRequestException("组盘失败,原因:料箱组盘只能放入一种物料!");
|
||||
// }
|
||||
// }
|
||||
// mstList.forEach(mst -> {
|
||||
if (mst.getVehicle_code().contains("T")) {
|
||||
// boolean count = mstList.stream()
|
||||
// .filter(vm -> vm.getVehicle_code() != null && vm.getVehicle_code().contains("T"))
|
||||
// .collect(Collectors.groupingBy(
|
||||
// vm -> vm.getVehicle_code() + "_" + vm.getMaterial_id(),
|
||||
// Collectors.mapping(PdaFormInMst::getPcsn, Collectors.toSet())
|
||||
// ))
|
||||
// .values().stream()
|
||||
// .anyMatch(pcsnSet -> pcsnSet.size() > 1);
|
||||
// if (count) {
|
||||
// throw new BadRequestException("组盘失败,原因:同一个载具存在相同物料不同批次的数据,相同物料不同批次不符合混料组盘,请检查或分开组盘!");
|
||||
// }
|
||||
}
|
||||
String materialId = mst.getMaterial_id();
|
||||
String vehicleCode = mst.getVehicle_code();
|
||||
String unitId = mst.getUnit_id();
|
||||
@@ -79,7 +113,7 @@ public class PdaInIOService {
|
||||
throw new BadRequestException("入库失败,物料单位ID在系统中不存在");
|
||||
}
|
||||
BmVehicleInfo vehicleInfo = iBmVehicleInfoService.vehileInfo(vehicleCode);
|
||||
if (vehicleInfo==null){
|
||||
if (vehicleInfo == null) {
|
||||
throw new BadRequestException("入库失败,载具编码在基础信息中不存在");
|
||||
}
|
||||
groupDto.setSource_form_type(mst.getForm_type());
|
||||
@@ -102,6 +136,7 @@ public class PdaInIOService {
|
||||
materItem.setForm_data(groupItemData);
|
||||
groupDto.setItem(ListOf.of(materItem));
|
||||
iMdGruopDickService.groupDick((JSONObject) JSONObject.toJSON(groupDto));
|
||||
// });
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user