opt: LMS解包区、工单
This commit is contained in:
@@ -104,4 +104,16 @@ public class PdaJBController {
|
||||
public ResponseEntity<Object> outRegion(@RequestBody JSONObject whereJson) {
|
||||
return new ResponseEntity<>(pdaJBService.outRegion(whereJson), HttpStatus.OK);
|
||||
}
|
||||
@PostMapping("/combination")
|
||||
@Log("组盘")
|
||||
@SaIgnore
|
||||
public ResponseEntity<Object> combination(@RequestBody JSONObject whereJson) {
|
||||
return new ResponseEntity<>(pdaJBService.combination(whereJson), HttpStatus.OK);
|
||||
}
|
||||
@PostMapping("/suppList")
|
||||
@Log("组盘")
|
||||
@SaIgnore
|
||||
public ResponseEntity<Object> suppList(@RequestBody JSONObject whereJson) {
|
||||
return new ResponseEntity<>(pdaJBService.suppList(whereJson), HttpStatus.OK);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -58,4 +58,8 @@ public interface PdaJBService {
|
||||
PdaResponse intoRegion(JSONObject param);
|
||||
|
||||
PdaResponse outRegion(JSONObject param);
|
||||
|
||||
PdaResponse combination(JSONObject param);
|
||||
|
||||
PdaResponse suppList(JSONObject param);
|
||||
}
|
||||
|
||||
@@ -9,19 +9,14 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import lombok.SneakyThrows;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.common.domain.vo.SelectItemVo;
|
||||
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.wms.basedata_manage.enums.BaseDataEnum;
|
||||
import org.nl.wms.basedata_manage.service.IMdMeMaterialbaseService;
|
||||
import org.nl.wms.basedata_manage.service.IMdPbStoragevehicleinfoService;
|
||||
import org.nl.wms.basedata_manage.service.ISectattrService;
|
||||
import org.nl.wms.basedata_manage.service.IStructattrService;
|
||||
import org.nl.wms.basedata_manage.service.dao.MdMeMaterialbase;
|
||||
import org.nl.wms.basedata_manage.service.dao.MdPbStoragevehicleinfo;
|
||||
import org.nl.wms.basedata_manage.service.dao.Sectattr;
|
||||
import org.nl.wms.basedata_manage.service.dao.Structattr;
|
||||
import org.nl.wms.basedata_manage.service.*;
|
||||
import org.nl.wms.basedata_manage.service.dao.*;
|
||||
import org.nl.wms.pda_manage.sch_manage.service.GroupInfoPdaVo;
|
||||
import org.nl.wms.pda_manage.sch_manage.service.PdaJBService;
|
||||
import org.nl.wms.pda_manage.sch_manage.service.mapper.PdaJBMapper;
|
||||
@@ -30,11 +25,13 @@ import org.nl.wms.pm_manage.service.IPdmBdWorkorderService;
|
||||
import org.nl.wms.pm_manage.service.dao.PdmBdWorkorder;
|
||||
import org.nl.wms.record_manage.service.IMdPbRegionMemberService;
|
||||
import org.nl.wms.record_manage.service.dao.MdPbRegionMember;
|
||||
import org.nl.wms.sch_manage.enums.TaskFinishedTypeEnum;
|
||||
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.TaskUtils;
|
||||
import org.nl.wms.sch_manage.service.util.tasks.jb.JbUpAgvTask;
|
||||
import org.nl.wms.system_manage.enums.TagNameEnum;
|
||||
import org.nl.wms.system_manage.service.dict.ISysDictService;
|
||||
@@ -64,6 +61,7 @@ import java.math.BigDecimal;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.function.Consumer;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @Author: lyd
|
||||
@@ -114,6 +112,8 @@ public class PdaJBServiceImpl implements PdaJBService {
|
||||
private RedissonClient redissonClient;
|
||||
@Resource
|
||||
private ISchBaseTaskService taskService;
|
||||
@Resource
|
||||
private IMdCsSupplierbaseService supplierbaseService;
|
||||
@Override
|
||||
public PdaResponse getOrderList(JSONObject whereJson) {
|
||||
String flag = whereJson.getString("flag");
|
||||
@@ -418,20 +418,27 @@ public class PdaJBServiceImpl implements PdaJBService {
|
||||
if ("2".equals(res.getString("flag"))) {
|
||||
throw new BadRequestException(res.getString("message"));
|
||||
}
|
||||
// 获取组盘信息
|
||||
GroupPlate groupPlate = groupplateService.getOne(new LambdaQueryWrapper<GroupPlate>()
|
||||
.eq(GroupPlate::getStoragevehicle_code, vehicleCode)
|
||||
.eq(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("组盘")));
|
||||
if (ObjectUtil.isEmpty(groupPlate)) {
|
||||
throw new BadRequestException("料桶:" + vehicleCode + " 未组盘,请先组盘!");
|
||||
|
||||
MdPbStoragevehicleinfo vehicleInfo = storagevehicleinfoService.getByCode(vehicleCode);
|
||||
if (ObjectUtil.isEmpty(vehicleInfo)) {
|
||||
throw new BadRequestException("载具:" + vehicleCode + " 号不存在,请到LMS的载具维护中进行维护!");
|
||||
|
||||
}
|
||||
Structattr structattr = structattrService.getByCode(pointCode);
|
||||
if (ObjectUtil.isEmpty(structattr)) {
|
||||
throw new BadRequestException("仓位:" + pointCode + " 不存在!");
|
||||
}
|
||||
MdPbStoragevehicleinfo vehicleInfo = storagevehicleinfoService.getByCode(vehicleCode);
|
||||
if (ObjectUtil.isEmpty(vehicleInfo)) {
|
||||
throw new BadRequestException("载具:" + vehicleCode + " 的信息不存在!");
|
||||
// 获取组盘信息
|
||||
GroupPlate groupPlate = groupplateService.getOne(new LambdaQueryWrapper<GroupPlate>()
|
||||
.eq(GroupPlate::getStoragevehicle_code, vehicleCode)
|
||||
.eq(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("组盘")));
|
||||
if (ObjectUtil.isEmpty(groupPlate)) {
|
||||
structattr.setStoragevehicle_code(vehicleCode);
|
||||
structattr.setStoragevehicle_type(vehicleInfo.getStoragevehicle_type());
|
||||
structattr.setOccupancy_state(2);
|
||||
TaskUtils.setUpdateByType(structattr, TaskFinishedTypeEnum.MANUAL_PDA);
|
||||
structattrService.updateById(structattr);
|
||||
return PdaResponse.requestOk("空桶进入设置成功!");
|
||||
}
|
||||
MdMeMaterialbase materialbase = materialbaseService.getById(groupPlate.getMaterial_id());
|
||||
if (ObjectUtil.isEmpty(materialbase)) {
|
||||
@@ -538,6 +545,9 @@ public class PdaJBServiceImpl implements PdaJBService {
|
||||
throw new BadRequestException("设备:" + pointCode + " 不存在!");
|
||||
}
|
||||
MdPbStoragevehicleinfo vehicleInfo = storagevehicleinfoService.getByCode(tpCode);
|
||||
if (ObjectUtil.isEmpty(vehicleInfo)) {
|
||||
throw new BadRequestException("载具信息不存在!");
|
||||
}
|
||||
MdMeMaterialbase materialbase = materialbaseService.getById(workOrder.getMaterial_id());
|
||||
if (ObjectUtil.isEmpty(materialbase)) {
|
||||
throw new BadRequestException("物料【" + workOrder.getMaterial_id() + "】不存在!");
|
||||
@@ -637,11 +647,16 @@ public class PdaJBServiceImpl implements PdaJBService {
|
||||
@Override
|
||||
public PdaResponse jbGetLtInfo(JSONObject param) {
|
||||
String vehicleCode = param.getString("vehicle_code");
|
||||
String struct_code = param.getString("struct_code");
|
||||
List<GroupInfoPdaVo> groups = pdaJBMapper.getGroupInfoByVehicle(vehicleCode, "01");
|
||||
if (groups.size() > 1) {
|
||||
throw new BadRequestException("组盘信息错误!");
|
||||
}
|
||||
return PdaResponse.requestParamOk(groups.size() > 0 ? groups.get(0) : null);
|
||||
Structattr struct = structattrService.findByCode(struct_code);
|
||||
String message = "当前位置是" + (1 == struct.getOccupancy_state()
|
||||
? "空位" : 2 == struct.getOccupancy_state() ? "空载具"
|
||||
: "有料,但是找不到对应的组盘信息");
|
||||
return PdaResponse.requestParamOk(groups.size() > 0 ? groups.get(0) : message);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -681,7 +696,7 @@ public class PdaJBServiceImpl implements PdaJBService {
|
||||
@Override
|
||||
public PdaResponse intoRegion(JSONObject param) {
|
||||
String regionCode = param.getString("region_code");
|
||||
String nickname = param.getString("nickname");
|
||||
String nickname = SecurityUtils.getCurrentNickName();
|
||||
MdPbRegionMember pbRegionMember = regionMemberService.getOne(new LambdaQueryWrapper<MdPbRegionMember>()
|
||||
.eq(MdPbRegionMember::getRegion_code, regionCode)
|
||||
.eq(MdPbRegionMember::getInto_member, nickname)
|
||||
@@ -703,7 +718,7 @@ public class PdaJBServiceImpl implements PdaJBService {
|
||||
public PdaResponse outRegion(JSONObject param) {
|
||||
// region_code、nickname、rows
|
||||
String regionCode = param.getString("region_code");
|
||||
String nickname = param.getString("nickname");
|
||||
String nickname = SecurityUtils.getCurrentNickName();
|
||||
JSONArray rows = param.getJSONArray("rows");
|
||||
List<MdPbRegionMember> memberRecords;
|
||||
if (rows.size() > 0) {
|
||||
@@ -726,6 +741,58 @@ public class PdaJBServiceImpl implements PdaJBService {
|
||||
return PdaResponse.requestOk();
|
||||
}
|
||||
|
||||
@Override
|
||||
public PdaResponse combination(JSONObject param) {
|
||||
// vehicle_code、material_id、pcsn、supp_code、supp_name、single_weight
|
||||
String currentUserId = SecurityUtils.getCurrentUserId();
|
||||
String nickName = SecurityUtils.getCurrentNickName();
|
||||
String now = DateUtil.now();
|
||||
String tpCode = param.getString("vehicle_code");
|
||||
String pcsn = param.getString("pcsn");
|
||||
String material_id = param.getString("material_id");
|
||||
String supp_code = param.getString("supp_code");
|
||||
String supp_name = param.getString("supp_name");
|
||||
String single_weight = param.getString("single_weight");
|
||||
MdPbStoragevehicleinfo vehicleInfo = storagevehicleinfoService.getByCode(tpCode);
|
||||
if (ObjectUtil.isEmpty(vehicleInfo)) {
|
||||
throw new BadRequestException("载具信息不存在!");
|
||||
}
|
||||
MdMeMaterialbase materialbase = materialbaseService.getById(material_id);
|
||||
if (ObjectUtil.isEmpty(materialbase)) {
|
||||
throw new BadRequestException("物料不存在!");
|
||||
}
|
||||
GroupPlate groupPlate = new GroupPlate();
|
||||
groupPlate.setGroup_id(IdUtil.getStringId());
|
||||
groupPlate.setStoragevehicle_code(tpCode);
|
||||
// 料桶类型根据工单,工单是根据点位
|
||||
groupPlate.setStoragevehicle_type(vehicleInfo.getStoragevehicle_type());
|
||||
groupPlate.setMaterial_id(material_id);
|
||||
groupPlate.setQty_unit_id("11");
|
||||
groupPlate.setQty_unit_name("kg");
|
||||
groupPlate.setFrozen_qty(BigDecimal.ZERO);
|
||||
groupPlate.setStatus(IOSEnum.GROUP_PLATE_STATUS.code("组盘"));
|
||||
groupPlate.setCreate_id(currentUserId);
|
||||
groupPlate.setCreate_name(nickName);
|
||||
groupPlate.setCreate_time(now);
|
||||
groupPlate.setPcsn(pcsn);
|
||||
groupPlate.setQty(new BigDecimal(single_weight));
|
||||
groupPlate.setSupp_code(supp_code);
|
||||
groupPlate.setSupp_name(supp_name);
|
||||
groupplateService.save(groupPlate);
|
||||
return PdaResponse.requestOk();
|
||||
}
|
||||
|
||||
@Override
|
||||
public PdaResponse suppList(JSONObject param) {
|
||||
List<MdCsSupplierbase> list = supplierbaseService.list();
|
||||
List<SelectItemVo> collect = list.stream().map(p -> SelectItemVo
|
||||
.builder()
|
||||
.text(p.getSupp_name())
|
||||
.value(p.getSupp_code())
|
||||
.build()).collect(Collectors.toList());
|
||||
return PdaResponse.requestParamOk(collect);
|
||||
}
|
||||
|
||||
private Map<String, Object> buildTaskData(String pointCode, String workorderId, String invId) {
|
||||
Map<String, Object> jsonMst = new HashMap<>();
|
||||
// ru库点
|
||||
|
||||
@@ -40,6 +40,17 @@ public class PdaResponse<T> {
|
||||
.build();
|
||||
}
|
||||
|
||||
/**
|
||||
* 带数据反馈
|
||||
* @return ErpResponse
|
||||
*/
|
||||
public static PdaResponse requestOk(String message) {
|
||||
return PdaResponse.builder()
|
||||
.code("200")
|
||||
.message(message)
|
||||
.build();
|
||||
}
|
||||
|
||||
/**
|
||||
* 带数据反馈
|
||||
* @return ErpResponse
|
||||
|
||||
@@ -59,7 +59,18 @@ public class PdmBdWorkorderController {
|
||||
pdmBdWorkorderService.deleteAll(ids);
|
||||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/submits")
|
||||
@Log("开工")
|
||||
public ResponseEntity<Object> submits(@RequestBody PdmBdWorkorder entity) {
|
||||
pdmBdWorkorderService.submits(entity);
|
||||
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
|
||||
}
|
||||
@PostMapping("/loadComplete")
|
||||
@Log("上料完成")
|
||||
public ResponseEntity<Object> loadComplete(@RequestBody PdmBdWorkorder entity) {
|
||||
pdmBdWorkorderService.loadComplete(entity);
|
||||
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
|
||||
}
|
||||
@PostMapping("/forceFinish")
|
||||
@Log("强制完工")
|
||||
public ResponseEntity<Object> forceFinish(@RequestBody PdmBdWorkorder entity) {
|
||||
|
||||
@@ -26,7 +26,7 @@ public enum WorkOrderStatusEnum {
|
||||
/**
|
||||
* 暂停 x
|
||||
*/
|
||||
STOP("4", "暂停"),
|
||||
STOP("4", "等待下料"),
|
||||
/**
|
||||
* 完成
|
||||
*/
|
||||
|
||||
@@ -78,4 +78,12 @@ public interface IPdmBdWorkorderService extends IService<PdmBdWorkorder> {
|
||||
* @return
|
||||
*/
|
||||
IPage<GroupPlate> getStockMaterial(PdmBdWorkorderQuery entity, PageQuery pageQuery);
|
||||
|
||||
/**
|
||||
* 开工
|
||||
* @param entity
|
||||
*/
|
||||
void submits(PdmBdWorkorder entity);
|
||||
|
||||
void loadComplete(PdmBdWorkorder entity);
|
||||
}
|
||||
|
||||
@@ -17,14 +17,17 @@ import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.common.utils.CodeUtil;
|
||||
import org.nl.common.utils.CommonUtils;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.wms.pda_manage.sch_manage.service.PdaJBService;
|
||||
import org.nl.wms.pm_manage.enums.WorkOrderStatusEnum;
|
||||
import org.nl.wms.pm_manage.service.IPdmBdWorkorderService;
|
||||
import org.nl.wms.pm_manage.service.dao.PdmBdWorkorder;
|
||||
import org.nl.wms.pm_manage.service.dao.mapper.PdmBdWorkorderMapper;
|
||||
import org.nl.wms.pm_manage.service.dto.PdmBdWorkorderQuery;
|
||||
import org.nl.wms.sch_manage.enums.TaskFinishedTypeEnum;
|
||||
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.util.TaskUtils;
|
||||
import org.nl.wms.system_manage.service.notice.ISysNoticeService;
|
||||
import org.nl.wms.warehouse_manage.service.IMdPbGroupplateService;
|
||||
import org.nl.wms.warehouse_manage.service.dao.GroupPlate;
|
||||
@@ -56,6 +59,8 @@ public class PdmBdWorkorderServiceImpl extends ServiceImpl<PdmBdWorkorderMapper,
|
||||
private ISchBaseTaskService taskService;
|
||||
@Autowired
|
||||
private IMdPbGroupplateService groupplateService;
|
||||
@Autowired
|
||||
private PdaJBService pdaJBService;
|
||||
|
||||
@Override
|
||||
public IPage<PdmBdWorkorder> queryAll(PdmBdWorkorderQuery query, PageQuery page) {
|
||||
@@ -166,6 +171,31 @@ public class PdmBdWorkorderServiceImpl extends ServiceImpl<PdmBdWorkorderMapper,
|
||||
return pages;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void submits(PdmBdWorkorder entity) {
|
||||
JSONObject param = new JSONObject();
|
||||
param.put("area", "DDJBQ");
|
||||
param.put("workorder_id", entity.getWorkorder_id());
|
||||
param.put("point_code", entity.getPoint_code());
|
||||
pdaJBService.callMaterial(param);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void loadComplete(PdmBdWorkorder entity) {
|
||||
PdmBdWorkorder order = getById(entity.getWorkorder_id());
|
||||
if (ObjectUtil.isEmpty(order)) {
|
||||
throw new BadRequestException("工单不存在!");
|
||||
}
|
||||
int enumCode = Integer.parseInt(WorkOrderStatusEnum.PRODUCING.getCode());
|
||||
int orderStatus = Integer.parseInt(order.getWorkorder_status());
|
||||
if (enumCode <= orderStatus) {
|
||||
throw new BadRequestException("工单状态不是未生产或者执行中!");
|
||||
}
|
||||
order.setWorkorder_status(WorkOrderStatusEnum.STOP.getCode());
|
||||
TaskUtils.setUpdateByType(order, TaskFinishedTypeEnum.MANUAL_PC);
|
||||
updateById(order);
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断工单是否下发、当天工单
|
||||
* 判断逻辑不能过于复杂,因此提取出来
|
||||
|
||||
@@ -5,6 +5,8 @@ import cn.hutool.core.util.ObjectUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.wms.basedata_manage.service.dao.Structattr;
|
||||
import org.nl.wms.pm_manage.service.dao.PdmBdWorkorder;
|
||||
import org.nl.wms.sch_manage.enums.TaskFinishedTypeEnum;
|
||||
import org.nl.wms.sch_manage.service.dao.SchBasePoint;
|
||||
import org.nl.wms.sch_manage.service.dao.SchBaseTask;
|
||||
@@ -104,4 +106,53 @@ public class TaskUtils {
|
||||
setUpdateByPC(groupPlate);
|
||||
}
|
||||
}
|
||||
|
||||
public static void setUpdateByAcs(PdmBdWorkorder order) {
|
||||
order.setUpdate_id(GeneralDefinition.ACS_ID);
|
||||
order.setUpdate_name(GeneralDefinition.ACS_NAME);
|
||||
order.setUpdate_time(DateUtil.now());
|
||||
}
|
||||
|
||||
public static void setUpdateByPC(PdmBdWorkorder order) {
|
||||
order.setUpdate_id(SecurityUtils.getCurrentUserId());
|
||||
order.setUpdate_name(SecurityUtils.getCurrentNickName());
|
||||
order.setUpdate_time(DateUtil.now());
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据类型去判断谁修改的
|
||||
* @param order
|
||||
* @param taskFinishedType
|
||||
*/
|
||||
public static void setUpdateByType(PdmBdWorkorder order, TaskFinishedTypeEnum taskFinishedType) {
|
||||
if (taskFinishedType.equals(TaskFinishedTypeEnum.AUTO_ACS)) {
|
||||
setUpdateByAcs(order);
|
||||
} else {
|
||||
setUpdateByPC(order);
|
||||
}
|
||||
}
|
||||
public static void setUpdateByAcs(Structattr order) {
|
||||
order.setUpdate_id(GeneralDefinition.ACS_ID);
|
||||
order.setUpdate_name(GeneralDefinition.ACS_NAME);
|
||||
order.setUpdate_time(DateUtil.now());
|
||||
}
|
||||
|
||||
public static void setUpdateByPC(Structattr order) {
|
||||
order.setUpdate_id(SecurityUtils.getCurrentUserId());
|
||||
order.setUpdate_name(SecurityUtils.getCurrentNickName());
|
||||
order.setUpdate_time(DateUtil.now());
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据类型去判断谁修改的
|
||||
* @param order
|
||||
* @param taskFinishedType
|
||||
*/
|
||||
public static void setUpdateByType(Structattr order, TaskFinishedTypeEnum taskFinishedType) {
|
||||
if (taskFinishedType.equals(TaskFinishedTypeEnum.AUTO_ACS)) {
|
||||
setUpdateByAcs(order);
|
||||
} else {
|
||||
setUpdateByPC(order);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user