add:PC组盘、PC空载具入库、PC空载具出库
This commit is contained in:
@@ -1,14 +1,17 @@
|
||||
package org.nl.wms.basedata_manage.controller;
|
||||
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.common.base.TableDataInfo;
|
||||
import org.nl.common.domain.query.PageQuery;
|
||||
import org.nl.common.logging.annotation.Log;
|
||||
import org.nl.wms.warehouse_management.service.IMdPbGroupplateService;
|
||||
import org.nl.wms.warehouse_management.service.dao.GroupPlate;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
@@ -22,7 +25,7 @@ import java.util.Set;
|
||||
* </p>
|
||||
*
|
||||
* @author Liuxy
|
||||
* @since 2025-06-03
|
||||
* @since 2025-08-11
|
||||
*/
|
||||
@RestController
|
||||
@RequiredArgsConstructor
|
||||
@@ -39,6 +42,39 @@ public class GroupController {
|
||||
return new ResponseEntity<>(TableDataInfo.build(iMdPbGroupplateService.queryAll(whereJson, page)), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping
|
||||
@Log("新增组盘记录")
|
||||
public ResponseEntity<Object> create(@Validated @RequestBody GroupPlate dto) {
|
||||
iMdPbGroupplateService.create(dto);
|
||||
return new ResponseEntity<>(HttpStatus.CREATED);
|
||||
}
|
||||
|
||||
@PutMapping
|
||||
@Log("修改组盘记录")
|
||||
public ResponseEntity<Object> update(@Validated @RequestBody GroupPlate dto) {
|
||||
iMdPbGroupplateService.update(dto);
|
||||
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
|
||||
}
|
||||
|
||||
@PostMapping("/queryMater")
|
||||
@Log("查询物料信息")
|
||||
public ResponseEntity<Object> queryMater(@RequestBody JSONObject whereJson) {
|
||||
return new ResponseEntity<>(iMdPbGroupplateService.queryMater(whereJson), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/checkVehicle")
|
||||
@Log("校验载具")
|
||||
public ResponseEntity<Object> checkVehicle(@RequestBody JSONObject whereJson) {
|
||||
iMdPbGroupplateService.checkVehicle(whereJson);
|
||||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/querySupp")
|
||||
@Log("查询供应商")
|
||||
public ResponseEntity<Object> querySupp(@RequestBody JSONObject whereJson) {
|
||||
return new ResponseEntity<>(iMdPbGroupplateService.querySupp(whereJson), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@DeleteMapping
|
||||
@Log("删除组盘")
|
||||
public ResponseEntity<Object> delete(@RequestBody Set<String> ids) {
|
||||
|
||||
@@ -72,8 +72,7 @@
|
||||
attr.sect_name,
|
||||
mater.material_code,
|
||||
mater.material_name,
|
||||
mater.material_spec,
|
||||
late.prison_area
|
||||
mater.material_spec
|
||||
FROM
|
||||
md_pb_storagevehicleext ext
|
||||
INNER JOIN st_ivt_structattr attr ON ext.storagevehicle_code = attr.storagevehicle_code
|
||||
@@ -82,12 +81,11 @@
|
||||
SELECT
|
||||
material_id,
|
||||
storagevehicle_code,
|
||||
pcsn,
|
||||
MAX(prison_area) AS prison_area
|
||||
pcsn
|
||||
FROM
|
||||
md_pb_groupplate
|
||||
WHERE
|
||||
status = '02'
|
||||
status = '2'
|
||||
GROUP BY
|
||||
material_id,storagevehicle_code,pcsn
|
||||
) late ON late.material_id = ext.material_id and late.pcsn = ext.pcsn and late.storagevehicle_code = ext.storagevehicle_code
|
||||
|
||||
@@ -116,12 +116,9 @@ public class PdaIosInServiceImpl implements PdaIosInService {
|
||||
MdPbMeasureunit unitDao = iMdPbMeasureunitService.getByCode(unit_code);
|
||||
GroupPlate groupDao = iMdPbGroupplateService.getOne(
|
||||
new QueryWrapper<GroupPlate>().lambda()
|
||||
.eq(GroupPlate::getMaterial_id, materDao.getMaterial_id())
|
||||
.eq(GroupPlate::getPcsn, pcsn)
|
||||
.eq(GroupPlate::getQty, qty)
|
||||
.eq(GroupPlate::getQty_unit_id, unitDao.getMeasure_unit_id())
|
||||
.eq(GroupPlate::getExt_code, ext_code)
|
||||
.eq(GroupPlate::getExt_type, ext_type)
|
||||
.eq(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("生成"))
|
||||
);
|
||||
|
||||
@@ -129,14 +126,11 @@ public class PdaIosInServiceImpl implements PdaIosInService {
|
||||
// 插入组盘记录表
|
||||
groupDao = new GroupPlate();
|
||||
groupDao.setGroup_id(IdUtil.getStringId());
|
||||
groupDao.setMaterial_id(materDao.getMaterial_id());
|
||||
groupDao.setPcsn(pcsn);
|
||||
groupDao.setQty_unit_id(unitDao.getMeasure_unit_id());
|
||||
groupDao.setQty_unit_name(unitDao.getUnit_name());
|
||||
groupDao.setQty(BigDecimal.valueOf(Double.parseDouble(qty)));
|
||||
groupDao.setStatus(IOSEnum.GROUP_PLATE_STATUS.code("生成"));
|
||||
groupDao.setExt_code(ext_code);
|
||||
groupDao.setExt_type(ext_type);
|
||||
groupDao.setCreate_id(SecurityUtils.getCurrentUserId());
|
||||
groupDao.setCreate_name(SecurityUtils.getCurrentNickName());
|
||||
groupDao.setCreate_time(DateUtil.now());
|
||||
@@ -185,9 +179,7 @@ public class PdaIosInServiceImpl implements PdaIosInService {
|
||||
if (ObjectUtil.isNotEmpty(plateDaoList)) {
|
||||
boolean is_like = plateDaoList.stream()
|
||||
.allMatch(row -> row.getMaterial_id().equals(groupDao.getMaterial_id()) &&
|
||||
row.getPcsn().equals(groupDao.getPcsn()) &&
|
||||
row.getExt_code().equals(groupDao.getExt_code()) &&
|
||||
row.getExt_type().equals(groupDao.getExt_type())
|
||||
row.getPcsn().equals(groupDao.getPcsn())
|
||||
);
|
||||
if (!is_like) {
|
||||
throw new BadRequestException("当前托盘所绑物料批次或者源单据与当前组盘物料批次不一致!");
|
||||
@@ -273,7 +265,7 @@ public class PdaIosInServiceImpl implements PdaIosInService {
|
||||
);
|
||||
if (ObjectUtil.isNotEmpty(plateDaoList)) {
|
||||
boolean is_like = plateDaoList.stream()
|
||||
.allMatch(row -> row.getMaterial_id().equals(materDao.getMaterial_id()) &&
|
||||
.allMatch(row -> row.getMaterial_id().equals(materDao.getMaterial_code()) &&
|
||||
row.getPcsn().equals(whereJson.getString("pcsn"))
|
||||
);
|
||||
if (!is_like) {
|
||||
@@ -285,7 +277,6 @@ public class PdaIosInServiceImpl implements PdaIosInService {
|
||||
GroupPlate groupDao = new GroupPlate();
|
||||
groupDao.setGroup_id(org.nl.config.IdUtil.getStringId());
|
||||
groupDao.setStoragevehicle_code(whereJson.getString("storagevehicle_code"));
|
||||
groupDao.setMaterial_id(materDao.getMaterial_id());
|
||||
groupDao.setPcsn(whereJson.getString("pcsn"));
|
||||
// 默认数量个
|
||||
MdPbMeasureunit unitDao = iMdPbMeasureunitService.getByCode("EA");
|
||||
@@ -296,9 +287,6 @@ public class PdaIosInServiceImpl implements PdaIosInService {
|
||||
groupDao.setCreate_id(SecurityUtils.getCurrentUserId());
|
||||
groupDao.setCreate_name(SecurityUtils.getCurrentNickName());
|
||||
groupDao.setCreate_time(DateUtil.now());
|
||||
groupDao.setExt_type(whereJson.getString("ext_type"));
|
||||
groupDao.setExt_code(whereJson.getString("ext_code"));
|
||||
groupDao.setPrison_area(whereJson.getString("prison_area"));
|
||||
iMdPbGroupplateService.save(groupDao);
|
||||
return PdaResponse.requestOk();
|
||||
}
|
||||
@@ -337,15 +325,12 @@ public class PdaIosInServiceImpl implements PdaIosInService {
|
||||
jsonMst.put("detail_count", 1);
|
||||
jsonMst.put("bill_type", IOSEnum.BILL_TYPE.code("生产入库"));
|
||||
jsonMst.put("biz_date", DateUtil.now());
|
||||
jsonMst.put("source_id", plateDaoList.get(0).getExt_code());
|
||||
jsonMst.put("source_type", plateDaoList.get(0).getExt_type());
|
||||
|
||||
// 组织明细数据
|
||||
ArrayList<HashMap> tableData = new ArrayList<>();
|
||||
HashMap<String, String> dtl = new HashMap<>();
|
||||
GroupPlate plateDao = plateDaoList.get(0);
|
||||
dtl.put("storagevehicle_code", plateDao.getStoragevehicle_code());
|
||||
dtl.put("material_id", plateDao.getMaterial_id());
|
||||
dtl.put("pcsn", plateDao.getPcsn());
|
||||
dtl.put("qty_unit_id", plateDao.getQty_unit_id());
|
||||
dtl.put("qty_unit_name", plateDao.getQty_unit_name());
|
||||
|
||||
@@ -1,63 +0,0 @@
|
||||
package org.nl.wms.pda.sch_manage.controller;
|
||||
|
||||
|
||||
import cn.dev33.satoken.annotation.SaIgnore;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.common.logging.annotation.Log;
|
||||
import org.nl.wms.pda.sch_manage.service.PdaSchTaskService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 手持任务操作 控制层
|
||||
* </p>
|
||||
*
|
||||
* @author Liuxy
|
||||
* @since 2025-06-06
|
||||
*/
|
||||
@RestController
|
||||
@RequiredArgsConstructor
|
||||
@RequestMapping("/api/pda/schTask")
|
||||
@Slf4j
|
||||
public class PdaSchTaskController {
|
||||
|
||||
@Autowired
|
||||
private PdaSchTaskService pdaSchTaskService;
|
||||
|
||||
@PostMapping("/pointTask")
|
||||
@Log("定点作业")
|
||||
@SaIgnore
|
||||
public ResponseEntity<Object> pointTask(@RequestBody JSONObject whereJson) {
|
||||
return new ResponseEntity<>(pdaSchTaskService.pointTask(whereJson), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/queryTask")
|
||||
@Log("查询未完成的任务")
|
||||
@SaIgnore
|
||||
public ResponseEntity<Object> queryTask(@RequestBody JSONObject whereJson) {
|
||||
return new ResponseEntity<>(pdaSchTaskService.queryTask(whereJson), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/againTask")
|
||||
@Log("重新下发")
|
||||
@SaIgnore
|
||||
public ResponseEntity<Object> againTask(@RequestBody JSONObject whereJson) {
|
||||
return new ResponseEntity<>(pdaSchTaskService.againTask(whereJson), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/forceConfirm")
|
||||
@Log("强制确认")
|
||||
@SaIgnore
|
||||
public ResponseEntity<Object> forceConfirm(@RequestBody JSONObject whereJson) {
|
||||
return new ResponseEntity<>(pdaSchTaskService.forceConfirm(whereJson), HttpStatus.OK);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,64 +0,0 @@
|
||||
package org.nl.wms.pda.sch_manage.service;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import org.nl.wms.pda.util.PdaResponse;
|
||||
import org.nl.wms.sch_manage.service.dao.SchBaseTask;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 手持任务操作 服务类
|
||||
* </p>
|
||||
*
|
||||
* @author Liuxy
|
||||
* @since 2025-06-06
|
||||
*/
|
||||
public interface PdaSchTaskService extends IService<SchBaseTask> {
|
||||
|
||||
/**
|
||||
* 定点任务
|
||||
* @param whereJson {
|
||||
* start_point_code:起点点位
|
||||
* end_point_code:终点点位
|
||||
* storagevehicle_code:载具编码
|
||||
* acs_type:acs任务类型
|
||||
* }
|
||||
* @return PdaResponse
|
||||
*/
|
||||
PdaResponse pointTask(JSONObject whereJson);
|
||||
|
||||
/**
|
||||
* 查询未完成的任务
|
||||
* @param whereJson {
|
||||
* task_code: 任务号、载具号、点位号
|
||||
* }
|
||||
* @return PdaResponse
|
||||
*/
|
||||
PdaResponse queryTask(JSONObject whereJson);
|
||||
|
||||
/**
|
||||
* 重新下发
|
||||
* @param whereJson {
|
||||
* task_code:任务号
|
||||
* vehicle_code:载具号
|
||||
* point_code1:起点
|
||||
* point_code2:终点
|
||||
* task_status:状态
|
||||
* }
|
||||
* @return PdaResponse
|
||||
*/
|
||||
PdaResponse againTask(JSONObject whereJson);
|
||||
|
||||
/**
|
||||
* 强制确认
|
||||
* @param whereJson {
|
||||
* task_code:任务号
|
||||
* vehicle_code:载具号
|
||||
* point_code1:起点
|
||||
* point_code2:终点
|
||||
* task_status:状态
|
||||
* }
|
||||
* @return PdaResponse
|
||||
*/
|
||||
PdaResponse forceConfirm(JSONObject whereJson);
|
||||
}
|
||||
@@ -1,158 +0,0 @@
|
||||
package org.nl.wms.pda.sch_manage.service.impl;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.http.HttpStatus;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.wms.basedata_manage.service.IMdPbStoragevehicleinfoService;
|
||||
import org.nl.wms.basedata_manage.service.IStructattrService;
|
||||
import org.nl.wms.basedata_manage.service.dao.Structattr;
|
||||
import org.nl.wms.ext.service.util.AcsResponse;
|
||||
import org.nl.wms.pda.sch_manage.service.PdaSchTaskService;
|
||||
import org.nl.wms.pda.util.PdaResponse;
|
||||
import org.nl.wms.sch_manage.enums.TaskEnum;
|
||||
import org.nl.wms.sch_manage.service.ISchBasePointService;
|
||||
import org.nl.wms.sch_manage.service.dao.SchBasePoint;
|
||||
import org.nl.wms.sch_manage.service.dao.SchBaseTask;
|
||||
import org.nl.wms.sch_manage.service.dao.mapper.SchBaseTaskMapper;
|
||||
import org.nl.wms.sch_manage.service.util.AbstractTask;
|
||||
import org.nl.wms.sch_manage.service.util.TaskFactory;
|
||||
import org.nl.wms.sch_manage.service.util.tasks.PdaPointTask;
|
||||
import org.nl.wms.warehouse_management.enums.IOSConstant;
|
||||
import org.nl.wms.warehouse_management.enums.IOSEnum;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 手持任务操作 实现类
|
||||
* </p>
|
||||
*
|
||||
* @author Liuxy
|
||||
* @since 2025-06-06
|
||||
*/
|
||||
@Service
|
||||
public class PdaSchTaskServiceImpl extends ServiceImpl<SchBaseTaskMapper, SchBaseTask> implements PdaSchTaskService {
|
||||
|
||||
/**
|
||||
* 点位服务
|
||||
*/
|
||||
@Autowired
|
||||
private ISchBasePointService iSchBasePointService;
|
||||
|
||||
/**
|
||||
* 仓位服务
|
||||
*/
|
||||
@Autowired
|
||||
private IStructattrService iStructattrService;
|
||||
|
||||
/**
|
||||
* 载具信息服务
|
||||
*/
|
||||
@Autowired
|
||||
private IMdPbStoragevehicleinfoService iMdPbStoragevehicleinfoService;
|
||||
|
||||
/**
|
||||
* 手持定点任务服务
|
||||
*/
|
||||
@Autowired
|
||||
private PdaPointTask pdaPointTask;
|
||||
|
||||
/**
|
||||
* 任务工厂服务
|
||||
*/
|
||||
@Autowired
|
||||
private TaskFactory taskFactory;
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public PdaResponse pointTask(JSONObject whereJson) {
|
||||
// 校验数据
|
||||
checkPoint(whereJson);
|
||||
// 创建任务
|
||||
JSONObject task = new JSONObject();
|
||||
task.put("config_code", IOSConstant.PDA_POINT_TASK);
|
||||
task.put("point_code1", whereJson.getString("start_point_code"));
|
||||
task.put("point_code2", whereJson.getString("end_point_code"));
|
||||
task.put("vehicle_code", whereJson.getString("storagevehicle_code"));
|
||||
task.put("Priority", TaskEnum.ACS_PRIORITY.code("1"));
|
||||
pdaPointTask.create(task);
|
||||
return PdaResponse.requestOk();
|
||||
}
|
||||
|
||||
@Override
|
||||
public PdaResponse queryTask(JSONObject whereJson) {
|
||||
return PdaResponse.requestParamOk(this.baseMapper.queryPdaTask(whereJson));
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public PdaResponse againTask(JSONObject whereJson) {
|
||||
// 查询当前任务
|
||||
SchBaseTask taskDao = this.getOne(
|
||||
new QueryWrapper<SchBaseTask>().lambda()
|
||||
.eq(SchBaseTask::getTask_code, whereJson.getString("task_code"))
|
||||
);
|
||||
// 根据任务配置编码获取所属任务类抽象类
|
||||
AbstractTask task = taskFactory.getTask(taskDao.getConfig_code());
|
||||
AcsResponse acsResponse = task.sendTaskOne(taskDao.getTask_id());
|
||||
if (acsResponse.getStatus() != HttpStatus.HTTP_OK) {
|
||||
throw new BadRequestException(acsResponse.getMessage());
|
||||
}
|
||||
return PdaResponse.requestOk();
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public PdaResponse forceConfirm(JSONObject whereJson) {
|
||||
// 查询当前任务
|
||||
SchBaseTask taskDao = this.getOne(
|
||||
new QueryWrapper<SchBaseTask>().lambda()
|
||||
.eq(SchBaseTask::getTask_code, whereJson.getString("task_code"))
|
||||
);
|
||||
// 根据任务配置编码获取所属任务类抽象类
|
||||
AbstractTask task = taskFactory.getTask(taskDao.getConfig_code());
|
||||
task.forceFinish(taskDao.getTask_code());
|
||||
return PdaResponse.requestOk();
|
||||
}
|
||||
|
||||
/**
|
||||
* 校验起点终点载具
|
||||
* @param whereJson {
|
||||
* start_point_code:起点点位
|
||||
* end_point_code:终点点位
|
||||
* storagevehicle_code:终点点位
|
||||
* }
|
||||
*/
|
||||
private void checkPoint(JSONObject whereJson) {
|
||||
String start_point_code = whereJson.getString("start_point_code");
|
||||
String end_point_code = whereJson.getString("end_point_code");
|
||||
String storagevehicle_code = whereJson.getString("storagevehicle_code");
|
||||
// 校验起点
|
||||
SchBasePoint pointStartDao = iSchBasePointService.getById(start_point_code);
|
||||
if (ObjectUtil.isEmpty(pointStartDao)) {
|
||||
Structattr attrDao = iStructattrService.getByCode(start_point_code);
|
||||
attrDao.setLock_type(IOSEnum.LOCK_TYPE.code("其他锁"));
|
||||
iStructattrService.updateById(attrDao);
|
||||
} else {
|
||||
pointStartDao.setPoint_status(IOSEnum.POINT_STATUS.code("有货"));
|
||||
iSchBasePointService.updateById(pointStartDao);
|
||||
}
|
||||
|
||||
// 校验终点
|
||||
SchBasePoint pointEndDao = iSchBasePointService.getById(end_point_code);
|
||||
if (ObjectUtil.isEmpty(pointEndDao)) {
|
||||
Structattr attrDao = iStructattrService.getByCode(end_point_code);
|
||||
attrDao.setLock_type(IOSEnum.LOCK_TYPE.code("其他锁"));
|
||||
iStructattrService.updateById(attrDao);
|
||||
} else {
|
||||
pointEndDao.setPoint_status(IOSEnum.POINT_STATUS.code("有货"));
|
||||
iSchBasePointService.updateById(pointEndDao);
|
||||
}
|
||||
// 校验载具
|
||||
iMdPbStoragevehicleinfoService.getByCode(storagevehicle_code);
|
||||
}
|
||||
}
|
||||
@@ -19,7 +19,10 @@ import java.util.Map;
|
||||
public enum TaskEnum {
|
||||
|
||||
// ACS优先级别
|
||||
ACS_PRIORITY(MapOf.of("1", "1", "2", "2", "3", "3"))
|
||||
ACS_PRIORITY(MapOf.of("1", "1", "2", "2", "3", "3")),
|
||||
|
||||
// 任务类型
|
||||
TASK_TYPE(MapOf.of("载具", "1", "料箱", "2"))
|
||||
;
|
||||
|
||||
private Map<String, String> code;
|
||||
|
||||
@@ -60,6 +60,9 @@ public class SchBaseTask implements Serializable {
|
||||
|
||||
private String vehicle_code2;
|
||||
|
||||
private String material_id;
|
||||
|
||||
private BigDecimal material_qty;
|
||||
|
||||
private String handle_status;
|
||||
|
||||
@@ -118,9 +121,16 @@ public class SchBaseTask implements Serializable {
|
||||
private String update_name;
|
||||
|
||||
private String update_time;
|
||||
|
||||
private String task_type;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String config_name;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String task_name;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String material_name;
|
||||
|
||||
}
|
||||
|
||||
@@ -3,12 +3,14 @@ package org.nl.wms.sch_manage.service.dao.mapper;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import org.nl.wms.sch_manage.service.dao.SchBaseTask;
|
||||
import org.nl.wms.sch_manage.service.dto.SchBaseTaskQuery;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author lyd
|
||||
@@ -31,4 +33,14 @@ public interface SchBaseTaskMapper extends BaseMapper<SchBaseTask> {
|
||||
* }
|
||||
*/
|
||||
List<JSONObject> queryPdaTask(@Param("param") JSONObject whereJson);
|
||||
|
||||
/**
|
||||
* 获取载具任务
|
||||
* @param page
|
||||
* @param whereJson {
|
||||
* storagevehicle_code
|
||||
* }
|
||||
* @return JSONObject
|
||||
*/
|
||||
IPage<JSONObject> getVehicleTask(Page<JSONObject> page, @Param("param") Map whereJson);
|
||||
}
|
||||
|
||||
@@ -37,10 +37,12 @@
|
||||
SELECT
|
||||
t.*,
|
||||
tc.config_name,
|
||||
tc.task_name
|
||||
tc.task_name,
|
||||
mb.material_name
|
||||
FROM
|
||||
`sch_base_task` t
|
||||
LEFT JOIN sch_base_taskconfig tc ON tc.config_code = t.config_code
|
||||
LEFT JOIN md_me_materialbase mb ON mb.material_id = t.material_id
|
||||
<where>
|
||||
<if test="whereJson.task_code != null">
|
||||
AND t.task_code = #{whereJson.task_code}
|
||||
@@ -102,4 +104,27 @@
|
||||
</if>
|
||||
</where>
|
||||
</select>
|
||||
|
||||
<select id="getVehicleTask" resultType="com.alibaba.fastjson.JSONObject">
|
||||
SELECT
|
||||
t.*,
|
||||
tc.config_name,
|
||||
tc.task_name
|
||||
FROM
|
||||
`sch_base_task` t
|
||||
LEFT JOIN sch_base_taskconfig tc ON tc.config_code = t.config_code
|
||||
<where>
|
||||
'5' > t.task_status
|
||||
and t.task_type = '1'
|
||||
<if test="param.storagevehicle_code != null">
|
||||
AND t.vehicle_code LIKE '%${param.storagevehicle_code}%'
|
||||
</if>
|
||||
|
||||
<if test="param.config_code != null">
|
||||
AND (tc.config_code = #{param.config_code} OR
|
||||
tc.config_code = 'PdaPointTask')
|
||||
</if>
|
||||
</where>
|
||||
ORDER BY t.create_time DESC
|
||||
</select>
|
||||
</mapper>
|
||||
|
||||
@@ -147,9 +147,6 @@ public class SchBaseTaskServiceImpl extends ServiceImpl<SchBaseTaskMapper, SchBa
|
||||
case "cancel":
|
||||
abstractTask.cancel(task_code);
|
||||
break;
|
||||
case "back":
|
||||
abstractTask.backMes(task_code);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -24,7 +24,7 @@ import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @author Liuxy
|
||||
* @date 2025年05月19日
|
||||
* @date 2025年08月12日
|
||||
* @desc 任务抽象父类,申请任务的相关率先判断以及生成,接着到子类执行任务的创建,最后统一通过定时任务去下发到ACS
|
||||
*/
|
||||
@Slf4j
|
||||
@@ -51,7 +51,6 @@ public abstract class AbstractTask {
|
||||
|
||||
/**
|
||||
* 下发acs前参数整理
|
||||
*
|
||||
*/
|
||||
public abstract AcsTaskDto sendAcsParam(String taskId);
|
||||
|
||||
@@ -85,6 +84,7 @@ public abstract class AbstractTask {
|
||||
|
||||
/**
|
||||
* 下发当前任务
|
||||
*
|
||||
* @param task_id 任务标识
|
||||
*/
|
||||
public AcsResponse sendTaskOne(String task_id) {
|
||||
@@ -95,6 +95,7 @@ public abstract class AbstractTask {
|
||||
|
||||
/**
|
||||
* 下发任务
|
||||
*
|
||||
* @param taskDtoList 任务集合
|
||||
* @return AcsResponse
|
||||
*/
|
||||
@@ -144,8 +145,9 @@ public abstract class AbstractTask {
|
||||
|
||||
/**
|
||||
* 反馈任务状态
|
||||
*
|
||||
* @param taskCode 任务编码
|
||||
* @param status 状态码
|
||||
* @param status 状态码
|
||||
*/
|
||||
public void updateTaskStatus(String taskCode, TaskStatus status) {
|
||||
this.updateStatus(taskCode, status);
|
||||
@@ -155,27 +157,30 @@ public abstract class AbstractTask {
|
||||
* 以下改为public会出现自动注入类出现问题
|
||||
*
|
||||
* @param task_code r任务号
|
||||
* @param status 状态码
|
||||
* @param status 状态码
|
||||
*/
|
||||
protected abstract void updateStatus(String task_code, TaskStatus status);
|
||||
|
||||
/**
|
||||
* 强制结束完成任务
|
||||
*
|
||||
* @param task_code 任务号
|
||||
*/
|
||||
public abstract void forceFinish(String task_code);
|
||||
|
||||
/**
|
||||
* 取消任务,货物搬回原点
|
||||
*
|
||||
* @param task_code 任务号
|
||||
*/
|
||||
public abstract void cancel(String task_code);
|
||||
|
||||
/**
|
||||
* 回传mes
|
||||
* 任务确认(可做特殊处理)
|
||||
*
|
||||
* @param task_code 任务号
|
||||
*/
|
||||
public abstract void backMes(String task_code);
|
||||
public abstract void taskConfirm(String task_code);
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -135,7 +135,7 @@ public class BackInTask extends AbstractTask {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void backMes(String task_code) {
|
||||
public void taskConfirm(String task_code) {
|
||||
}
|
||||
|
||||
@Transactional
|
||||
|
||||
@@ -3,12 +3,13 @@ package org.nl.wms.sch_manage.service.util.tasks;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.common.utils.CodeUtil;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.config.IdUtil;
|
||||
import org.nl.wms.basedata_manage.enums.BaseDataEnum;
|
||||
import org.nl.wms.sch_manage.enums.TaskEnum;
|
||||
import org.nl.wms.sch_manage.enums.TaskStatus;
|
||||
import org.nl.wms.sch_manage.service.ISchBaseTaskService;
|
||||
import org.nl.wms.sch_manage.service.dao.SchBaseTask;
|
||||
@@ -27,12 +28,12 @@ import javax.annotation.Resource;
|
||||
|
||||
/**
|
||||
* @Author: Liuxy
|
||||
* @Description: 入库任务类
|
||||
* @Date: 2025/5/25
|
||||
* @Description: 退货入库任务类
|
||||
* @Date: 2025/8/12
|
||||
*/
|
||||
@Component(value = "STInTask")
|
||||
@TaskType("STInTask")
|
||||
public class StInTask extends AbstractTask {
|
||||
@Component(value = "DetainInTask")
|
||||
@TaskType("DetainInTask")
|
||||
public class DetainInTask extends AbstractTask {
|
||||
@Autowired
|
||||
private ISchBaseTaskService taskService;
|
||||
|
||||
@@ -46,14 +47,17 @@ public class StInTask extends AbstractTask {
|
||||
public String create(JSONObject json) {
|
||||
SchBaseTask task = new SchBaseTask();
|
||||
task.setTask_id(IdUtil.getStringId());
|
||||
task.setTask_code(json.getString("TaskCode"));
|
||||
task.setTask_code(CodeUtil.getNewCode("TASK_CODE"));
|
||||
task.setTask_status(TaskStatus.CREATE.getCode());
|
||||
task.setConfig_code(json.getString("task_type"));
|
||||
task.setPoint_code1(json.getString("PickingLocation"));
|
||||
task.setPoint_code2(json.getString("PlacedLocation"));
|
||||
task.setConfig_code(DetainInTask.class.getSimpleName());
|
||||
task.setPoint_code1(json.getString("point_code1"));
|
||||
task.setPoint_code2(json.getString("point_code2"));
|
||||
task.setVehicle_code(json.getString("vehicle_code"));
|
||||
task.setMaterial_id(json.getString("material_id"));
|
||||
task.setMaterial_qty(json.getBigDecimal("material_qty"));
|
||||
task.setGroup_id(json.getString("group_id"));
|
||||
task.setRequest_param(json.toString());
|
||||
task.setTask_type(TaskEnum.TASK_TYPE.code("料箱"));
|
||||
task.setPriority(json.getString("Priority"));
|
||||
task.setCreate_id(SecurityUtils.getCurrentUserId());
|
||||
task.setCreate_name(SecurityUtils.getCurrentNickName());
|
||||
@@ -132,10 +136,6 @@ public class StInTask extends AbstractTask {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void backMes(String task_code) {
|
||||
}
|
||||
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void finishTask(SchBaseTask taskObj) {
|
||||
// 任务完成
|
||||
@@ -151,16 +151,16 @@ public class StInTask extends AbstractTask {
|
||||
taskService.update(new LambdaUpdateWrapper<SchBaseTask>()
|
||||
.set(SchBaseTask::getIs_delete, BaseDataEnum.IS_YES_NOT.code("是"))
|
||||
.set(SchBaseTask::getTask_status, TaskStatus.CANCELED.getCode())
|
||||
.set(SchBaseTask::getRemark,"已取消")
|
||||
.eq(SchBaseTask::getTask_id,taskObj.getTask_id())
|
||||
.set(SchBaseTask::getRemark, "已取消")
|
||||
.eq(SchBaseTask::getTask_id, taskObj.getTask_id())
|
||||
);
|
||||
//分配表清除任务
|
||||
ioStorInvDisMapper.update(new IOStorInvDis(),new LambdaUpdateWrapper<>(IOStorInvDis.class)
|
||||
.set(IOStorInvDis::getTask_id,null)
|
||||
.set(IOStorInvDis::getPoint_code,null)
|
||||
.set(IOStorInvDis::getIs_issued,0)
|
||||
ioStorInvDisMapper.update(new IOStorInvDis(), new LambdaUpdateWrapper<>(IOStorInvDis.class)
|
||||
.set(IOStorInvDis::getTask_id, null)
|
||||
.set(IOStorInvDis::getPoint_code, null)
|
||||
.set(IOStorInvDis::getIs_issued, 0)
|
||||
.set(IOStorInvDis::getWork_status, IOSEnum.INBILL_DIS_STATUS.code("未生成"))
|
||||
.eq(IOStorInvDis::getTask_id,taskObj.getTask_id())
|
||||
.eq(IOStorInvDis::getTask_id, taskObj.getTask_id())
|
||||
);
|
||||
|
||||
// 更新任务状态
|
||||
@@ -168,4 +168,8 @@ public class StInTask extends AbstractTask {
|
||||
taskObj.setRemark("已取消");
|
||||
taskService.updateById(taskObj);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void taskConfirm(String task_code) {
|
||||
}
|
||||
}
|
||||
@@ -10,8 +10,11 @@ import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.config.IdUtil;
|
||||
import org.nl.wms.basedata_manage.service.IStructattrService;
|
||||
import org.nl.wms.basedata_manage.service.dao.Structattr;
|
||||
import org.nl.wms.sch_manage.enums.TaskEnum;
|
||||
import org.nl.wms.sch_manage.enums.TaskStatus;
|
||||
import org.nl.wms.sch_manage.service.ISchBasePointService;
|
||||
import org.nl.wms.sch_manage.service.ISchBaseTaskService;
|
||||
import org.nl.wms.sch_manage.service.dao.SchBasePoint;
|
||||
import org.nl.wms.sch_manage.service.dao.SchBaseTask;
|
||||
import org.nl.wms.sch_manage.service.util.AbstractTask;
|
||||
import org.nl.wms.sch_manage.service.util.AcsTaskDto;
|
||||
@@ -22,10 +25,15 @@ import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
/**
|
||||
* @Author: Liuxy
|
||||
* @Description: 空载具入库
|
||||
* @Date: 2025/8/5
|
||||
* <p>
|
||||
* 空载具入库任务类
|
||||
* </p>
|
||||
*
|
||||
* @author Liuxy
|
||||
* @since 2025-08-13
|
||||
*/
|
||||
@Component(value = "EmpVehicleInTask")
|
||||
@TaskType("EmpVehicleInTask")
|
||||
@@ -43,6 +51,12 @@ public class EmpVehicleInTask extends AbstractTask {
|
||||
@Autowired
|
||||
private IStructattrService iStructattrService;
|
||||
|
||||
/**
|
||||
* 点位服务
|
||||
*/
|
||||
@Resource
|
||||
private ISchBasePointService iSchBasePointService;
|
||||
|
||||
@Override
|
||||
public String create(JSONObject json) {
|
||||
SchBaseTask task = new SchBaseTask();
|
||||
@@ -55,9 +69,9 @@ public class EmpVehicleInTask extends AbstractTask {
|
||||
task.setVehicle_code(json.getString("vehicle_code"));
|
||||
task.setRequest_param(json.toString());
|
||||
task.setPriority(json.getString("Priority"));
|
||||
task.setTask_type(TaskEnum.TASK_TYPE.code("载具"));
|
||||
task.setCreate_id(SecurityUtils.getCurrentUserId());
|
||||
// task.setCreate_name(SecurityUtils.getCurrentNickName());
|
||||
task.setCreate_name("管理员");
|
||||
task.setCreate_name(SecurityUtils.getCurrentNickName());
|
||||
task.setCreate_time(DateUtil.now());
|
||||
taskService.save(task);
|
||||
|
||||
@@ -125,22 +139,30 @@ public class EmpVehicleInTask extends AbstractTask {
|
||||
if (Integer.parseInt(taskObj.getTask_status()) > Integer.parseInt(TaskStatus.CREATE.getCode())) {
|
||||
throw new BadRequestException("只能取消生成中的任务!");
|
||||
}
|
||||
this.cancelTask(taskObj);
|
||||
this.cancelTask(taskObj);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void backMes(String task_code) {
|
||||
public void taskConfirm(String task_code) {
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public void finishTask(SchBaseTask taskObj) {
|
||||
// 更新起点
|
||||
iSchBasePointService.update(
|
||||
new UpdateWrapper<SchBasePoint>().lambda()
|
||||
.eq(SchBasePoint::getPoint_code, taskObj.getPoint_code1())
|
||||
.set(SchBasePoint::getVehicle_code, null)
|
||||
.set(SchBasePoint::getIos_id, null)
|
||||
.set(SchBasePoint::getPoint_status, IOSEnum.POINT_STATUS.code("空位"))
|
||||
);
|
||||
// 更新终点
|
||||
iStructattrService.update(
|
||||
new UpdateWrapper<Structattr>().lambda()
|
||||
.eq(Structattr::getStruct_code, taskObj.getPoint_code2())
|
||||
.set(Structattr::getStoragevehicle_code, taskObj.getVehicle_code())
|
||||
.set(Structattr::getIs_emptyvehicle, IOSConstant.IS_DELETE_YES)
|
||||
.set(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定"))
|
||||
.eq(Structattr::getStruct_code, taskObj.getPoint_code2())
|
||||
.set(Structattr::getStoragevehicle_code, taskObj.getVehicle_code())
|
||||
.set(Structattr::getIs_emptyvehicle, IOSConstant.IS_DELETE_YES)
|
||||
.set(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定"))
|
||||
);
|
||||
// 更新任务
|
||||
taskObj.setRemark("已完成");
|
||||
@@ -150,6 +172,7 @@ public class EmpVehicleInTask extends AbstractTask {
|
||||
|
||||
@Transactional
|
||||
public void cancelTask(SchBaseTask taskObj) {
|
||||
|
||||
// 更新终点
|
||||
iStructattrService.update(
|
||||
new UpdateWrapper<Structattr>().lambda()
|
||||
|
||||
@@ -10,8 +10,11 @@ import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.config.IdUtil;
|
||||
import org.nl.wms.basedata_manage.service.IStructattrService;
|
||||
import org.nl.wms.basedata_manage.service.dao.Structattr;
|
||||
import org.nl.wms.sch_manage.enums.TaskEnum;
|
||||
import org.nl.wms.sch_manage.enums.TaskStatus;
|
||||
import org.nl.wms.sch_manage.service.ISchBasePointService;
|
||||
import org.nl.wms.sch_manage.service.ISchBaseTaskService;
|
||||
import org.nl.wms.sch_manage.service.dao.SchBasePoint;
|
||||
import org.nl.wms.sch_manage.service.dao.SchBaseTask;
|
||||
import org.nl.wms.sch_manage.service.util.AbstractTask;
|
||||
import org.nl.wms.sch_manage.service.util.AcsTaskDto;
|
||||
@@ -22,10 +25,15 @@ import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
/**
|
||||
* @Author: Liuxy
|
||||
* @Description: 空载具出库
|
||||
* @Date: 2025/8/5
|
||||
* <p>
|
||||
* 空载具出库任务类
|
||||
* </p>
|
||||
*
|
||||
* @author Liuxy
|
||||
* @since 2025-08-13
|
||||
*/
|
||||
@Component(value = "EmpVehicleOutTask")
|
||||
@TaskType("EmpVehicleOutTask")
|
||||
@@ -43,6 +51,18 @@ public class EmpVehicleOutTask extends AbstractTask {
|
||||
@Autowired
|
||||
private IStructattrService iStructattrService;
|
||||
|
||||
/**
|
||||
* 点位服务
|
||||
*/
|
||||
@Resource
|
||||
private ISchBasePointService iSchBasePointService;
|
||||
|
||||
/**
|
||||
* 点对点任务类服务
|
||||
*/
|
||||
@Resource
|
||||
private PdaPointTask pdaPointTask;
|
||||
|
||||
@Override
|
||||
public String create(JSONObject json) {
|
||||
SchBaseTask task = new SchBaseTask();
|
||||
@@ -52,12 +72,13 @@ public class EmpVehicleOutTask extends AbstractTask {
|
||||
task.setConfig_code(EmpVehicleOutTask.class.getSimpleName());
|
||||
task.setPoint_code1(json.getString("point_code1"));
|
||||
task.setPoint_code2(json.getString("point_code2"));
|
||||
task.setPoint_code3(json.getString("point_code3"));
|
||||
task.setVehicle_code(json.getString("vehicle_code"));
|
||||
task.setRequest_param(json.toString());
|
||||
task.setPriority(json.getString("Priority"));
|
||||
task.setTask_type(TaskEnum.TASK_TYPE.code("载具"));
|
||||
task.setCreate_id(SecurityUtils.getCurrentUserId());
|
||||
// task.setCreate_name(SecurityUtils.getCurrentNickName());
|
||||
task.setCreate_name("管理员");
|
||||
task.setCreate_name(SecurityUtils.getCurrentNickName());
|
||||
task.setCreate_time(DateUtil.now());
|
||||
taskService.save(task);
|
||||
|
||||
@@ -125,11 +146,11 @@ public class EmpVehicleOutTask extends AbstractTask {
|
||||
if (Integer.parseInt(taskObj.getTask_status()) > Integer.parseInt(TaskStatus.CREATE.getCode())) {
|
||||
throw new BadRequestException("只能取消生成中的任务!");
|
||||
}
|
||||
this.cancelTask(taskObj);
|
||||
this.cancelTask(taskObj);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void backMes(String task_code) {
|
||||
public void taskConfirm(String task_code) {
|
||||
}
|
||||
|
||||
@Transactional
|
||||
@@ -137,15 +158,27 @@ public class EmpVehicleOutTask extends AbstractTask {
|
||||
// 更新起点
|
||||
iStructattrService.update(
|
||||
new UpdateWrapper<Structattr>().lambda()
|
||||
.eq(Structattr::getStruct_code, taskObj.getPoint_code1())
|
||||
.set(Structattr::getStoragevehicle_code, null)
|
||||
.set(Structattr::getIs_emptyvehicle, IOSConstant.IS_DELETE_NO)
|
||||
.set(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定"))
|
||||
.eq(Structattr::getStruct_code, taskObj.getPoint_code1())
|
||||
.set(Structattr::getStoragevehicle_code, null)
|
||||
.set(Structattr::getIs_emptyvehicle, IOSConstant.IS_DELETE_NO)
|
||||
.set(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定"))
|
||||
);
|
||||
// 更新终点
|
||||
iSchBasePointService.update(
|
||||
new UpdateWrapper<SchBasePoint>().lambda()
|
||||
.eq(SchBasePoint::getPoint_code, taskObj.getPoint_code2())
|
||||
.set(SchBasePoint::getVehicle_code, taskObj.getVehicle_code())
|
||||
.set(SchBasePoint::getPoint_status, IOSEnum.POINT_STATUS.code("空载具"))
|
||||
);
|
||||
// 更新任务
|
||||
taskObj.setRemark("已完成");
|
||||
taskObj.setTask_status(TaskStatus.FINISHED.getCode());
|
||||
taskService.updateById(taskObj);
|
||||
|
||||
// 判断point_code3是否有值; 有值需要生成点位点任务到库外站点
|
||||
if (ObjectUtil.isNotEmpty(taskObj.getPoint_code3())) {
|
||||
createAgvTask(taskObj);
|
||||
}
|
||||
}
|
||||
|
||||
@Transactional
|
||||
@@ -162,4 +195,18 @@ public class EmpVehicleOutTask extends AbstractTask {
|
||||
taskObj.setTask_status(TaskStatus.CANCELED.getCode());
|
||||
taskService.updateById(taskObj);
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成点位点任务:称重位至库外站点
|
||||
*
|
||||
* @param taskObj 任务实体类
|
||||
*/
|
||||
private void createAgvTask(SchBaseTask taskObj) {
|
||||
JSONObject jsonTask = new JSONObject();
|
||||
jsonTask.put("point_code1", IOSConstant.CZW_POINT);
|
||||
jsonTask.put("point_code2", taskObj.getPoint_code3());
|
||||
jsonTask.put("vehicle_code", taskObj.getVehicle_code());
|
||||
jsonTask.put("task_type", TaskEnum.TASK_TYPE.code("载具"));
|
||||
pdaPointTask.create(jsonTask);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -134,7 +134,7 @@ public class MoveTask extends AbstractTask {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void backMes(String task_code) {
|
||||
public void taskConfirm(String task_code) {
|
||||
}
|
||||
|
||||
@Transactional
|
||||
|
||||
@@ -10,6 +10,7 @@ import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.config.IdUtil;
|
||||
import org.nl.wms.basedata_manage.service.IStructattrService;
|
||||
import org.nl.wms.basedata_manage.service.dao.Structattr;
|
||||
import org.nl.wms.sch_manage.enums.TaskEnum;
|
||||
import org.nl.wms.sch_manage.enums.TaskStatus;
|
||||
import org.nl.wms.sch_manage.service.ISchBasePointService;
|
||||
import org.nl.wms.sch_manage.service.ISchBaseTaskService;
|
||||
@@ -23,6 +24,8 @@ import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
/**
|
||||
* @Author: Liuxy
|
||||
* @Description: 手持定点任务
|
||||
@@ -41,13 +44,13 @@ public class PdaPointTask extends AbstractTask {
|
||||
/**
|
||||
* 点位服务
|
||||
*/
|
||||
@Autowired
|
||||
@Resource
|
||||
private ISchBasePointService iSchBasePointService;
|
||||
|
||||
/**
|
||||
* 仓位服务
|
||||
*/
|
||||
@Autowired
|
||||
@Resource
|
||||
private IStructattrService iStructattrService;
|
||||
|
||||
@Override
|
||||
@@ -56,10 +59,14 @@ public class PdaPointTask extends AbstractTask {
|
||||
task.setTask_id(IdUtil.getStringId());
|
||||
task.setTask_code(CodeUtil.getNewCode("TASK_CODE"));
|
||||
task.setTask_status(TaskStatus.CREATE.getCode());
|
||||
task.setConfig_code(json.getString("config_code"));
|
||||
task.setConfig_code(PdaPointTask.class.getSimpleName());
|
||||
task.setPoint_code1(json.getString("point_code1"));
|
||||
task.setPoint_code2(json.getString("point_code2"));
|
||||
task.setVehicle_code(json.getString("vehicle_code"));
|
||||
task.setMaterial_id(json.getString("material_id"));
|
||||
task.setMaterial_qty(json.getBigDecimal("material_qty"));
|
||||
task.setTask_type(json.getString("task_type"));
|
||||
task.setExt_group_data(json.getString("ext_group_data"));
|
||||
task.setRequest_param(json.toString());
|
||||
task.setPriority(json.getString("Priority"));
|
||||
task.setCreate_id(SecurityUtils.getCurrentUserId());
|
||||
@@ -135,7 +142,7 @@ public class PdaPointTask extends AbstractTask {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void backMes(String task_code) {
|
||||
public void taskConfirm(String task_code) {
|
||||
}
|
||||
|
||||
@Transactional
|
||||
@@ -145,14 +152,12 @@ public class PdaPointTask extends AbstractTask {
|
||||
new UpdateWrapper<SchBasePoint>().lambda()
|
||||
.eq(SchBasePoint::getPoint_code, taskObj.getPoint_code1())
|
||||
.set(SchBasePoint::getVehicle_code, null)
|
||||
.set(SchBasePoint::getIos_id, null)
|
||||
.set(SchBasePoint::getPoint_status, IOSEnum.POINT_STATUS.code("无货"))
|
||||
.set(SchBasePoint::getPoint_status, IOSEnum.POINT_STATUS.code("空位"))
|
||||
);
|
||||
iStructattrService.update(
|
||||
new UpdateWrapper<Structattr>().lambda()
|
||||
.eq(Structattr::getStruct_code, taskObj.getPoint_code1())
|
||||
.set(Structattr::getStoragevehicle_code, null)
|
||||
.set(Structattr::getTaskdtl_id, null)
|
||||
.set(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定"))
|
||||
);
|
||||
// 更新终点
|
||||
@@ -160,14 +165,15 @@ public class PdaPointTask extends AbstractTask {
|
||||
new UpdateWrapper<SchBasePoint>().lambda()
|
||||
.eq(SchBasePoint::getPoint_code, taskObj.getPoint_code2())
|
||||
.set(SchBasePoint::getVehicle_code, taskObj.getVehicle_code())
|
||||
.set(SchBasePoint::getIos_id, null)
|
||||
.set(SchBasePoint::getPoint_status, IOSEnum.POINT_STATUS.code("有货"))
|
||||
.set(taskObj.getTask_type().equals(TaskEnum.TASK_TYPE.code("载具")),
|
||||
SchBasePoint::getPoint_status, IOSEnum.POINT_STATUS.code("空载具"))
|
||||
.set(!taskObj.getTask_type().equals(TaskEnum.TASK_TYPE.code("载具")),
|
||||
SchBasePoint::getPoint_status, IOSEnum.POINT_STATUS.code("有箱有料"))
|
||||
);
|
||||
iStructattrService.update(
|
||||
new UpdateWrapper<Structattr>().lambda()
|
||||
.eq(Structattr::getStruct_code, taskObj.getPoint_code2())
|
||||
.set(Structattr::getStoragevehicle_code, taskObj.getVehicle_code())
|
||||
.set(Structattr::getTaskdtl_id, null)
|
||||
.set(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定"))
|
||||
);
|
||||
// 更新任务
|
||||
|
||||
@@ -127,7 +127,7 @@ public class StOutTask extends AbstractTask {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void backMes(String task_code) {
|
||||
public void taskConfirm(String task_code) {
|
||||
}
|
||||
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
package org.nl.wms.warehouse_management.controller;
|
||||
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@@ -8,7 +7,6 @@ import org.nl.common.base.TableDataInfo;
|
||||
import org.nl.common.domain.query.PageQuery;
|
||||
import org.nl.common.logging.annotation.Log;
|
||||
import org.nl.wms.warehouse_management.service.IRawAssistIStorService;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
@@ -17,8 +15,8 @@ import javax.annotation.Resource;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author dsh
|
||||
* 2025/5/19
|
||||
* @author Liuxy
|
||||
* 2025/8/12
|
||||
*/
|
||||
@RestController
|
||||
@RequiredArgsConstructor
|
||||
|
||||
@@ -0,0 +1,50 @@
|
||||
package org.nl.wms.warehouse_management.controller;
|
||||
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.common.base.TableDataInfo;
|
||||
import org.nl.common.domain.query.PageQuery;
|
||||
import org.nl.common.logging.annotation.Log;
|
||||
import org.nl.wms.warehouse_management.service.VehicleInService;
|
||||
import org.nl.wms.warehouse_management.service.dto.MoreOrLessInsertDto;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 空载具入库 控制层
|
||||
* </p>
|
||||
*
|
||||
* @author Liuxy
|
||||
* @since 2025-08-13
|
||||
*/
|
||||
@RestController
|
||||
@RequiredArgsConstructor
|
||||
@RequestMapping("/api/vehicleIn")
|
||||
@Slf4j
|
||||
public class VehicleInController {
|
||||
|
||||
@Autowired
|
||||
private VehicleInService vehicleInService;
|
||||
|
||||
@GetMapping
|
||||
@Log("获取载具任务信息")
|
||||
public ResponseEntity<Object> queryAll(@RequestParam Map whereJson, PageQuery page) {
|
||||
return new ResponseEntity<>(TableDataInfo.build(vehicleInService.queryAll(whereJson, page)), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping
|
||||
@Log("新增载具入库")
|
||||
public ResponseEntity<Object> create(@Validated @RequestBody JSONObject whereJson) {
|
||||
vehicleInService.create(whereJson);
|
||||
return new ResponseEntity<>(HttpStatus.CREATED);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,49 @@
|
||||
package org.nl.wms.warehouse_management.controller;
|
||||
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.common.base.TableDataInfo;
|
||||
import org.nl.common.domain.query.PageQuery;
|
||||
import org.nl.common.logging.annotation.Log;
|
||||
import org.nl.wms.warehouse_management.service.VehicleOutService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 空载具出库 控制层
|
||||
* </p>
|
||||
*
|
||||
* @author Liuxy
|
||||
* @since 2025-08-13
|
||||
*/
|
||||
@RestController
|
||||
@RequiredArgsConstructor
|
||||
@RequestMapping("/api/vehicleOut")
|
||||
@Slf4j
|
||||
public class VehicleOutController {
|
||||
|
||||
@Autowired
|
||||
private VehicleOutService vehicleOutService;
|
||||
|
||||
@GetMapping
|
||||
@Log("获取载具任务信息")
|
||||
public ResponseEntity<Object> queryAll(@RequestParam Map whereJson, PageQuery page) {
|
||||
return new ResponseEntity<>(TableDataInfo.build(vehicleOutService.queryAll(whereJson, page)), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping
|
||||
@Log("新增载具出库")
|
||||
public ResponseEntity<Object> create(@Validated @RequestBody JSONObject whereJson) {
|
||||
vehicleOutService.create(whereJson);
|
||||
return new ResponseEntity<>(HttpStatus.CREATED);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -80,4 +80,9 @@ public class IOSConstant {
|
||||
* 主存区编码
|
||||
*/
|
||||
public final static String SECT_CODE = "ZC01";
|
||||
|
||||
/**
|
||||
* 称重位
|
||||
*/
|
||||
public final static String CZW_POINT = "CZW01";
|
||||
}
|
||||
|
||||
@@ -30,11 +30,16 @@ public enum IOSEnum {
|
||||
// 入库业务类型
|
||||
BILL_TYPE(MapOf.of("生产入库","0001", "手工入库", "0009")),
|
||||
|
||||
// 入库任务配置类编码
|
||||
IN_CONFIG_CODE(MapOf.of("0001","DetainInTask", "0002", "BackInTask",
|
||||
"0003", "GeBoxInTask", "0004", "PieceBoxInTask", "0009", "HandInTask"
|
||||
)),
|
||||
|
||||
//入库分配明细状态
|
||||
INBILL_DIS_STATUS(MapOf.of("未生成", "00", "生成", "01", "执行中", "02", "完成", "99")),
|
||||
|
||||
//组盘记录状态
|
||||
GROUP_PLATE_STATUS(MapOf.of("生成", "00", "组盘", "01", "入库", "02", "出库", "03")),
|
||||
GROUP_PLATE_STATUS(MapOf.of( "组盘", "1", "入库", "2", "出库", "3")),
|
||||
|
||||
// 锁类型
|
||||
LOCK_TYPE(MapOf.of("未锁定", "0", "入库锁", "1", "出库锁", "2"
|
||||
@@ -51,7 +56,7 @@ public enum IOSEnum {
|
||||
, "大料架(长边)", "03")),
|
||||
|
||||
// 点位状态
|
||||
POINT_STATUS(MapOf.of("无货", "1", "有货", "2" )),
|
||||
POINT_STATUS(MapOf.of("空位", "1", "有箱有料", "2", "空载具", "3" )),
|
||||
|
||||
// 单据创建类型
|
||||
CREATE_MODE(MapOf.of("PC产生", "1", "终端产生", "2", "外部接口产生", "3")),
|
||||
|
||||
@@ -4,8 +4,11 @@ import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import org.nl.common.domain.query.PageQuery;
|
||||
import org.nl.wms.basedata_manage.service.dao.MdCsSupplierbase;
|
||||
import org.nl.wms.basedata_manage.service.dao.MdMeMaterialbase;
|
||||
import org.nl.wms.warehouse_management.service.dao.GroupPlate;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
@@ -15,21 +18,67 @@ import java.util.Set;
|
||||
* </p>
|
||||
*
|
||||
* @author Liuxy
|
||||
* @since 2025-05-23
|
||||
* @since 2025-08-11
|
||||
*/
|
||||
public interface IMdPbGroupplateService extends IService<GroupPlate> {
|
||||
|
||||
/**
|
||||
* 分页查询
|
||||
*
|
||||
* @param whereJson : {查询参数}
|
||||
* @param page : 分页对象
|
||||
* @param page : 分页对象
|
||||
* @return 返回结果
|
||||
*/
|
||||
IPage<JSONObject> queryAll(Map whereJson, PageQuery page);
|
||||
|
||||
/**
|
||||
* 新增组盘记录
|
||||
*
|
||||
* @param dto 组盘记录实体类
|
||||
*/
|
||||
void create(GroupPlate dto);
|
||||
|
||||
/**
|
||||
* 修改组盘记录
|
||||
*
|
||||
* @param dto 组盘记录实体类
|
||||
*/
|
||||
void update(GroupPlate dto);
|
||||
|
||||
/**
|
||||
* 查询物料信息
|
||||
*
|
||||
* @param whereJson {
|
||||
* material_code
|
||||
* }
|
||||
* @return MdMeMaterialbase
|
||||
*/
|
||||
MdMeMaterialbase queryMater(JSONObject whereJson);
|
||||
|
||||
/**
|
||||
* 校验载具
|
||||
*
|
||||
* @param whereJson {
|
||||
* storagevehicle_code
|
||||
* }
|
||||
*/
|
||||
void checkVehicle(JSONObject whereJson);
|
||||
|
||||
/**
|
||||
* 获取供应商信息
|
||||
*
|
||||
* @param whereJson {
|
||||
* <p>
|
||||
* }
|
||||
* @return List<MdCsSupplierbase>
|
||||
*/
|
||||
List<MdCsSupplierbase> querySupp(JSONObject whereJson);
|
||||
|
||||
/**
|
||||
* 删除组盘
|
||||
*
|
||||
* @param ids 标识集合
|
||||
*/
|
||||
void delete(Set<String> ids);
|
||||
|
||||
}
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
package org.nl.wms.warehouse_management.service;
|
||||
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
@@ -8,17 +7,15 @@ import org.nl.common.domain.query.PageQuery;
|
||||
import org.nl.wms.basedata_manage.service.dao.Structattr;
|
||||
import org.nl.wms.sch_manage.service.dao.SchBaseTask;
|
||||
import org.nl.wms.warehouse_management.service.dao.IOStorInv;
|
||||
import org.nl.wms.warehouse_management.service.dto.GroupPlateDto;
|
||||
import org.nl.wms.warehouse_management.service.dto.IOStorInvDisDto;
|
||||
import org.nl.wms.warehouse_management.service.dto.IOStorInvDtlDto;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author dsh
|
||||
* 2025/5/19
|
||||
* @author Liuxy
|
||||
* 2025/8/12
|
||||
*/
|
||||
public interface IRawAssistIStorService extends IService<IOStorInv> {
|
||||
/**
|
||||
@@ -30,29 +27,125 @@ public interface IRawAssistIStorService extends IService<IOStorInv> {
|
||||
*/
|
||||
IPage<IOStorInv> pageQuery(Map whereJson, PageQuery page);
|
||||
|
||||
IPage<GroupPlateDto> getBillDtl(Map whereJson, PageQuery page);
|
||||
/**
|
||||
* 获取组盘信息
|
||||
*
|
||||
* @param whereJson {
|
||||
* <p>
|
||||
* }
|
||||
* @param page 分页条件
|
||||
* @return JSONObject
|
||||
*/
|
||||
IPage<JSONObject> getBillDtl(Map whereJson, PageQuery page);
|
||||
|
||||
/**
|
||||
* 新增入库单
|
||||
*
|
||||
* @param whereJson {
|
||||
* <p>
|
||||
* }
|
||||
* @return String
|
||||
*/
|
||||
String insertDtl(Map whereJson);
|
||||
|
||||
/**
|
||||
* 删除单据
|
||||
*
|
||||
* @param ids 、
|
||||
*/
|
||||
void deleteAll(String[] ids);
|
||||
|
||||
/**
|
||||
* 编辑单据
|
||||
*
|
||||
* @param whereJson {
|
||||
* <p>
|
||||
* }
|
||||
*/
|
||||
void update(Map whereJson);
|
||||
|
||||
/**
|
||||
* 获取单据明细
|
||||
*
|
||||
* @param whereJson {
|
||||
* <p>
|
||||
* }
|
||||
* @return List<IOStorInvDtlDto>
|
||||
*/
|
||||
List<IOStorInvDtlDto> getIODtl(Map whereJson);
|
||||
|
||||
/**
|
||||
* 分配仓位
|
||||
*
|
||||
* @param whereJson {
|
||||
* <p>
|
||||
* }
|
||||
*/
|
||||
void divStruct(Map whereJson);
|
||||
|
||||
/**
|
||||
* 取消分配
|
||||
*
|
||||
* @param whereJson {
|
||||
* <p>
|
||||
* }
|
||||
*/
|
||||
void unDivStruct(Map whereJson);
|
||||
|
||||
/**
|
||||
* 设置站带你
|
||||
*
|
||||
* @param whereJson {
|
||||
* <p>
|
||||
* }
|
||||
*/
|
||||
void divPoint(Map whereJson);
|
||||
|
||||
/**
|
||||
* 强制确认
|
||||
*
|
||||
* @param whereJson {
|
||||
* <p>
|
||||
* }
|
||||
*/
|
||||
void confirm(Map whereJson);
|
||||
|
||||
/**
|
||||
* 任务确认
|
||||
*
|
||||
* @param task {
|
||||
* <p>
|
||||
* }
|
||||
*/
|
||||
void taskFinish(SchBaseTask task);
|
||||
|
||||
/**
|
||||
* 获取分配明细
|
||||
*
|
||||
* @param whereJson {
|
||||
* <p>
|
||||
* }
|
||||
* @return List<IOStorInvDisDto>
|
||||
*/
|
||||
List<IOStorInvDisDto> getDisDtl(Map whereJson);
|
||||
|
||||
/**
|
||||
* 分配规则
|
||||
*
|
||||
* @param whereJson {
|
||||
* <p>
|
||||
* }
|
||||
* @return Structattr
|
||||
*/
|
||||
Structattr autoDis(JSONObject whereJson);
|
||||
|
||||
/**
|
||||
* 查询详细信息
|
||||
*
|
||||
* @param whereJson {
|
||||
* <p>
|
||||
* }
|
||||
* @return List<IOStorInvDisDto>
|
||||
*/
|
||||
List<IOStorInvDisDto> getInBillTaskDtl(Map whereJson);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
package org.nl.wms.warehouse_management.service;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import org.nl.common.domain.query.PageQuery;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 空载具入库 服务类
|
||||
* </p>
|
||||
*
|
||||
* @author Liuxy
|
||||
* @since 2025-08-13
|
||||
*/
|
||||
public interface VehicleInService {
|
||||
|
||||
/**
|
||||
* 分页查询
|
||||
*
|
||||
* @param whereJson : {查询参数}
|
||||
* @param page : 分页对象
|
||||
* @return 返回结果
|
||||
*/
|
||||
IPage<JSONObject> queryAll(Map whereJson, PageQuery page);
|
||||
|
||||
/**
|
||||
* 新增载具入库
|
||||
*
|
||||
* @param whereJson {
|
||||
* storagevehicle_code: 载具编码
|
||||
* point_code: 入库点位
|
||||
* sect_code: 库区编码
|
||||
* }
|
||||
*/
|
||||
void create(JSONObject whereJson);
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
package org.nl.wms.warehouse_management.service;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import org.nl.common.domain.query.PageQuery;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 空载具出库 服务类
|
||||
* </p>
|
||||
*
|
||||
* @author Liuxy
|
||||
* @since 2025-08-13
|
||||
*/
|
||||
public interface VehicleOutService {
|
||||
|
||||
/**
|
||||
* 分页查询
|
||||
*
|
||||
* @param whereJson : {查询参数}
|
||||
* @param page : 分页对象
|
||||
* @return 返回结果
|
||||
*/
|
||||
IPage<JSONObject> queryAll(Map whereJson, PageQuery page);
|
||||
|
||||
/**
|
||||
* 新增载具出库
|
||||
*
|
||||
* @param whereJson {
|
||||
* point_code: 出库点位
|
||||
* sect_code: 库区编码
|
||||
* }
|
||||
*/
|
||||
void create(JSONObject whereJson);
|
||||
}
|
||||
@@ -8,8 +8,8 @@ import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
|
||||
/**
|
||||
* @author dsh
|
||||
* 2025/5/20
|
||||
* @author Liuxy
|
||||
* 2025/8/11
|
||||
*/
|
||||
@Data
|
||||
@TableName("md_pb_groupplate")
|
||||
@@ -28,7 +28,7 @@ public class GroupPlate implements Serializable {
|
||||
private String storagevehicle_code;
|
||||
|
||||
/**
|
||||
* 物料标识
|
||||
* 物料编码
|
||||
*/
|
||||
private String material_id;
|
||||
|
||||
@@ -58,10 +58,48 @@ public class GroupPlate implements Serializable {
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 状态 01组盘 02入库 03出库
|
||||
* 状态
|
||||
* 1-组盘 2-入库 3-出库
|
||||
*/
|
||||
private String status;
|
||||
|
||||
/**
|
||||
* 供应商编码
|
||||
*/
|
||||
private String supp_code;
|
||||
|
||||
/**
|
||||
* 有效日期
|
||||
*/
|
||||
private String quality_time;
|
||||
|
||||
/**
|
||||
* 生产日期
|
||||
*/
|
||||
private String produce_time;
|
||||
|
||||
/**
|
||||
* 执行标准
|
||||
*/
|
||||
private String execution_stand;
|
||||
|
||||
/**
|
||||
* 烘干次数
|
||||
*/
|
||||
private Integer bake_num;
|
||||
|
||||
/**
|
||||
* 品质类型
|
||||
* 1-待检,2-合格,3-不合格
|
||||
*/
|
||||
private String quality_type;
|
||||
|
||||
/**
|
||||
* 料箱类型
|
||||
* 1-大料箱,2-小料箱
|
||||
*/
|
||||
private String box_type;
|
||||
|
||||
/**
|
||||
* 组盘人
|
||||
*/
|
||||
@@ -76,19 +114,4 @@ public class GroupPlate implements Serializable {
|
||||
* 组盘时间
|
||||
*/
|
||||
private String create_time;
|
||||
|
||||
/**
|
||||
* 来源单据号
|
||||
*/
|
||||
private String ext_code;
|
||||
|
||||
/**
|
||||
* 来源单据类型
|
||||
*/
|
||||
private String ext_type;
|
||||
|
||||
/**
|
||||
* 监区(A1/A2/A3/A4/A5/A6/A7/A9/A10/A11/A12/A14)
|
||||
*/
|
||||
private String prison_area;
|
||||
}
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
package org.nl.wms.warehouse_management.service.dao.mapper;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import org.nl.wms.warehouse_management.service.dao.IOStorInv;
|
||||
import org.nl.wms.warehouse_management.service.dto.GroupPlateDto;
|
||||
import org.nl.wms.warehouse_management.service.dto.IOStorInvDisDto;
|
||||
import org.nl.wms.warehouse_management.service.dto.IOStorInvDtlDto;
|
||||
|
||||
import java.util.List;
|
||||
@@ -21,7 +21,7 @@ public interface IOStorInvMapper extends BaseMapper<IOStorInv> {
|
||||
|
||||
IPage<IOStorInv> queryAllByPage (IPage<IOStorInv> page,@Param("params") Map whereJson);
|
||||
|
||||
IPage<GroupPlateDto> getGroupPlate (IPage<GroupPlateDto> page, @Param("params") Map whereJson);
|
||||
IPage<JSONObject> getGroupPlate (IPage<GroupPlateDto> page, @Param("params") Map whereJson);
|
||||
|
||||
List<IOStorInvDtlDto> getIODtl (@Param("params") Map whereJson);
|
||||
|
||||
|
||||
@@ -47,26 +47,22 @@
|
||||
ORDER BY ios.iostorinv_id Desc
|
||||
</select>
|
||||
|
||||
<select id="getGroupPlate" resultType="org.nl.wms.warehouse_management.service.dto.GroupPlateDto">
|
||||
<select id="getGroupPlate" resultType="com.alibaba.fastjson.JSONObject">
|
||||
SELECT
|
||||
MAX(group_id) as group_id,
|
||||
storagevehicle_code,
|
||||
gp.material_id,pcsn,
|
||||
MAX(gp.qty_unit_id) as qty_unit_id,
|
||||
MAX(gp.qty_unit_name) as qty_unit_name,
|
||||
SUM(qty) as qty,
|
||||
SUM(qty) as plan_qty,
|
||||
MAX(remark),MAX(`status`),
|
||||
MAX(ext_code) as ext_code,
|
||||
MAX(ext_type) as ext_type,
|
||||
gp.*,
|
||||
gp.qty AS plan_qty,
|
||||
mtl.material_id,
|
||||
mtl.material_code,
|
||||
mtl.material_name,
|
||||
MAX(gp.prison_area) AS prison_area
|
||||
mtl.material_spec,
|
||||
supp.supp_name
|
||||
FROM
|
||||
md_pb_groupplate gp
|
||||
LEFT JOIN md_me_materialbase mtl ON gp.material_id = mtl.material_id
|
||||
LEFT JOIN md_cs_supplierbase supp ON supp.supp_code = gp.supp_code
|
||||
|
||||
<where>
|
||||
gp.status = '01'
|
||||
gp.status = '1'
|
||||
<if test="params.material_code != null">
|
||||
AND
|
||||
mtl.material_code LIKE CONCAT('%', #{params.material_code}, '%')
|
||||
@@ -88,7 +84,7 @@
|
||||
gp.create_time <= #{params.end_time}
|
||||
</if>
|
||||
</where>
|
||||
GROUP by storagevehicle_code,gp.material_id,pcsn
|
||||
ORDER BY gp.create_time DESC
|
||||
</select>
|
||||
|
||||
<select id="getIODtl" resultType="org.nl.wms.warehouse_management.service.dto.IOStorInvDtlDto">
|
||||
@@ -96,11 +92,15 @@
|
||||
dtl.*,
|
||||
mb.material_code,
|
||||
mb.material_name,
|
||||
mst.bill_code
|
||||
mb.material_spec,
|
||||
mst.bill_code,
|
||||
late.storagevehicle_code
|
||||
FROM
|
||||
st_ivt_iostorinvdtl dtl
|
||||
LEFT JOIN md_me_materialbase mb ON mb.material_id = dtl.material_id
|
||||
LEFT JOIN ST_IVT_IOStorInv mst ON mst.iostorinv_id = dtl.iostorinv_id
|
||||
LEFT JOIN md_me_materialbase mb ON mb.material_id = dtl.material_id
|
||||
LEFT JOIN ST_IVT_IOStorInv mst ON mst.iostorinv_id = dtl.iostorinv_id
|
||||
LEFT JOIN md_pb_groupplate late ON mb.material_id = late.material_id
|
||||
AND dtl.pcsn = late.pcsn AND late.status = '1'
|
||||
where
|
||||
1=1
|
||||
<if test="params.bill_code != null and params.bill_code != ''">
|
||||
|
||||
@@ -20,6 +20,11 @@ public class IOStorInvDtlDto extends IOStorInvDtl {
|
||||
*/
|
||||
private String material_name;
|
||||
|
||||
/**
|
||||
* 物料批次
|
||||
*/
|
||||
private String material_spec;
|
||||
|
||||
/**
|
||||
* 单据编号
|
||||
*/
|
||||
|
||||
@@ -1,16 +1,34 @@
|
||||
package org.nl.wms.warehouse_management.service.impl;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
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.nl.common.domain.query.PageQuery;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.config.IdUtil;
|
||||
import org.nl.wms.basedata_manage.service.IMdCsSupplierbaseService;
|
||||
import org.nl.wms.basedata_manage.service.IMdMeMaterialbaseService;
|
||||
import org.nl.wms.basedata_manage.service.IMdPbMeasureunitService;
|
||||
import org.nl.wms.basedata_manage.service.IMdPbStoragevehicleinfoService;
|
||||
import org.nl.wms.basedata_manage.service.dao.MdCsSupplierbase;
|
||||
import org.nl.wms.basedata_manage.service.dao.MdMeMaterialbase;
|
||||
import org.nl.wms.basedata_manage.service.dao.MdPbMeasureunit;
|
||||
import org.nl.wms.basedata_manage.service.dao.MdPbStoragevehicleinfo;
|
||||
import org.nl.wms.warehouse_management.enums.IOSConstant;
|
||||
import org.nl.wms.warehouse_management.enums.IOSEnum;
|
||||
import org.nl.wms.warehouse_management.service.IMdPbGroupplateService;
|
||||
import org.nl.wms.warehouse_management.service.dao.GroupPlate;
|
||||
import org.nl.wms.warehouse_management.service.dao.mapper.MdPbGroupplateMapper;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
@@ -20,17 +38,100 @@ import java.util.Set;
|
||||
* </p>
|
||||
*
|
||||
* @author Liuxy
|
||||
* @since 2025-05-23
|
||||
* @since 2025-08-11
|
||||
*/
|
||||
@Service
|
||||
public class MdPbGroupplateServiceImpl extends ServiceImpl<MdPbGroupplateMapper, GroupPlate> implements IMdPbGroupplateService {
|
||||
|
||||
/**
|
||||
* 物料服务
|
||||
*/
|
||||
@Autowired
|
||||
private IMdMeMaterialbaseService iMdMeMaterialbaseService;
|
||||
|
||||
/**
|
||||
* 载具服务
|
||||
*/
|
||||
@Autowired
|
||||
private IMdPbStoragevehicleinfoService iMdPbStoragevehicleinfoService;
|
||||
|
||||
/**
|
||||
* 供应商服务
|
||||
*/
|
||||
@Autowired
|
||||
private IMdCsSupplierbaseService iMdCsSupplierbaseService;
|
||||
|
||||
/**
|
||||
* 计量单位服务
|
||||
*/
|
||||
@Autowired
|
||||
private IMdPbMeasureunitService iMdPbMeasureunitService;
|
||||
|
||||
@Override
|
||||
public IPage<JSONObject> queryAll(Map whereJson, PageQuery page) {
|
||||
return this.baseMapper.queryAllByPage(new Page<>(page.getPage() + 1, page.getSize()),
|
||||
whereJson);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public void create(GroupPlate dto) {
|
||||
// 校验此载具是否已经组盘
|
||||
List<GroupPlate> groupList = this.list(
|
||||
new QueryWrapper<GroupPlate>().lambda()
|
||||
.in(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("组盘"),
|
||||
IOSEnum.GROUP_PLATE_STATUS.code("入库"))
|
||||
.eq(GroupPlate::getStoragevehicle_code, dto.getStoragevehicle_code())
|
||||
);
|
||||
if (ObjectUtil.isNotEmpty(groupList)) {
|
||||
throw new BadRequestException("当前载具已经组盘【" + dto.getStoragevehicle_code() + "】");
|
||||
}
|
||||
|
||||
dto.setGroup_id(IdUtil.getStringId());
|
||||
// 计量单位默认重量KG
|
||||
MdPbMeasureunit unitDao = iMdPbMeasureunitService.getByCode("KG");
|
||||
dto.setQty_unit_id(unitDao.getMeasure_unit_id());
|
||||
dto.setQty_unit_name(unitDao.getUnit_name());
|
||||
// 状态默认组盘
|
||||
dto.setStatus(IOSEnum.GROUP_PLATE_STATUS.code("组盘"));
|
||||
dto.setQuality_time(dto.getQuality_time().substring(0,10));
|
||||
dto.setProduce_time(dto.getProduce_time().substring(0,10));
|
||||
dto.setCreate_id(SecurityUtils.getCurrentUserId());
|
||||
dto.setCreate_name(SecurityUtils.getCurrentNickName());
|
||||
dto.setCreate_time(DateUtil.now());
|
||||
this.save(dto);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public void update(GroupPlate dto) {
|
||||
dto.setQuality_time(dto.getQuality_time().substring(0,10));
|
||||
dto.setProduce_time(dto.getProduce_time().substring(0,10));
|
||||
this.updateById(dto);
|
||||
}
|
||||
|
||||
@Override
|
||||
public MdMeMaterialbase queryMater(JSONObject whereJson) {
|
||||
return iMdMeMaterialbaseService.getByCode(whereJson.getString("material_code"));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void checkVehicle(JSONObject whereJson) {
|
||||
MdPbStoragevehicleinfo vehicleDao = iMdPbStoragevehicleinfoService.getByCode(whereJson.getString("storagevehicle_code"));
|
||||
if (ObjectUtil.isEmpty(vehicleDao)) {
|
||||
throw new BadRequestException("此载具不存在【" + whereJson.getString("storagevehicle_code") + "】");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<MdCsSupplierbase> querySupp(JSONObject whereJson) {
|
||||
return iMdCsSupplierbaseService.list(
|
||||
new QueryWrapper<MdCsSupplierbase>().lambda()
|
||||
.eq(MdCsSupplierbase::getIs_delete, IOSConstant.IS_DELETE_NO)
|
||||
.eq(MdCsSupplierbase::getIs_used, IOSConstant.IS_DELETE_YES)
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public void delete(Set<String> ids) {
|
||||
|
||||
@@ -2,7 +2,6 @@ package org.nl.wms.warehouse_management.service.impl;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.map.MapUtil;
|
||||
import cn.hutool.core.util.NumberUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
@@ -24,8 +23,6 @@ import org.nl.wms.basedata_manage.service.IBsrealStorattrService;
|
||||
import org.nl.wms.basedata_manage.service.IMdPbStoragevehicleextService;
|
||||
import org.nl.wms.basedata_manage.service.IStructattrService;
|
||||
import org.nl.wms.basedata_manage.service.dao.BsrealStorattr;
|
||||
import org.nl.wms.basedata_manage.service.dao.MdPbStoragevehicleext;
|
||||
import org.nl.wms.basedata_manage.service.dao.Structattr;
|
||||
import org.nl.wms.basedata_manage.service.dao.mapper.MdPbStoragevehicleextMapper;
|
||||
import org.nl.wms.basedata_manage.service.dto.MdPbStoragevehicleextDto;
|
||||
import org.nl.wms.sch_manage.enums.TaskStatus;
|
||||
@@ -33,7 +30,6 @@ import org.nl.wms.sch_manage.service.ISchBaseTaskService;
|
||||
import org.nl.wms.sch_manage.service.dao.SchBasePoint;
|
||||
import org.nl.wms.sch_manage.service.dao.SchBaseTask;
|
||||
import org.nl.wms.sch_manage.service.dao.mapper.SchBasePointMapper;
|
||||
import org.nl.wms.sch_manage.service.util.tasks.StInTask;
|
||||
import org.nl.wms.sch_manage.service.util.tasks.StOutTask;
|
||||
import org.nl.wms.warehouse_management.enums.IOSConstant;
|
||||
import org.nl.wms.warehouse_management.enums.IOSEnum;
|
||||
@@ -48,7 +44,6 @@ import org.nl.wms.warehouse_management.service.dao.mapper.IOStorInvDtlMapper;
|
||||
import org.nl.wms.warehouse_management.service.dao.mapper.IOStorInvMapper;
|
||||
import org.nl.wms.warehouse_management.service.dto.IOStorInvDisDto;
|
||||
import org.nl.wms.warehouse_management.service.dto.IOStorInvDtlDto;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
@@ -360,10 +355,6 @@ public class OutBillServiceImpl extends ServiceImpl<IOStorInvMapper,IOStorInv> i
|
||||
queryDtl.put("unassign_flag", BaseDataEnum.IS_YES_NOT.code("是"));
|
||||
queryDtl.put("iostorinv_id", iostorinv_id);
|
||||
List<IOStorInvDtlDto> dtls = ioStorInvMapper.getIODtl(queryDtl);
|
||||
// List<IOStorInvDtl> dtls = ioStorInvDtlMapper.selectList(new LambdaQueryWrapper<>(IOStorInvDtl.class)
|
||||
// .le(IOStorInvDtl::getBill_status,IOSEnum.BILL_STATUS.code("分配完"))
|
||||
// .gt(IOStorInvDtl::getUnassign_qty,0)
|
||||
// .eq(IOStorInvDtl::getIostorinv_id, iostorinv_id));
|
||||
if (ObjectUtil.isEmpty(dtls)) {
|
||||
throw new BadRequestException("当前订单无可分配出库明细");
|
||||
}
|
||||
@@ -1137,7 +1128,6 @@ public class OutBillServiceImpl extends ServiceImpl<IOStorInvMapper,IOStorInv> i
|
||||
groupPlateMapper.update(new GroupPlate(),new LambdaUpdateWrapper<>(GroupPlate.class)
|
||||
.set(GroupPlate::getStatus,IOSEnum.GROUP_PLATE_STATUS.code("出库"))
|
||||
.eq(GroupPlate::getPcsn,ioStorInvDis.getPcsn())
|
||||
.eq(GroupPlate::getMaterial_id,ioStorInvDis.getMaterial_id())
|
||||
.eq(GroupPlate::getStoragevehicle_code,ioStorInvDis.getStoragevehicle_code())
|
||||
);
|
||||
}
|
||||
@@ -1223,7 +1213,6 @@ public class OutBillServiceImpl extends ServiceImpl<IOStorInvMapper,IOStorInv> i
|
||||
groupPlateMapper.update(new GroupPlate(),new LambdaUpdateWrapper<>(GroupPlate.class)
|
||||
.set(GroupPlate::getStatus,IOSEnum.GROUP_PLATE_STATUS.code("出库"))
|
||||
.eq(GroupPlate::getPcsn,ioStorInvDis.getPcsn())
|
||||
.eq(GroupPlate::getMaterial_id,ioStorInvDis.getMaterial_id())
|
||||
.eq(GroupPlate::getStoragevehicle_code,ioStorInvDis.getStoragevehicle_code())
|
||||
);
|
||||
}
|
||||
|
||||
@@ -5,10 +5,11 @@ import cn.hutool.core.map.MapUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
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 com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
@@ -17,8 +18,6 @@ import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.common.utils.CodeUtil;
|
||||
import org.nl.common.utils.IdUtil;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.config.SpringContextHolder;
|
||||
import org.nl.system.service.param.impl.SysParamServiceImpl;
|
||||
import org.nl.wms.basedata_manage.enums.BaseDataEnum;
|
||||
import org.nl.wms.basedata_manage.service.IBsrealStorattrService;
|
||||
import org.nl.wms.basedata_manage.service.IMdPbStoragevehicleextService;
|
||||
@@ -27,11 +26,11 @@ import org.nl.wms.basedata_manage.service.dao.BsrealStorattr;
|
||||
import org.nl.wms.basedata_manage.service.dao.MdPbStoragevehicleinfo;
|
||||
import org.nl.wms.basedata_manage.service.dao.Structattr;
|
||||
import org.nl.wms.basedata_manage.service.dao.mapper.MdPbStoragevehicleinfoMapper;
|
||||
import org.nl.wms.sch_manage.service.dao.SchBasePoint;
|
||||
import org.nl.wms.sch_manage.enums.TaskStatus;
|
||||
import org.nl.wms.sch_manage.service.ISchBaseTaskService;
|
||||
import org.nl.wms.sch_manage.service.dao.SchBaseTask;
|
||||
import org.nl.wms.sch_manage.service.dao.mapper.SchBasePointMapper;
|
||||
import org.nl.wms.sch_manage.service.util.AbstractTask;
|
||||
import org.nl.wms.sch_manage.service.util.tasks.StInTask;
|
||||
import org.nl.wms.sch_manage.service.util.TaskFactory;
|
||||
import org.nl.wms.warehouse_management.enums.IOSConstant;
|
||||
import org.nl.wms.warehouse_management.enums.IOSEnum;
|
||||
import org.nl.wms.warehouse_management.service.IRawAssistIStorService;
|
||||
@@ -43,52 +42,82 @@ import org.nl.wms.warehouse_management.service.dao.mapper.GroupPlateMapper;
|
||||
import org.nl.wms.warehouse_management.service.dao.mapper.IOStorInvDisMapper;
|
||||
import org.nl.wms.warehouse_management.service.dao.mapper.IOStorInvDtlMapper;
|
||||
import org.nl.wms.warehouse_management.service.dao.mapper.IOStorInvMapper;
|
||||
import org.nl.wms.warehouse_management.service.dto.GroupPlateDto;
|
||||
import org.nl.wms.warehouse_management.service.dto.IOStorInvDisDto;
|
||||
import org.nl.wms.warehouse_management.service.dto.IOStorInvDtlDto;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @author dsh
|
||||
* 2025/5/19
|
||||
* @author Liuxy
|
||||
* 2025/8/12
|
||||
*/
|
||||
@Service
|
||||
public class RawAssistIStorServiceImpl extends ServiceImpl<IOStorInvMapper, IOStorInv> implements IRawAssistIStorService {
|
||||
|
||||
/**
|
||||
* 主表mapper
|
||||
*/
|
||||
@Resource
|
||||
private IOStorInvMapper ioStorInvMapper;
|
||||
|
||||
/**
|
||||
* 仓库服务
|
||||
*/
|
||||
@Resource
|
||||
private IBsrealStorattrService iBsrealStorattrService;
|
||||
|
||||
/**
|
||||
* 仓位服务
|
||||
*/
|
||||
@Resource
|
||||
private IStructattrService iStructattrService;
|
||||
|
||||
/**
|
||||
* 明细mapper
|
||||
*/
|
||||
@Resource
|
||||
private IOStorInvDtlMapper ioStorInvDtlMapper;
|
||||
|
||||
/**
|
||||
* 分配明细mapper
|
||||
*/
|
||||
@Resource
|
||||
private IOStorInvDisMapper ioStorInvDisMapper;
|
||||
|
||||
/**
|
||||
* 载具服务
|
||||
*/
|
||||
@Resource
|
||||
private MdPbStoragevehicleinfoMapper mdPbStoragevehicleinfoMapper;
|
||||
|
||||
@Resource
|
||||
private SchBasePointMapper schBasePointMapper;
|
||||
|
||||
/**
|
||||
* 载具扩展信息服务
|
||||
*/
|
||||
@Resource
|
||||
private IMdPbStoragevehicleextService iMdPbStoragevehicleextService;
|
||||
|
||||
/**
|
||||
* 组盘记录服务
|
||||
*/
|
||||
@Resource
|
||||
private GroupPlateMapper groupPlateMapper;
|
||||
|
||||
/**
|
||||
* 任务工厂服务
|
||||
*/
|
||||
@Autowired
|
||||
private TaskFactory taskFactory;
|
||||
|
||||
/**
|
||||
* 任务服务
|
||||
*/
|
||||
@Autowired
|
||||
private ISchBaseTaskService iSchBaseTaskService;
|
||||
|
||||
@Override
|
||||
public IPage<IOStorInv> pageQuery(Map whereJson, PageQuery page) {
|
||||
HashMap<String, String> map = new HashMap<>();
|
||||
@@ -114,7 +143,7 @@ public class RawAssistIStorServiceImpl extends ServiceImpl<IOStorInvMapper, IOSt
|
||||
String[] s = pcsn.split(" ");
|
||||
String pcsn_in = String.join("','", Arrays.asList(s));
|
||||
|
||||
map.put("pcsn_in", "('"+pcsn_in+"')");
|
||||
map.put("pcsn_in", "('" + pcsn_in + "')");
|
||||
} else {
|
||||
map.put("pcsn", "%" + pcsn + "%");
|
||||
}
|
||||
@@ -129,12 +158,12 @@ public class RawAssistIStorServiceImpl extends ServiceImpl<IOStorInvMapper, IOSt
|
||||
if (!StrUtil.isEmpty(end_time)) {
|
||||
map.put("end_time", end_time);
|
||||
}
|
||||
return ioStorInvMapper.queryAllByPage(new Page<>(page.getPage()+1, page.getSize()), map);
|
||||
return ioStorInvMapper.queryAllByPage(new Page<>(page.getPage() + 1, page.getSize()), map);
|
||||
}
|
||||
|
||||
@Override
|
||||
public IPage<GroupPlateDto> getBillDtl(Map whereJson, PageQuery page) {
|
||||
return ioStorInvMapper.getGroupPlate(new Page<>(page.getPage()+1,page.getSize()),whereJson);
|
||||
public IPage<JSONObject> getBillDtl(Map whereJson, PageQuery page) {
|
||||
return ioStorInvMapper.getGroupPlate(new Page<>(page.getPage() + 1, page.getSize()), whereJson);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -181,23 +210,23 @@ public class RawAssistIStorServiceImpl extends ServiceImpl<IOStorInvMapper, IOSt
|
||||
HashMap<String, Object> row = rows.get(i);
|
||||
JSONObject ioStorInvDtl = new JSONObject();
|
||||
ioStorInvDtl.putAll(row);
|
||||
ioStorInvDtl.put("iostorinvdtl_id",IdUtil.getStringId());
|
||||
ioStorInvDtl.put("iostorinv_id",iostorinv_id);
|
||||
ioStorInvDtl.put("seq_no",(i + 1)+"");
|
||||
ioStorInvDtl.put("material_id",row.get("material_id"));
|
||||
ioStorInvDtl.put("Pcsn",row.get("pcsn"));
|
||||
ioStorInvDtl.put("bill_status",IOSEnum.BILL_STATUS.code("生成"));
|
||||
ioStorInvDtl.put("qty_unit_id",row.get("qty_unit_id"));
|
||||
ioStorInvDtl.put("qty_unit_name",row.get("qty_unit_name"));
|
||||
ioStorInvDtl.put("source_bill_type",row.get("ext_type"));
|
||||
ioStorInvDtl.put("source_bill_code",row.get("ext_code"));
|
||||
ioStorInvDtl.put("assign_qty","0");
|
||||
ioStorInvDtl.put("unassign_qty",row.get("plan_qty"));
|
||||
ioStorInvDtl.put("plan_qty",row.get("plan_qty"));
|
||||
ioStorInvDtl.put("iostorinvdtl_id", IdUtil.getStringId());
|
||||
ioStorInvDtl.put("iostorinv_id", iostorinv_id);
|
||||
ioStorInvDtl.put("seq_no", (i + 1) + "");
|
||||
ioStorInvDtl.put("material_id", row.get("material_id"));
|
||||
ioStorInvDtl.put("Pcsn", row.get("pcsn"));
|
||||
ioStorInvDtl.put("bill_status", IOSEnum.BILL_STATUS.code("生成"));
|
||||
ioStorInvDtl.put("qty_unit_id", row.get("qty_unit_id"));
|
||||
ioStorInvDtl.put("qty_unit_name", row.get("qty_unit_name"));
|
||||
ioStorInvDtl.put("source_bill_type", row.get("ext_type"));
|
||||
ioStorInvDtl.put("source_bill_code", row.get("ext_code"));
|
||||
ioStorInvDtl.put("assign_qty", "0");
|
||||
ioStorInvDtl.put("unassign_qty", row.get("plan_qty"));
|
||||
ioStorInvDtl.put("plan_qty", row.get("plan_qty"));
|
||||
total_qty += Double.parseDouble(row.get("qty").toString());
|
||||
|
||||
//判断该载具编号是否已经存在库内
|
||||
Structattr structattr = iStructattrService.getOne(new LambdaQueryWrapper<>(Structattr.class).eq(Structattr::getStoragevehicle_code,row.get("storagevehicle_code")));
|
||||
Structattr structattr = iStructattrService.getOne(new LambdaQueryWrapper<>(Structattr.class).eq(Structattr::getStoragevehicle_code, row.get("storagevehicle_code")));
|
||||
if (ObjectUtil.isNotEmpty(structattr)) {
|
||||
throw new BadRequestException("载具编码:" + row.get("storagevehicle_code") + "已存在库内,请对数据进行核实!");
|
||||
}
|
||||
@@ -260,45 +289,45 @@ public class RawAssistIStorServiceImpl extends ServiceImpl<IOStorInvMapper, IOSt
|
||||
String now = DateUtil.now();
|
||||
|
||||
JSONObject iostorinv_json = new JSONObject();
|
||||
iostorinv_json.put("iostorinv_id",iostorinv_id);
|
||||
iostorinv_json.put("stor_id",whereJson.get("stor_id"));
|
||||
iostorinv_json.put("stor_code",whereJson.get("stor_code"));
|
||||
iostorinv_json.put("stor_name",whereJson.get("stor_name"));
|
||||
iostorinv_json.put("total_qty",whereJson.get("total_qty"));
|
||||
iostorinv_json.put("detail_count",whereJson.get("detail_count"));
|
||||
iostorinv_json.put("biz_date",whereJson.get("biz_date"));
|
||||
iostorinv_json.put("bill_type",whereJson.get("bill_type"));
|
||||
iostorinv_json.put("remark",whereJson.get("remark"));
|
||||
iostorinv_json.put("update_optid",currentUserId);
|
||||
iostorinv_json.put("update_optname",nickName);
|
||||
iostorinv_json.put("update_time",now);
|
||||
iostorinv_json.put("iostorinv_id", iostorinv_id);
|
||||
iostorinv_json.put("stor_id", whereJson.get("stor_id"));
|
||||
iostorinv_json.put("stor_code", whereJson.get("stor_code"));
|
||||
iostorinv_json.put("stor_name", whereJson.get("stor_name"));
|
||||
iostorinv_json.put("total_qty", whereJson.get("total_qty"));
|
||||
iostorinv_json.put("detail_count", whereJson.get("detail_count"));
|
||||
iostorinv_json.put("biz_date", whereJson.get("biz_date"));
|
||||
iostorinv_json.put("bill_type", whereJson.get("bill_type"));
|
||||
iostorinv_json.put("remark", whereJson.get("remark"));
|
||||
iostorinv_json.put("update_optid", currentUserId);
|
||||
iostorinv_json.put("update_optname", nickName);
|
||||
iostorinv_json.put("update_time", now);
|
||||
|
||||
ioStorInvMapper.updateById(iostorinv_json.toJavaObject(IOStorInv.class));
|
||||
|
||||
//先删除该单据下的所有明细
|
||||
ioStorInvDtlMapper.delete(new LambdaQueryWrapper<>(IOStorInvDtl.class).eq(IOStorInvDtl::getIostorinv_id,iostorinv_id));
|
||||
ioStorInvDtlMapper.delete(new LambdaQueryWrapper<>(IOStorInvDtl.class).eq(IOStorInvDtl::getIostorinv_id, iostorinv_id));
|
||||
|
||||
ioStorInvDisMapper.delete(new LambdaQueryWrapper<>(IOStorInvDis.class).eq(IOStorInvDis::getIostorinv_id,iostorinv_id));
|
||||
ioStorInvDisMapper.delete(new LambdaQueryWrapper<>(IOStorInvDis.class).eq(IOStorInvDis::getIostorinv_id, iostorinv_id));
|
||||
ArrayList<HashMap> rows = (ArrayList<HashMap>) whereJson.get("tableData");
|
||||
|
||||
for (int i = 0; i < rows.size(); i++) {
|
||||
HashMap<String, Object> row = rows.get(i);
|
||||
JSONObject ioStorInvDtl = new JSONObject();
|
||||
ioStorInvDtl.putAll(row);
|
||||
ioStorInvDtl.put("iostorinvdtl_id",IdUtil.getStringId());
|
||||
ioStorInvDtl.put("iostorinv_id",iostorinv_id);
|
||||
ioStorInvDtl.put("seq_no",(i + 1)+"");
|
||||
ioStorInvDtl.put("material_id",row.get("material_id"));
|
||||
ioStorInvDtl.put("Pcsn",row.get("pcsn"));
|
||||
ioStorInvDtl.put("bill_status",IOSEnum.BILL_STATUS.code("生成"));
|
||||
ioStorInvDtl.put("qty_unit_id",row.get("qty_unit_id"));
|
||||
ioStorInvDtl.put("qty_unit_name",row.get("qty_unit_name"));
|
||||
ioStorInvDtl.put("assign_qty",0);
|
||||
ioStorInvDtl.put("plan_qty",row.get("plan_qty"));
|
||||
ioStorInvDtl.put("unassign_qty",row.get("qty"));
|
||||
ioStorInvDtl.put("iostorinvdtl_id", IdUtil.getStringId());
|
||||
ioStorInvDtl.put("iostorinv_id", iostorinv_id);
|
||||
ioStorInvDtl.put("seq_no", (i + 1) + "");
|
||||
ioStorInvDtl.put("material_id", row.get("material_id"));
|
||||
ioStorInvDtl.put("Pcsn", row.get("pcsn"));
|
||||
ioStorInvDtl.put("bill_status", IOSEnum.BILL_STATUS.code("生成"));
|
||||
ioStorInvDtl.put("qty_unit_id", row.get("qty_unit_id"));
|
||||
ioStorInvDtl.put("qty_unit_name", row.get("qty_unit_name"));
|
||||
ioStorInvDtl.put("assign_qty", 0);
|
||||
ioStorInvDtl.put("plan_qty", row.get("plan_qty"));
|
||||
ioStorInvDtl.put("unassign_qty", row.get("qty"));
|
||||
|
||||
//判断该载具编号是否已经存在库内
|
||||
Structattr structattr = iStructattrService.getOne(new LambdaQueryWrapper<>(Structattr.class).eq(Structattr::getStoragevehicle_code,row.get("storagevehicle_code")));
|
||||
Structattr structattr = iStructattrService.getOne(new LambdaQueryWrapper<>(Structattr.class).eq(Structattr::getStoragevehicle_code, row.get("storagevehicle_code")));
|
||||
if (ObjectUtil.isNotEmpty(structattr)) {
|
||||
throw new BadRequestException("载具编码:" + row.get("storagevehicle_code") + "已存在库内,请对数据进行核实!");
|
||||
}
|
||||
@@ -348,9 +377,9 @@ public class RawAssistIStorServiceImpl extends ServiceImpl<IOStorInvMapper, IOSt
|
||||
|
||||
//判断该分配明细是否已经分配货位
|
||||
IOStorInvDis ioStorInvDis = ioStorInvDisMapper.selectOne(new LambdaQueryWrapper<>(IOStorInvDis.class)
|
||||
.eq(IOStorInvDis::getIostorinvdis_id,map.get("iostorinvdis_id"))
|
||||
.and(wrapper-> wrapper.isNull(IOStorInvDis::getStruct_code).or().eq(IOStorInvDis::getStruct_code,"")));
|
||||
if (ObjectUtil.isEmpty(ioStorInvDis)){
|
||||
.eq(IOStorInvDis::getIostorinvdis_id, map.get("iostorinvdis_id"))
|
||||
.and(wrapper -> wrapper.isNull(IOStorInvDis::getStruct_code).or().eq(IOStorInvDis::getStruct_code, "")));
|
||||
if (ObjectUtil.isEmpty(ioStorInvDis)) {
|
||||
throw new BadRequestException("该明细已经分配过货位,无法继续分配!");
|
||||
}
|
||||
|
||||
@@ -367,7 +396,6 @@ public class RawAssistIStorServiceImpl extends ServiceImpl<IOStorInvMapper, IOSt
|
||||
throw new BadRequestException("请选择需要分配的库区!");
|
||||
}
|
||||
|
||||
|
||||
if (ObjectUtil.isEmpty(struct)) {
|
||||
throw new BadRequestException("未查询到适用仓位!");
|
||||
}
|
||||
@@ -378,17 +406,6 @@ public class RawAssistIStorServiceImpl extends ServiceImpl<IOStorInvMapper, IOSt
|
||||
struct_code = struct.getStruct_code();
|
||||
struct_name = struct.getStruct_name();
|
||||
} else {
|
||||
|
||||
Structattr structattr = iStructattrService.findById(map.get("struct_id"));
|
||||
MdPbStoragevehicleinfo mdPbStoragevehicleinfo = mdPbStoragevehicleinfoMapper.selectOne(new LambdaQueryWrapper<>(MdPbStoragevehicleinfo.class)
|
||||
.eq(MdPbStoragevehicleinfo::getStoragevehicle_code,map.get("storagevehicle_code"))
|
||||
);
|
||||
//判断仓位的长高宽是否能放下载具
|
||||
if (structattr.getWidth().compareTo(mdPbStoragevehicleinfo.getVehicle_width()) <0 &&
|
||||
structattr.getHeight().compareTo(mdPbStoragevehicleinfo.getVehicle_height()) <0 &&
|
||||
structattr.getZdepth().compareTo(mdPbStoragevehicleinfo.getVehicle_long()) <0){
|
||||
throw new BadRequestException("载具不符合,请检查!");
|
||||
}
|
||||
sect_id = map.get("sect_id");
|
||||
sect_code = map.get("sect_code");
|
||||
sect_name = map.get("sect_name");
|
||||
@@ -412,31 +429,31 @@ public class RawAssistIStorServiceImpl extends ServiceImpl<IOStorInvMapper, IOSt
|
||||
lock_map.put("inv_code", ioStorInv.getBill_code());
|
||||
lock_map.put("inv_type", ioStorInv.getBill_type());
|
||||
lock_map.put("lock_type", IOSEnum.LOCK_TYPE.code("入库锁"));
|
||||
iStructattrService.updateStatusByCode("0",lock_map);
|
||||
iStructattrService.updateStatusByCode("0", lock_map);
|
||||
|
||||
// 更新分配明细表
|
||||
ioStorInvDisMapper.update(dis_map.toJavaObject(IOStorInvDis.class),new LambdaUpdateWrapper<>(IOStorInvDis.class)
|
||||
.set(IOStorInvDis::getSect_id,dis_map.getString("sect_id"))
|
||||
.set(IOStorInvDis::getSect_code,dis_map.getString("sect_code"))
|
||||
.set(IOStorInvDis::getSect_name,dis_map.getString("sect_name"))
|
||||
.set(IOStorInvDis::getStruct_id,dis_map.getString("struct_id"))
|
||||
.set(IOStorInvDis::getStruct_code,dis_map.getString("struct_code"))
|
||||
.set(IOStorInvDis::getStruct_name,dis_map.getString("struct_name"))
|
||||
.eq(IOStorInvDis::getIostorinvdis_id,map.get("iostorinvdis_id"))
|
||||
ioStorInvDisMapper.update(dis_map.toJavaObject(IOStorInvDis.class), new LambdaUpdateWrapper<>(IOStorInvDis.class)
|
||||
.set(IOStorInvDis::getSect_id, dis_map.getString("sect_id"))
|
||||
.set(IOStorInvDis::getSect_code, dis_map.getString("sect_code"))
|
||||
.set(IOStorInvDis::getSect_name, dis_map.getString("sect_name"))
|
||||
.set(IOStorInvDis::getStruct_id, dis_map.getString("struct_id"))
|
||||
.set(IOStorInvDis::getStruct_code, dis_map.getString("struct_code"))
|
||||
.set(IOStorInvDis::getStruct_name, dis_map.getString("struct_name"))
|
||||
.eq(IOStorInvDis::getIostorinvdis_id, map.get("iostorinvdis_id"))
|
||||
);
|
||||
|
||||
//维护单据明细表里 分配数量
|
||||
JSONObject jsonObject = new JSONObject();
|
||||
jsonObject.put("iostorinvdtl_id",map.get("iostorinvdtl_id"));
|
||||
jsonObject.put("bill_status",IOSEnum.BILL_STATUS.code("分配完"));
|
||||
jsonObject.put("assign_qty",map.get("plan_qty"));
|
||||
jsonObject.put("unassign_qty","0");
|
||||
jsonObject.put("iostorinvdtl_id", map.get("iostorinvdtl_id"));
|
||||
jsonObject.put("bill_status", IOSEnum.BILL_STATUS.code("分配完"));
|
||||
jsonObject.put("assign_qty", map.get("plan_qty"));
|
||||
jsonObject.put("unassign_qty", "0");
|
||||
ioStorInvDtlMapper.updateById(jsonObject.toJavaObject(IOStorInvDtl.class));
|
||||
|
||||
//根据单据标识判断分配明细是否都已经分配完成
|
||||
int disCount = ioStorInvDisMapper.selectCount(new LambdaQueryWrapper<>(IOStorInvDis.class)
|
||||
.eq(IOStorInvDis::getIostorinv_id,map.get("iostorinv_id"))
|
||||
.and(wrapper -> wrapper.isNull(IOStorInvDis::getStruct_code).or().eq(IOStorInvDis::getStruct_code,"")));
|
||||
.eq(IOStorInvDis::getIostorinv_id, map.get("iostorinv_id"))
|
||||
.and(wrapper -> wrapper.isNull(IOStorInvDis::getStruct_code).or().eq(IOStorInvDis::getStruct_code, "")));
|
||||
|
||||
// 根据分配货位情况 更新主表单据状态
|
||||
IOStorInv ios = new IOStorInv();
|
||||
@@ -444,7 +461,7 @@ public class RawAssistIStorServiceImpl extends ServiceImpl<IOStorInvMapper, IOSt
|
||||
ios.setUpdate_optid(currentUserId);
|
||||
ios.setUpdate_optname(nickName);
|
||||
ios.setUpdate_time(now);
|
||||
ios.setBill_status(disCount>0 ? IOSEnum.BILL_STATUS.code("分配中") : IOSEnum.BILL_STATUS.code("分配完"));
|
||||
ios.setBill_status(disCount > 0 ? IOSEnum.BILL_STATUS.code("分配中") : IOSEnum.BILL_STATUS.code("分配完"));
|
||||
ioStorInvMapper.updateById(ios);
|
||||
}
|
||||
|
||||
@@ -465,31 +482,31 @@ public class RawAssistIStorServiceImpl extends ServiceImpl<IOStorInvMapper, IOSt
|
||||
unlock_map.put("inv_type", null);
|
||||
unlock_map.put("inv_id", null);
|
||||
unlock_map.put("inv_code", null);
|
||||
iStructattrService.updateStatusByCode("2",unlock_map);
|
||||
iStructattrService.updateStatusByCode("2", unlock_map);
|
||||
|
||||
// 修改分配明细表
|
||||
ioStorInvDisMapper.update(new IOStorInvDis(),new LambdaUpdateWrapper<>(IOStorInvDis.class)
|
||||
.set(IOStorInvDis::getSect_id,null)
|
||||
.set(IOStorInvDis::getSect_code,null)
|
||||
.set(IOStorInvDis::getSect_name,null)
|
||||
.set(IOStorInvDis::getStruct_id,null)
|
||||
.set(IOStorInvDis::getStruct_code,null)
|
||||
.set(IOStorInvDis::getStruct_name,null)
|
||||
.eq(IOStorInvDis::getIostorinvdis_id,jo.get("iostorinvdis_id"))
|
||||
ioStorInvDisMapper.update(new IOStorInvDis(), new LambdaUpdateWrapper<>(IOStorInvDis.class)
|
||||
.set(IOStorInvDis::getSect_id, null)
|
||||
.set(IOStorInvDis::getSect_code, null)
|
||||
.set(IOStorInvDis::getSect_name, null)
|
||||
.set(IOStorInvDis::getStruct_id, null)
|
||||
.set(IOStorInvDis::getStruct_code, null)
|
||||
.set(IOStorInvDis::getStruct_name, null)
|
||||
.eq(IOStorInvDis::getIostorinvdis_id, jo.get("iostorinvdis_id"))
|
||||
);
|
||||
|
||||
//维护单据明细表里 分配数量
|
||||
JSONObject jsonObject = new JSONObject();
|
||||
jsonObject.put("iostorinvdtl_id",jo.get("iostorinvdtl_id"));
|
||||
jsonObject.put("bill_status",IOSEnum.BILL_STATUS.code("生成"));
|
||||
jsonObject.put("assign_qty","0");
|
||||
jsonObject.put("unassign_qty",jo.get("plan_qty"));
|
||||
jsonObject.put("iostorinvdtl_id", jo.get("iostorinvdtl_id"));
|
||||
jsonObject.put("bill_status", IOSEnum.BILL_STATUS.code("生成"));
|
||||
jsonObject.put("assign_qty", "0");
|
||||
jsonObject.put("unassign_qty", jo.get("plan_qty"));
|
||||
ioStorInvDtlMapper.updateById(jsonObject.toJavaObject(IOStorInvDtl.class));
|
||||
|
||||
//根据单据标识判断分配明细是否都已经分配完成
|
||||
int disCount = ioStorInvDisMapper.selectCount(new LambdaQueryWrapper<>(IOStorInvDis.class)
|
||||
.eq(IOStorInvDis::getIostorinv_id,jo.get("iostorinv_id"))
|
||||
.and(wrapper -> wrapper.isNotNull(IOStorInvDis::getStruct_code).or().ne(IOStorInvDis::getStruct_code,"")));
|
||||
.eq(IOStorInvDis::getIostorinv_id, jo.get("iostorinv_id"))
|
||||
.and(wrapper -> wrapper.isNotNull(IOStorInvDis::getStruct_code).or().ne(IOStorInvDis::getStruct_code, "")));
|
||||
|
||||
// 根据分配货位情况 更新主表单据状态
|
||||
IOStorInv ios = new IOStorInv();
|
||||
@@ -497,7 +514,7 @@ public class RawAssistIStorServiceImpl extends ServiceImpl<IOStorInvMapper, IOSt
|
||||
ios.setUpdate_optid(currentUserId);
|
||||
ios.setUpdate_optname(nickName);
|
||||
ios.setUpdate_time(now);
|
||||
ios.setBill_status(disCount>0 ? IOSEnum.BILL_STATUS.code("分配中") : IOSEnum.BILL_STATUS.code("生成"));
|
||||
ios.setBill_status(disCount > 0 ? IOSEnum.BILL_STATUS.code("分配中") : IOSEnum.BILL_STATUS.code("生成"));
|
||||
ioStorInvMapper.updateById(ios);
|
||||
}
|
||||
|
||||
@@ -510,27 +527,25 @@ public class RawAssistIStorServiceImpl extends ServiceImpl<IOStorInvMapper, IOSt
|
||||
|
||||
//判断是否已经分配好货位
|
||||
IOStorInvDis ioStorInvDis = ioStorInvDisMapper.selectOne(new LambdaQueryWrapper<>(IOStorInvDis.class)
|
||||
.eq(IOStorInvDis::getIostorinvdis_id,map.get("iostorinvdis_id"))
|
||||
.and(wrapper -> wrapper.isNotNull(IOStorInvDis::getStruct_code).or().ne(IOStorInvDis::getStruct_code,"")));
|
||||
if (ObjectUtil.isEmpty(ioStorInvDis)){
|
||||
.eq(IOStorInvDis::getIostorinvdis_id, map.get("iostorinvdis_id"))
|
||||
.and(wrapper -> wrapper.isNotNull(IOStorInvDis::getStruct_code).or().ne(IOStorInvDis::getStruct_code, "")));
|
||||
if (ObjectUtil.isEmpty(ioStorInvDis)) {
|
||||
throw new BadRequestException("该明细还没分配货位,请先分配货位");
|
||||
}
|
||||
|
||||
|
||||
//创建任务
|
||||
JSONObject task_form = new JSONObject();
|
||||
task_form.put("task_type", "STInTask");
|
||||
task_form.put("TaskCode",CodeUtil.getNewCode("TASK_CODE"));
|
||||
task_form.put("PickingLocation", point_code);
|
||||
task_form.put("PlacedLocation", ioStorInvDis.getStruct_code());
|
||||
task_form.put("point_code1", point_code);
|
||||
task_form.put("point_code2", ioStorInvDis.getStruct_code());
|
||||
task_form.put("vehicle_code", map.get("storagevehicle_code"));
|
||||
// GroupPlate groupPlate = groupPlateMapper.selectOne(new LambdaQueryWrapper<>(GroupPlate.class)
|
||||
// .eq(GroupPlate::getStoragevehicle_code,map.get("storagevehicle_code"))
|
||||
// );
|
||||
// task_form.put("group_id", groupPlate.getGroup_id());
|
||||
task_form.put("material_id", ioStorInvDis.getMaterial_id());
|
||||
task_form.put("material_qty", ioStorInvDis.getPlan_qty());
|
||||
|
||||
StInTask stInTask = SpringContextHolder.getBean("STInTask");
|
||||
|
||||
String task_id = stInTask.create(task_form);
|
||||
// 根据任务类创建任务
|
||||
IOStorInv iosMstDao = ioStorInvMapper.selectById(ioStorInvDis.getIostorinv_id());
|
||||
AbstractTask task = taskFactory.getTask(IOSEnum.IN_CONFIG_CODE.code(iosMstDao.getBill_type()));
|
||||
String task_id = task.create(task_form);
|
||||
|
||||
//分配明细表更新任务相关数据
|
||||
IOStorInvDis dis = new IOStorInvDis();
|
||||
@@ -551,27 +566,27 @@ public class RawAssistIStorServiceImpl extends ServiceImpl<IOStorInvMapper, IOSt
|
||||
String now = DateUtil.now();
|
||||
|
||||
IOStorInv ioStorInv = ioStorInvMapper.selectOne(new LambdaQueryWrapper<>(IOStorInv.class)
|
||||
.eq(IOStorInv::getIostorinv_id,whereJson.get("iostorinv_id"))
|
||||
.eq(IOStorInv::getIostorinv_id, whereJson.get("iostorinv_id"))
|
||||
);
|
||||
|
||||
if (ObjectUtil.isNotEmpty(ioStorInv) && !IOSEnum.BILL_STATUS.code("分配完").equals(ioStorInv.getBill_status())){
|
||||
if (ObjectUtil.isNotEmpty(ioStorInv) && !IOSEnum.BILL_STATUS.code("分配完").equals(ioStorInv.getBill_status())) {
|
||||
throw new BadRequestException("主表状态必须为分配完!");
|
||||
}
|
||||
|
||||
//解锁原货位点位
|
||||
List<IOStorInvDis> storInvDisList = ioStorInvDisMapper.selectList(new LambdaQueryWrapper<>(IOStorInvDis.class)
|
||||
.eq(IOStorInvDis::getIostorinv_id,whereJson.get("iostorinv_id"))
|
||||
.eq(IOStorInvDis::getIostorinv_id, whereJson.get("iostorinv_id"))
|
||||
);
|
||||
|
||||
for (IOStorInvDis ioStorInvDis: storInvDisList){
|
||||
if (StrUtil.isNotBlank(ioStorInvDis.getStruct_code())){
|
||||
for (IOStorInvDis ioStorInvDis : storInvDisList) {
|
||||
if (StrUtil.isNotBlank(ioStorInvDis.getStruct_code())) {
|
||||
JSONObject finish_map = new JSONObject();
|
||||
finish_map.put("struct_code",ioStorInvDis.getStruct_code());
|
||||
finish_map.put("storagevehicle_code",ioStorInvDis.getStoragevehicle_code());
|
||||
finish_map.put("struct_code", ioStorInvDis.getStruct_code());
|
||||
finish_map.put("storagevehicle_code", ioStorInvDis.getStoragevehicle_code());
|
||||
finish_map.put("inv_type", null);
|
||||
finish_map.put("inv_id", null);
|
||||
finish_map.put("inv_code", null);
|
||||
iStructattrService.updateStatusByCode("1",finish_map);
|
||||
iStructattrService.updateStatusByCode("1", finish_map);
|
||||
|
||||
//修改库存
|
||||
List<JSONObject> updateIvtList = new ArrayList<>();
|
||||
@@ -588,36 +603,41 @@ public class RawAssistIStorServiceImpl extends ServiceImpl<IOStorInvMapper, IOSt
|
||||
}
|
||||
|
||||
//更新详情数据
|
||||
ioStorInvDisMapper.update(ioStorInvDis,new LambdaUpdateWrapper<>(IOStorInvDis.class)
|
||||
.set(IOStorInvDis::getWork_status,IOSEnum.INBILL_DIS_STATUS.code("完成"))
|
||||
.set(IOStorInvDis::getReal_qty,ioStorInvDis.getPlan_qty())
|
||||
.eq(IOStorInvDis::getIostorinvdis_id,ioStorInvDis.getIostorinvdis_id())
|
||||
.ne(IOStorInvDis::getWork_status,IOSEnum.INBILL_DIS_STATUS.code("完成"))
|
||||
ioStorInvDisMapper.update(ioStorInvDis, new LambdaUpdateWrapper<>(IOStorInvDis.class)
|
||||
.set(IOStorInvDis::getWork_status, IOSEnum.INBILL_DIS_STATUS.code("完成"))
|
||||
.set(IOStorInvDis::getReal_qty, ioStorInvDis.getPlan_qty())
|
||||
.eq(IOStorInvDis::getIostorinvdis_id, ioStorInvDis.getIostorinvdis_id())
|
||||
.ne(IOStorInvDis::getWork_status, IOSEnum.INBILL_DIS_STATUS.code("完成"))
|
||||
);
|
||||
|
||||
ioStorInvDtlMapper.update(new IOStorInvDtl(),new LambdaUpdateWrapper<>(IOStorInvDtl.class)
|
||||
.set(IOStorInvDtl::getBill_status,IOSEnum.BILL_STATUS.code("完成"))
|
||||
.set(IOStorInvDtl::getReal_qty,ioStorInvDis.getPlan_qty())
|
||||
.eq(IOStorInvDtl::getIostorinvdtl_id,ioStorInvDis.getIostorinvdtl_id())
|
||||
.ne(IOStorInvDtl::getBill_status,IOSEnum.BILL_STATUS.code("完成"))
|
||||
ioStorInvDtlMapper.update(new IOStorInvDtl(), new LambdaUpdateWrapper<>(IOStorInvDtl.class)
|
||||
.set(IOStorInvDtl::getBill_status, IOSEnum.BILL_STATUS.code("完成"))
|
||||
.set(IOStorInvDtl::getReal_qty, ioStorInvDis.getPlan_qty())
|
||||
.eq(IOStorInvDtl::getIostorinvdtl_id, ioStorInvDis.getIostorinvdtl_id())
|
||||
.ne(IOStorInvDtl::getBill_status, IOSEnum.BILL_STATUS.code("完成"))
|
||||
);
|
||||
|
||||
//更新组盘记录表
|
||||
groupPlateMapper.update(new GroupPlate(),new LambdaUpdateWrapper<>(GroupPlate.class)
|
||||
.set(GroupPlate::getStatus,IOSEnum.GROUP_PLATE_STATUS.code("入库"))
|
||||
.eq(GroupPlate::getPcsn,ioStorInvDis.getPcsn())
|
||||
.eq(GroupPlate::getMaterial_id,ioStorInvDis.getMaterial_id())
|
||||
.eq(GroupPlate::getStoragevehicle_code,ioStorInvDis.getStoragevehicle_code())
|
||||
groupPlateMapper.update(new GroupPlate(), new LambdaUpdateWrapper<>(GroupPlate.class)
|
||||
.set(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("入库"))
|
||||
.eq(GroupPlate::getPcsn, ioStorInvDis.getPcsn())
|
||||
.eq(GroupPlate::getStoragevehicle_code, ioStorInvDis.getStoragevehicle_code())
|
||||
);
|
||||
// 更新任务完成
|
||||
iSchBaseTaskService.update(
|
||||
new UpdateWrapper<SchBaseTask>().lambda()
|
||||
.eq(SchBaseTask::getTask_id, ioStorInvDis.getTask_id())
|
||||
.set(SchBaseTask::getTask_status, TaskStatus.FINISHED.getCode())
|
||||
);
|
||||
}
|
||||
|
||||
//更新主表状态
|
||||
ioStorInvMapper.update(ioStorInv,new LambdaUpdateWrapper<>(IOStorInv.class)
|
||||
.set(IOStorInv::getBill_status,IOSEnum.BILL_STATUS.code("完成"))
|
||||
.set(IOStorInv::getConfirm_optid,currentUserId)
|
||||
.set(IOStorInv::getConfirm_optname,nickName)
|
||||
.set(IOStorInv::getConfirm_time,now)
|
||||
.eq(IOStorInv::getIostorinv_id,whereJson.get("iostorinv_id"))
|
||||
ioStorInvMapper.update(ioStorInv, new LambdaUpdateWrapper<>(IOStorInv.class)
|
||||
.set(IOStorInv::getBill_status, IOSEnum.BILL_STATUS.code("完成"))
|
||||
.set(IOStorInv::getConfirm_optid, currentUserId)
|
||||
.set(IOStorInv::getConfirm_optname, nickName)
|
||||
.set(IOStorInv::getConfirm_time, now)
|
||||
.eq(IOStorInv::getIostorinv_id, whereJson.get("iostorinv_id"))
|
||||
);
|
||||
|
||||
}
|
||||
@@ -631,27 +651,27 @@ public class RawAssistIStorServiceImpl extends ServiceImpl<IOStorInvMapper, IOSt
|
||||
String now = DateUtil.now();
|
||||
|
||||
IOStorInvDis ioStorInvDis = ioStorInvDisMapper.selectOne(new LambdaQueryWrapper<>(IOStorInvDis.class)
|
||||
.eq(IOStorInvDis::getTask_id,task.getTask_id())
|
||||
.eq(IOStorInvDis::getTask_id, task.getTask_id())
|
||||
);
|
||||
if (ObjectUtil.isEmpty(ioStorInvDis)){
|
||||
if (ObjectUtil.isEmpty(ioStorInvDis)) {
|
||||
throw new BadRequestException("未找到任务对应的分配明细");
|
||||
}
|
||||
|
||||
// 完成当前分配明细
|
||||
ioStorInvDisMapper.update(ioStorInvDis,new LambdaUpdateWrapper<>(IOStorInvDis.class)
|
||||
.set(IOStorInvDis::getWork_status,IOSEnum.INBILL_DIS_STATUS.code("完成"))
|
||||
.set(IOStorInvDis::getReal_qty,ioStorInvDis.getPlan_qty())
|
||||
.eq(IOStorInvDis::getIostorinvdis_id,ioStorInvDis.getIostorinvdis_id())
|
||||
ioStorInvDisMapper.update(ioStorInvDis, new LambdaUpdateWrapper<>(IOStorInvDis.class)
|
||||
.set(IOStorInvDis::getWork_status, IOSEnum.INBILL_DIS_STATUS.code("完成"))
|
||||
.set(IOStorInvDis::getReal_qty, ioStorInvDis.getPlan_qty())
|
||||
.eq(IOStorInvDis::getIostorinvdis_id, ioStorInvDis.getIostorinvdis_id())
|
||||
);
|
||||
|
||||
//解锁库位
|
||||
JSONObject finish_map = new JSONObject();
|
||||
finish_map.put("struct_code",ioStorInvDis.getStruct_code());
|
||||
finish_map.put("storagevehicle_code",ioStorInvDis.getStoragevehicle_code());
|
||||
finish_map.put("struct_code", ioStorInvDis.getStruct_code());
|
||||
finish_map.put("storagevehicle_code", ioStorInvDis.getStoragevehicle_code());
|
||||
finish_map.put("inv_type", null);
|
||||
finish_map.put("inv_id", null);
|
||||
finish_map.put("inv_code", null);
|
||||
iStructattrService.updateStatusByCode("1",finish_map);
|
||||
iStructattrService.updateStatusByCode("1", finish_map);
|
||||
|
||||
//修改库存
|
||||
List<JSONObject> updateIvtList = new ArrayList<>();
|
||||
@@ -667,26 +687,25 @@ public class RawAssistIStorServiceImpl extends ServiceImpl<IOStorInvMapper, IOSt
|
||||
iMdPbStoragevehicleextService.updateIvt(updateIvtList);
|
||||
|
||||
//更新组盘记录表
|
||||
groupPlateMapper.update(new GroupPlate(),new LambdaUpdateWrapper<>(GroupPlate.class)
|
||||
.set(GroupPlate::getStatus,IOSEnum.GROUP_PLATE_STATUS.code("入库"))
|
||||
.eq(GroupPlate::getPcsn,ioStorInvDis.getPcsn())
|
||||
.eq(GroupPlate::getMaterial_id,ioStorInvDis.getMaterial_id())
|
||||
.eq(GroupPlate::getStoragevehicle_code,ioStorInvDis.getStoragevehicle_code())
|
||||
groupPlateMapper.update(new GroupPlate(), new LambdaUpdateWrapper<>(GroupPlate.class)
|
||||
.set(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("入库"))
|
||||
.eq(GroupPlate::getPcsn, ioStorInvDis.getPcsn())
|
||||
.eq(GroupPlate::getStoragevehicle_code, ioStorInvDis.getStoragevehicle_code())
|
||||
);
|
||||
|
||||
// 查询该明细下是否还有未完成的分配明细
|
||||
int countDis = ioStorInvDisMapper.selectCount(new LambdaQueryWrapper<>(IOStorInvDis.class)
|
||||
.eq(IOStorInvDis::getIostorinvdtl_id,ioStorInvDis.getIostorinvdtl_id())
|
||||
.ne(IOStorInvDis::getWork_status,IOSEnum.INBILL_DIS_STATUS.code("完成"))
|
||||
.eq(IOStorInvDis::getIostorinvdtl_id, ioStorInvDis.getIostorinvdtl_id())
|
||||
.ne(IOStorInvDis::getWork_status, IOSEnum.INBILL_DIS_STATUS.code("完成"))
|
||||
);
|
||||
|
||||
// 明细
|
||||
IOStorInvDtl ioStorInvDtl = ioStorInvDtlMapper.selectById(ioStorInvDis.getIostorinvdtl_id());
|
||||
if (ObjectUtil.isEmpty(ioStorInvDtl)){
|
||||
if (ObjectUtil.isEmpty(ioStorInvDtl)) {
|
||||
throw new BadRequestException("未找到明细");
|
||||
}
|
||||
// 如果分配明细全部完成则更新明细表状态
|
||||
if (countDis == 0){
|
||||
if (countDis == 0) {
|
||||
// 更新明细表状态
|
||||
ioStorInvDtl.setReal_qty(ioStorInvDis.getPlan_qty());
|
||||
ioStorInvDtl.setBill_status(IOSEnum.BILL_STATUS.code("完成"));
|
||||
@@ -694,19 +713,19 @@ public class RawAssistIStorServiceImpl extends ServiceImpl<IOStorInvMapper, IOSt
|
||||
|
||||
// 查看明细是否全部完成
|
||||
int countDtl = ioStorInvDtlMapper.selectCount(new LambdaQueryWrapper<>(IOStorInvDtl.class)
|
||||
.eq(IOStorInvDtl::getIostorinv_id,ioStorInvDtl.getIostorinv_id())
|
||||
.ne(IOStorInvDtl::getBill_status,IOSEnum.BILL_STATUS.code("完成"))
|
||||
.eq(IOStorInvDtl::getIostorinv_id, ioStorInvDtl.getIostorinv_id())
|
||||
.ne(IOStorInvDtl::getBill_status, IOSEnum.BILL_STATUS.code("完成"))
|
||||
);
|
||||
|
||||
// 如果明细全部完成则更新主表状态
|
||||
if (countDtl == 0){
|
||||
if (countDtl == 0) {
|
||||
//更新主表状态
|
||||
ioStorInvMapper.update(new IOStorInv(),new LambdaUpdateWrapper<>(IOStorInv.class)
|
||||
.set(IOStorInv::getBill_status,IOSEnum.BILL_STATUS.code("完成"))
|
||||
.set(IOStorInv::getConfirm_optid,currentUserId)
|
||||
.set(IOStorInv::getConfirm_optname,nickName)
|
||||
.set(IOStorInv::getConfirm_time,now)
|
||||
.eq(IOStorInv::getIostorinv_id,ioStorInvDtl.getIostorinv_id())
|
||||
ioStorInvMapper.update(new IOStorInv(), new LambdaUpdateWrapper<>(IOStorInv.class)
|
||||
.set(IOStorInv::getBill_status, IOSEnum.BILL_STATUS.code("完成"))
|
||||
.set(IOStorInv::getConfirm_optid, currentUserId)
|
||||
.set(IOStorInv::getConfirm_optname, nickName)
|
||||
.set(IOStorInv::getConfirm_time, now)
|
||||
.eq(IOStorInv::getIostorinv_id, ioStorInvDtl.getIostorinv_id())
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -721,43 +740,36 @@ public class RawAssistIStorServiceImpl extends ServiceImpl<IOStorInvMapper, IOSt
|
||||
|
||||
@Override
|
||||
public Structattr autoDis(JSONObject whereJson) {
|
||||
String sect_id = whereJson.getString("sect_id");
|
||||
String storagevehicle_code = whereJson.getString("storagevehicle_code");
|
||||
// 查询载具号是否在库内
|
||||
MdPbStoragevehicleinfo mdPbStoragevehicleinfo = mdPbStoragevehicleinfoMapper.selectOne(new LambdaQueryWrapper<>(MdPbStoragevehicleinfo.class)
|
||||
.eq(MdPbStoragevehicleinfo::getStoragevehicle_code,storagevehicle_code)
|
||||
.eq(MdPbStoragevehicleinfo::getStoragevehicle_code, whereJson.getString("storagevehicle_code"))
|
||||
);
|
||||
|
||||
if (ObjectUtil.isEmpty(mdPbStoragevehicleinfo)){
|
||||
if (ObjectUtil.isEmpty(mdPbStoragevehicleinfo)) {
|
||||
throw new BadRequestException("没有该载具号信息");
|
||||
}
|
||||
|
||||
// 查询没有任务的仓位号 并且根据载具类型分配货位
|
||||
// 金属托盘 - 3 ,小料架 - 4, 大料架(短)-1 ,大料架(长) - 2
|
||||
List<Structattr> structattrList = iStructattrService.list(new LambdaQueryWrapper<>(Structattr.class)
|
||||
.eq(Structattr::getSect_id,sect_id)
|
||||
.eq(Structattr::getLock_type,IOSEnum.LOCK_TYPE.code("未锁定"))
|
||||
.and(wrapper -> wrapper.isNull(Structattr::getStoragevehicle_code).or().eq(Structattr::getStoragevehicle_code,""))
|
||||
.eq(mdPbStoragevehicleinfo.getStoragevehicle_type().equals(IOSEnum.VEHICLE_TYPE.code("金属托盘")),
|
||||
Structattr::getStoragevehicle_type, IOSEnum.VEHICLE_TYPE_PUT.code("金属托盘"))
|
||||
.eq(mdPbStoragevehicleinfo.getStoragevehicle_type().equals(IOSEnum.VEHICLE_TYPE.code("小料架")),
|
||||
Structattr::getStoragevehicle_type, IOSEnum.VEHICLE_TYPE_PUT.code("小料架"))
|
||||
.eq(mdPbStoragevehicleinfo.getStoragevehicle_type().equals(IOSEnum.VEHICLE_TYPE.code("大料架(短边)")),
|
||||
Structattr::getStoragevehicle_type, IOSEnum.VEHICLE_TYPE_PUT.code("大料架(短边)"))
|
||||
.eq(mdPbStoragevehicleinfo.getStoragevehicle_type().equals(IOSEnum.VEHICLE_TYPE.code("大料架(长边)")),
|
||||
Structattr::getStoragevehicle_type, IOSEnum.VEHICLE_TYPE_PUT.code("大料架(长边)"))
|
||||
List<Structattr> attrList = iStructattrService.list(
|
||||
new QueryWrapper<Structattr>().lambda()
|
||||
.eq(Structattr::getIs_delete, IOSConstant.IS_DELETE_NO)
|
||||
.eq(Structattr::getIs_used, IOSConstant.IS_DELETE_YES)
|
||||
.eq(Structattr::getStoragevehicle_code, mdPbStoragevehicleinfo.getStoragevehicle_code())
|
||||
);
|
||||
if (ObjectUtil.isEmpty(structattrList)){
|
||||
throw new BadRequestException("该库区没有仓位");
|
||||
|
||||
if (ObjectUtil.isNotEmpty(attrList)) {
|
||||
throw new BadRequestException("该载具已在库内【" + mdPbStoragevehicleinfo.getStoragevehicle_code() + "】");
|
||||
}
|
||||
|
||||
// 过滤掉不满足载具长宽高的仓位
|
||||
Structattr structattr = structattrList.stream().filter(st ->
|
||||
st.getWidth().compareTo(mdPbStoragevehicleinfo.getVehicle_width()) >=0 &&
|
||||
st.getHeight().compareTo(mdPbStoragevehicleinfo.getVehicle_height()) >=0 &&
|
||||
st.getZdepth().compareTo(mdPbStoragevehicleinfo.getVehicle_long()) >=0
|
||||
).findAny().get();
|
||||
// 根据库区查询对应库位
|
||||
Structattr structattr = iStructattrService.getOne(new LambdaQueryWrapper<>(Structattr.class)
|
||||
.eq(Structattr::getSect_id, whereJson.getString("sect_id"))
|
||||
.eq(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定"))
|
||||
.eq(Structattr::getIs_delete, IOSConstant.IS_DELETE_NO)
|
||||
.eq(Structattr::getIs_used, IOSConstant.IS_DELETE_YES)
|
||||
.and(wrapper -> wrapper.isNull(Structattr::getStoragevehicle_code).or().eq(Structattr::getStoragevehicle_code, ""))
|
||||
.orderByAsc(Structattr::getStruct_code)
|
||||
);
|
||||
|
||||
if (ObjectUtil.isEmpty(structattr)){
|
||||
if (ObjectUtil.isEmpty(structattr)) {
|
||||
throw new BadRequestException("未找到满足的仓位");
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,148 @@
|
||||
package org.nl.wms.warehouse_management.service.impl;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import org.nl.common.domain.query.PageQuery;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.wms.basedata_manage.service.IMdPbStoragevehicleinfoService;
|
||||
import org.nl.wms.basedata_manage.service.IStructattrService;
|
||||
import org.nl.wms.basedata_manage.service.dao.MdPbStoragevehicleinfo;
|
||||
import org.nl.wms.basedata_manage.service.dao.Structattr;
|
||||
import org.nl.wms.sch_manage.enums.TaskEnum;
|
||||
import org.nl.wms.sch_manage.service.dao.mapper.SchBaseTaskMapper;
|
||||
import org.nl.wms.sch_manage.service.util.tasks.EmpVehicleInTask;
|
||||
import org.nl.wms.sch_manage.service.util.tasks.PdaPointTask;
|
||||
import org.nl.wms.warehouse_management.enums.IOSConstant;
|
||||
import org.nl.wms.warehouse_management.enums.IOSEnum;
|
||||
import org.nl.wms.warehouse_management.service.VehicleInService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 空载具入库 实现类
|
||||
* </p>
|
||||
*
|
||||
* @author Liuxy
|
||||
* @since 2025-08-13
|
||||
*/
|
||||
@Service
|
||||
public class VehicleInServiceImpl implements VehicleInService {
|
||||
|
||||
/**
|
||||
* 任务服务
|
||||
*/
|
||||
@Autowired
|
||||
private SchBaseTaskMapper schBaseTaskMapper;
|
||||
|
||||
/**
|
||||
* 载具服务
|
||||
*/
|
||||
@Autowired
|
||||
private IMdPbStoragevehicleinfoService iMdPbStoragevehicleinfoService;
|
||||
|
||||
/**
|
||||
* 仓位服务
|
||||
*/
|
||||
@Resource
|
||||
private IStructattrService iStructattrService;
|
||||
|
||||
/**
|
||||
* 点对点任务类
|
||||
*/
|
||||
@Resource
|
||||
private PdaPointTask pdaPointTask;
|
||||
|
||||
/**
|
||||
* 空载具入库任务类
|
||||
*/
|
||||
@Resource
|
||||
private EmpVehicleInTask empVehicleInTask;
|
||||
|
||||
@Override
|
||||
public IPage<JSONObject> queryAll(Map whereJson, PageQuery page) {
|
||||
whereJson.put("config_code", EmpVehicleInTask.class.getSimpleName());
|
||||
return schBaseTaskMapper.getVehicleTask(new Page<>(page.getPage() + 1, page.getSize()), whereJson);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public void create(JSONObject whereJson) {
|
||||
// 校验载具是否存在
|
||||
MdPbStoragevehicleinfo vehicleDao = iMdPbStoragevehicleinfoService.getByCode(whereJson.getString("storagevehicle_code"));
|
||||
if (ObjectUtil.isEmpty(vehicleDao)) {
|
||||
throw new BadRequestException("载具不存在【"+whereJson.getString("storagevehicle_code")+"】");
|
||||
}
|
||||
|
||||
// 判断是否是称重位
|
||||
if (whereJson.getString("point_code").equals(IOSConstant.CZW_POINT)) {
|
||||
// 根据库区分配一个仓位
|
||||
Structattr structattr = autoDivStruct(whereJson);
|
||||
// 锁定仓位
|
||||
structattr.setLock_type(IOSEnum.LOCK_TYPE.code("空托盘入库锁"));
|
||||
iStructattrService.updateById(structattr);
|
||||
|
||||
// 创建任务
|
||||
JSONObject jsonTask = new JSONObject();
|
||||
jsonTask.put("point_code1", whereJson.getString("point_code"));
|
||||
jsonTask.put("point_code2", structattr.getStruct_code());
|
||||
jsonTask.put("vehicle_code", whereJson.getString("storagevehicle_code") );
|
||||
empVehicleInTask.create(jsonTask);
|
||||
} else {
|
||||
// 生成库外站点至称重位的点位点任务
|
||||
JSONObject jsonTask = new JSONObject();
|
||||
jsonTask.put("point_code1", whereJson.getString("point_code"));
|
||||
jsonTask.put("point_code2", IOSConstant.CZW_POINT);
|
||||
jsonTask.put("vehicle_code", whereJson.getString("storagevehicle_code") );
|
||||
jsonTask.put("task_type", TaskEnum.TASK_TYPE.code("载具"));
|
||||
jsonTask.put("ext_group_data", whereJson.getString("sect_code"));
|
||||
pdaPointTask.create(jsonTask);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 自动分配空位
|
||||
* @param whereJson {
|
||||
* sect_code: 库区编码
|
||||
* storagevehicle_code: 载具编码
|
||||
* }
|
||||
* @return Structattr 仓位实体类
|
||||
*/
|
||||
private Structattr autoDivStruct(JSONObject whereJson) {
|
||||
List<Structattr> attrList = iStructattrService.list(
|
||||
new QueryWrapper<Structattr>().lambda()
|
||||
.eq(Structattr::getIs_delete, IOSConstant.IS_DELETE_NO)
|
||||
.eq(Structattr::getIs_used, IOSConstant.IS_DELETE_YES)
|
||||
.eq(Structattr::getStoragevehicle_code, whereJson.getString("storagevehicle_code"))
|
||||
);
|
||||
|
||||
if (ObjectUtil.isNotEmpty(attrList)) {
|
||||
throw new BadRequestException("该载具已在库内【" + whereJson.getString("storagevehicle_code") + "】");
|
||||
}
|
||||
|
||||
// 根据库区查询对应库位
|
||||
Structattr structattr = iStructattrService.getOne(new LambdaQueryWrapper<>(Structattr.class)
|
||||
.eq(Structattr::getSect_code, whereJson.getString("sect_code"))
|
||||
.eq(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定"))
|
||||
.eq(Structattr::getIs_delete, IOSConstant.IS_DELETE_NO)
|
||||
.eq(Structattr::getIs_used, IOSConstant.IS_DELETE_YES)
|
||||
.and(wrapper -> wrapper.isNull(Structattr::getStoragevehicle_code).or().eq(Structattr::getStoragevehicle_code, ""))
|
||||
.orderByAsc(Structattr::getStruct_code)
|
||||
);
|
||||
|
||||
if (ObjectUtil.isEmpty(structattr)) {
|
||||
throw new BadRequestException("未找到满足的仓位");
|
||||
}
|
||||
return structattr;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,106 @@
|
||||
package org.nl.wms.warehouse_management.service.impl;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import org.nl.common.domain.query.PageQuery;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.wms.basedata_manage.service.IStructattrService;
|
||||
import org.nl.wms.basedata_manage.service.dao.Structattr;
|
||||
import org.nl.wms.sch_manage.service.dao.mapper.SchBaseTaskMapper;
|
||||
import org.nl.wms.sch_manage.service.util.tasks.EmpVehicleOutTask;
|
||||
import org.nl.wms.warehouse_management.enums.IOSConstant;
|
||||
import org.nl.wms.warehouse_management.enums.IOSEnum;
|
||||
import org.nl.wms.warehouse_management.service.VehicleOutService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 空载具出库 实现类
|
||||
* </p>
|
||||
*
|
||||
* @author Liuxy
|
||||
* @since 2025-08-13
|
||||
*/
|
||||
@Service
|
||||
public class VehicleOutServiceImpl implements VehicleOutService {
|
||||
|
||||
/**
|
||||
* 任务服务
|
||||
*/
|
||||
@Autowired
|
||||
private SchBaseTaskMapper schBaseTaskMapper;
|
||||
|
||||
/**
|
||||
* 仓位服务
|
||||
*/
|
||||
@Resource
|
||||
private IStructattrService iStructattrService;
|
||||
|
||||
/**
|
||||
* 空载具入库任务类
|
||||
*/
|
||||
@Resource
|
||||
private EmpVehicleOutTask empVehicleOutTask;
|
||||
|
||||
@Override
|
||||
public IPage<JSONObject> queryAll(Map whereJson, PageQuery page) {
|
||||
whereJson.put("config_code", EmpVehicleOutTask.class.getSimpleName());
|
||||
return schBaseTaskMapper.getVehicleTask(new Page<>(page.getPage() + 1, page.getSize()), whereJson);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public void create(JSONObject whereJson) {
|
||||
// 根据库区找空载具
|
||||
Structattr structattr = autoDivStruct(whereJson);
|
||||
// 锁定仓位
|
||||
structattr.setLock_type(IOSEnum.LOCK_TYPE.code("空托盘出库锁"));
|
||||
iStructattrService.updateById(structattr);
|
||||
|
||||
// 创建任务
|
||||
JSONObject jsonTask = new JSONObject();
|
||||
jsonTask.put("point_code1", structattr.getStruct_code());
|
||||
jsonTask.put("point_code2", IOSConstant.CZW_POINT);
|
||||
// 判断终点是否是称重位
|
||||
jsonTask.put("point_code3", whereJson.getString("point_code").equals(IOSConstant.CZW_POINT)
|
||||
? "" : whereJson.getString("point_code")
|
||||
);
|
||||
jsonTask.put("vehicle_code", structattr.getStoragevehicle_code());
|
||||
empVehicleOutTask.create(jsonTask);
|
||||
}
|
||||
|
||||
/**
|
||||
* 自动分配空位
|
||||
*
|
||||
* @param whereJson {
|
||||
* sect_code: 库区编码
|
||||
* }
|
||||
* @return Structattr 仓位实体类
|
||||
*/
|
||||
private Structattr autoDivStruct(JSONObject whereJson) {
|
||||
|
||||
// 根据库区查询对应载具
|
||||
Structattr structattr = iStructattrService.getOne(new LambdaQueryWrapper<>(Structattr.class)
|
||||
.eq(Structattr::getSect_code, whereJson.getString("sect_code"))
|
||||
.eq(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定"))
|
||||
.eq(Structattr::getIs_delete, IOSConstant.IS_DELETE_NO)
|
||||
.eq(Structattr::getIs_used, IOSConstant.IS_DELETE_YES)
|
||||
.eq(Structattr::getIs_emptyvehicle, IOSConstant.IS_DELETE_YES)
|
||||
.and(wrapper -> wrapper.isNotNull(Structattr::getStoragevehicle_code).or().ne(Structattr::getStoragevehicle_code, ""))
|
||||
.orderByAsc(Structattr::getStruct_code)
|
||||
);
|
||||
|
||||
if (ObjectUtil.isEmpty(structattr)) {
|
||||
throw new BadRequestException("未找到满足的仓位");
|
||||
}
|
||||
return structattr;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user