Merge remote-tracking branch 'origin/master'
This commit is contained in:
@@ -8,8 +8,10 @@ import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.common.logging.annotation.Log;
|
||||
import org.nl.wms.ext.service.AcsToWmsService;
|
||||
import org.nl.wms.ext.service.IotToWmsService;
|
||||
import org.nl.wms.ext.service.dto.to.iot.BendReq;
|
||||
import org.nl.wms.ext.service.dto.to.iot.IotOrdersReq;
|
||||
import org.nl.wms.ext.service.dto.to.iot.IotPartsReq;
|
||||
import org.nl.wms.ext.service.dto.to.iot.SortingReq;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
@@ -52,4 +54,48 @@ public class IotToWmsController {
|
||||
return new ResponseEntity<>(iotToWmsService.orders(iotOrdersReq), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/sortingMaterialInfo")
|
||||
@Log("分拣系统查询库存")
|
||||
@ApiOperation("sorting系统查询库存")
|
||||
public ResponseEntity<Object> sortingMaterialInfo(@RequestBody SortingReq sortingReq) {
|
||||
return new ResponseEntity<>(iotToWmsService.sortingMaterialInfo(sortingReq), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/sortingCallMaterial")
|
||||
@Log("分拣系统下发叫料请求")
|
||||
@ApiOperation("分拣系统下发叫料请求")
|
||||
public ResponseEntity<Object> fjMaterialInfo(@RequestBody SortingReq sortingReq) {
|
||||
return new ResponseEntity<>(iotToWmsService.sortingCallMaterial(sortingReq), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/sortingBack")
|
||||
@Log("分拣系统下发回库请求")
|
||||
@ApiOperation("分拣系统下发回库请求")
|
||||
public ResponseEntity<Object> sortingBack(@RequestBody SortingReq sortingReq) {
|
||||
return new ResponseEntity<>(iotToWmsService.sortingBack(sortingReq), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/sortingBackMaterial")
|
||||
@Log("分拣系统下发回库托盘物料信息")
|
||||
@ApiOperation("分拣系统下发回库托盘物料信息")
|
||||
public ResponseEntity<Object> sortingBackMaterial(@RequestBody SortingReq sortingReq) {
|
||||
return new ResponseEntity<>(iotToWmsService.sortingBackMaterial(sortingReq), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/autoBendMaterialInfo")
|
||||
@Log("自动折弯系统查询物料库存")
|
||||
@ApiOperation("自动折弯系统查询物料库存")
|
||||
public ResponseEntity<Object> autoBendMaterialInfo(@RequestBody BendReq bendReq) {
|
||||
return new ResponseEntity<>(iotToWmsService.autoBendMaterialInfo(bendReq), HttpStatus.OK);
|
||||
}
|
||||
|
||||
|
||||
@PostMapping("/autoBendCallMaterial")
|
||||
@Log("自动折弯上料")
|
||||
@ApiOperation("自动折弯上料")
|
||||
public ResponseEntity<Object> autoBendCallMaterial(@RequestBody BendReq bendReq) {
|
||||
return new ResponseEntity<>(iotToWmsService.autoBendCallMaterial(bendReq), HttpStatus.OK);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -2,8 +2,14 @@ package org.nl.wms.ext.service;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import org.nl.wms.ext.service.dto.to.BaseResponse;
|
||||
import org.nl.wms.ext.service.dto.to.iot.BendReq;
|
||||
import org.nl.wms.ext.service.dto.to.iot.IotOrdersReq;
|
||||
import org.nl.wms.ext.service.dto.to.iot.IotPartsReq;
|
||||
import org.nl.wms.ext.service.dto.to.iot.SortingReq;
|
||||
import org.nl.wms.sch.group.service.dao.SchBaseVehiclematerialgroup;
|
||||
import org.nl.wms.sch.materialBind.service.dao.MaterialVehicleBind;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Author: sxp
|
||||
@@ -17,4 +23,15 @@ public interface IotToWmsService {
|
||||
|
||||
JSONObject orders(IotOrdersReq iotOrdersReq);
|
||||
|
||||
List<SchBaseVehiclematerialgroup> sortingMaterialInfo(SortingReq sortingReq);
|
||||
|
||||
BaseResponse sortingCallMaterial(SortingReq sortingReq);
|
||||
|
||||
BaseResponse sortingBack(SortingReq sortingReq);
|
||||
|
||||
BaseResponse sortingBackMaterial(SortingReq sortingReq);
|
||||
|
||||
List<SchBaseVehiclematerialgroup> autoBendMaterialInfo(BendReq bendReq);
|
||||
|
||||
BaseResponse autoBendCallMaterial(BendReq bendReq);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
package org.nl.wms.ext.service.dto.to.iot;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* @author songxiaopeng
|
||||
*/
|
||||
@Data
|
||||
public class BendReq {
|
||||
//订单号
|
||||
private String order;
|
||||
//组盘ID
|
||||
private String groupId;
|
||||
//请求点位
|
||||
private String endDeviceCode;
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
package org.nl.wms.ext.service.dto.to.iot;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* @author Administrator
|
||||
*/
|
||||
@Data
|
||||
public class SortingReq {
|
||||
private String order;
|
||||
private String startDeviceCode;
|
||||
private String endDeviceCode;
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
package org.nl.wms.ext.service.dto.to.iot;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* @author Administrator
|
||||
*/
|
||||
@Data
|
||||
public class SortingStock {
|
||||
private String vehicleCode;
|
||||
private String materialCode;
|
||||
private String materialName;
|
||||
private String orderCode;
|
||||
}
|
||||
@@ -1,17 +1,31 @@
|
||||
package org.nl.wms.ext.service.impl;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.wms.ext.service.AcsToWmsService;
|
||||
import org.nl.wms.ext.service.IotToWmsService;
|
||||
import org.nl.wms.ext.service.dto.to.BaseResponse;
|
||||
import org.nl.wms.ext.service.dto.to.iot.BendReq;
|
||||
import org.nl.wms.ext.service.dto.to.iot.IotOrdersReq;
|
||||
import org.nl.wms.ext.service.dto.to.iot.IotPartsReq;
|
||||
import org.nl.wms.ext.service.dto.to.iot.SortingReq;
|
||||
import org.nl.wms.pda.service.dao.vo.PdaResponseVo;
|
||||
import org.nl.wms.sch.group.service.ISchBaseVehiclematerialgroupService;
|
||||
import org.nl.wms.sch.group.service.dao.SchBaseVehiclematerialgroup;
|
||||
import org.nl.wms.sch.materialBind.service.IMaterialVehicleBindService;
|
||||
import org.nl.wms.sch.materialBind.service.dao.MaterialVehicleBind;
|
||||
import org.nl.wms.sch.task_manage.enums.GroupBindMaterialStatusEnum;
|
||||
import org.nl.wms.sch.task_manage.enums.GroupStatusEnum;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Lazy;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author sxp
|
||||
*/
|
||||
@@ -22,6 +36,12 @@ public class IotToWmsServiceImpl implements IotToWmsService {
|
||||
@Autowired
|
||||
private AcsToWmsService acsToWmsService;
|
||||
|
||||
@Autowired
|
||||
private IMaterialVehicleBindService materialVehicleBindService;
|
||||
|
||||
@Autowired
|
||||
private ISchBaseVehiclematerialgroupService schBaseVehiclematerialgroupService;
|
||||
|
||||
@Override
|
||||
public JSONObject acsApply(JSONObject param) {
|
||||
// return acsToWmsService.acsApply(param);
|
||||
@@ -51,4 +71,89 @@ public class IotToWmsServiceImpl implements IotToWmsService {
|
||||
return resultJson;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<SchBaseVehiclematerialgroup> sortingMaterialInfo(SortingReq sortingReq) {
|
||||
//todo 现在是查询该订单下的所有组盘信息
|
||||
// 需确认是否只查询分拣后的物料 以及需要把组盘绑定的物料信息都查出来
|
||||
String order = sortingReq.getOrder();
|
||||
return schBaseVehiclematerialgroupService.selectByOrder(order);
|
||||
}
|
||||
|
||||
@Override
|
||||
public BaseResponse sortingCallMaterial(SortingReq sortingReq) {
|
||||
JSONObject param = new JSONObject();
|
||||
param.put("taskCode", IdUtil.getSnowflake(1, 1).nextIdStr());
|
||||
param.put("taskType", "FJSLTask");
|
||||
param.put("start_device_code", sortingReq.getStartDeviceCode());
|
||||
param.put("end_device_code", sortingReq.getEndDeviceCode());
|
||||
acsToWmsService.acsApply(param);
|
||||
return BaseResponse.responseOk("任务下发成功");
|
||||
}
|
||||
|
||||
@Override
|
||||
public BaseResponse sortingBack(SortingReq sortingReq) {
|
||||
JSONObject param = new JSONObject();
|
||||
param.put("taskCode", IdUtil.getSnowflake(1, 1).nextIdStr());
|
||||
param.put("taskType", "FJHKTask");
|
||||
param.put("start_device_code", sortingReq.getStartDeviceCode());
|
||||
acsToWmsService.acsApply(param);
|
||||
return BaseResponse.responseOk("任务下发成功");
|
||||
}
|
||||
|
||||
@Override
|
||||
public BaseResponse sortingBackMaterial(SortingReq sortingReq) {
|
||||
// SchBaseVehiclematerialgroup groupEntity = new SchBaseVehiclematerialgroup();
|
||||
// groupEntity.setGroup_id(IdUtil.getSnowflake(1, 1).nextIdStr());
|
||||
// groupEntity.setCreate_id("2");
|
||||
// groupEntity.setCreate_name("ACS");
|
||||
// groupEntity.setCreate_time(DateUtil.now());
|
||||
// groupEntity.setVehicle_code(jsonObject.getString("vehicle_code"));
|
||||
// groupEntity.setVehicle_type(schBaseTask.getVehicle_type());
|
||||
// groupEntity.setPoint_code(startPoint.getPoint_code());
|
||||
// groupEntity.setPoint_name(startPoint.getPoint_name());
|
||||
// groupEntity.setPcsn(DateUtil.format(DateUtil.date(), "yyyyMMdd"));
|
||||
// groupEntity.setInstorage_time(DateUtil.now());
|
||||
// groupEntity.setTask_code(schBaseTask.getTask_code());
|
||||
// groupEntity.setMove_way(startPoint.getPoint_code());
|
||||
// groupEntity.setGroup_bind_material_status(GroupBindMaterialStatusEnum.BOUND.getValue()); // 绑定
|
||||
// groupEntity.setGroup_status(GroupStatusEnum.IN_STORAGE.getType()); // 暂时不维护。
|
||||
// groupEntity.setIs_delete(false);
|
||||
// vehiclematerialgroupService.save(groupEntity);
|
||||
// //todo 多个物料信息绑定
|
||||
// MaterialVehicleBind materialVehicleBind = new MaterialVehicleBind();
|
||||
// materialVehicleBind.setId(IdUtil.getSnowflake(1, 1).nextIdStr());
|
||||
// materialVehicleBind.setCreate_time(DateUtil.now());
|
||||
// materialVehicleBind.setVehicle_code(jsonObject.getString("vehicle_code"));
|
||||
// materialVehicleBind.setGroup_id(groupEntity.getGroup_id());
|
||||
// materialVehicleBind.setMaterial_code(jsonObject.getString("material_code"));
|
||||
// materialVehicleBind.setMaterial_name(jsonObject.getString("material_name"));
|
||||
// materialVehicleBind.setOrder_code(jsonObject.getString("order_code"));
|
||||
// materialVehicleBindService.save(materialVehicleBind);
|
||||
return BaseResponse.responseOk("物料信息接收成功");
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<SchBaseVehiclematerialgroup> autoBendMaterialInfo(BendReq bendReq) {
|
||||
//todo 现在是查询该订单下的所有组盘信息
|
||||
// 需确认是否只查询分拣后的物料 以及需要把组盘绑定的物料信息都查出来
|
||||
String order = bendReq.getOrder();
|
||||
return schBaseVehiclematerialgroupService.selectByOrder(order);
|
||||
}
|
||||
|
||||
@Override
|
||||
public BaseResponse autoBendCallMaterial(BendReq bendReq) {
|
||||
String groupId = bendReq.getGroupId();
|
||||
SchBaseVehiclematerialgroup groupInfo = schBaseVehiclematerialgroupService.getById(groupId);
|
||||
if (null == groupInfo) {
|
||||
throw new BadRequestException("请求物料为空");
|
||||
}
|
||||
JSONObject param = new JSONObject();
|
||||
param.put("taskCode", IdUtil.getSnowflake(1, 1).nextIdStr());
|
||||
param.put("taskType", "ZWSLTask");
|
||||
param.put("start_device_code", groupInfo.getPoint_code());
|
||||
param.put("end_device_code", bendReq.getEndDeviceCode());
|
||||
acsToWmsService.acsApply(param);
|
||||
return BaseResponse.responseOk("任务下发成功");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -71,6 +71,13 @@ public class PdaController {
|
||||
// return new ResponseEntity<>(pdaService.zpjb(param), HttpStatus.OK);
|
||||
// }
|
||||
|
||||
@PostMapping("/cyjk")
|
||||
@Log("冲压下料位叫空")
|
||||
@ApiOperation("冲压下料位叫空")
|
||||
public ResponseEntity<Object> cyjk(@RequestBody JSONObject param){
|
||||
return new ResponseEntity<>(pdaService.cyjk(param), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/dzwck")
|
||||
@Log("待折弯件出库")
|
||||
@ApiOperation("待折弯件出库")
|
||||
@@ -119,4 +126,5 @@ public class PdaController {
|
||||
public ResponseEntity<Object> getVehicleType(){
|
||||
return new ResponseEntity<>(pdaService.getVehicleType(), HttpStatus.OK);
|
||||
}
|
||||
//todo 指令查询 指令取消、指令完成、任务完成、取消、人工组盘、解绑
|
||||
}
|
||||
|
||||
@@ -22,6 +22,8 @@ public interface PdaService {
|
||||
|
||||
PdaResponseVo zpjb(JSONObject param);
|
||||
|
||||
PdaResponseVo cyjk(JSONObject param);
|
||||
|
||||
PdaResponseVo dzwck(JSONObject param);
|
||||
|
||||
PdaResponseVo zwjk(JSONObject param);
|
||||
|
||||
@@ -138,6 +138,14 @@ public class PdaServiceImpl implements PdaService {
|
||||
return PdaResponseVo.pdaResultOk("组盘解绑成功");
|
||||
}
|
||||
|
||||
@Override
|
||||
public PdaResponseVo cyjk(JSONObject param) {
|
||||
param.put("taskCode", IdUtil.getSnowflake(1, 1).nextIdStr());
|
||||
param.put("taskType", "CYJKTask");
|
||||
acsToWmsService.acsApply(param);
|
||||
return PdaResponseVo.pdaResultOk("待折弯件出库成功");
|
||||
}
|
||||
|
||||
@Override
|
||||
public PdaResponseVo dzwck(JSONObject param) {
|
||||
param.put("taskCode", IdUtil.getSnowflake(1, 1).nextIdStr());
|
||||
|
||||
@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import org.nl.wms.sch.group.service.dao.SchBaseVehiclematerialgroup;
|
||||
import org.nl.wms.sch.group.service.dto.SchBaseVehiclematerialgroupQuery;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
@@ -49,4 +50,6 @@ public interface ISchBaseVehiclematerialgroupService extends IService<SchBaseVeh
|
||||
* @return
|
||||
*/
|
||||
SchBaseVehiclematerialgroup getGroup(JSONObject entity);
|
||||
|
||||
List<SchBaseVehiclematerialgroup> selectByOrder(String order);
|
||||
}
|
||||
|
||||
@@ -6,6 +6,8 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import org.nl.wms.sch.group.service.dao.SchBaseVehiclematerialgroup;
|
||||
import org.nl.wms.sch.group.service.dto.SchBaseVehiclematerialgroupQuery;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author lyd
|
||||
* @date 2023-05-16
|
||||
@@ -15,4 +17,6 @@ public interface SchBaseVehiclematerialgroupMapper extends BaseMapper<SchBaseVeh
|
||||
IPage<SchBaseVehiclematerialgroup> selectPageLeftJoin(IPage<SchBaseVehiclematerialgroup> pages, SchBaseVehiclematerialgroupQuery query);
|
||||
|
||||
SchBaseVehiclematerialgroup getGroup(JSONObject entity);
|
||||
|
||||
List<SchBaseVehiclematerialgroup> selectByOrder(String order);
|
||||
}
|
||||
|
||||
@@ -49,4 +49,12 @@
|
||||
</if>
|
||||
AND vg.group_bind_material_status = '2'
|
||||
</select>
|
||||
<select id="selectByOrder" resultType="org.nl.wms.sch.group.service.dao.SchBaseVehiclematerialgroup">
|
||||
SELECT *
|
||||
FROM sch_base_vehiclematerialgroup
|
||||
WHERE group_id IN (SELECT group_id
|
||||
FROM material_vehicle_bind
|
||||
WHERE order_code = #{order})
|
||||
order by point_code
|
||||
</select>
|
||||
</mapper>
|
||||
|
||||
@@ -19,6 +19,7 @@ import org.nl.wms.sch.group.service.dto.SchBaseVehiclematerialgroupQuery;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
@@ -79,4 +80,9 @@ public class SchBaseVehiclematerialgroupServiceImpl extends ServiceImpl<SchBaseV
|
||||
return vehiclematerialgroupMapper.getGroup(entity);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<SchBaseVehiclematerialgroup> selectByOrder(String order) {
|
||||
return vehiclematerialgroupMapper.selectByOrder(order);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,66 @@
|
||||
package org.nl.wms.sch.materialBind.controller;
|
||||
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
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.sch.materialBind.service.IMaterialVehicleBindService;
|
||||
import org.nl.wms.sch.materialBind.service.dao.MaterialVehicleBind;
|
||||
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;
|
||||
import java.util.Set;
|
||||
/**
|
||||
* @author songxiaopeng
|
||||
* @date 2024-05-10
|
||||
**/
|
||||
@Slf4j
|
||||
@RestController
|
||||
@Api(tags = "载具物料信息绑定管理")
|
||||
@RequestMapping("/api/materialVehicleBind")
|
||||
public class MaterialVehicleBindController {
|
||||
|
||||
@Autowired
|
||||
private IMaterialVehicleBindService materialVehicleBindService;
|
||||
|
||||
@GetMapping
|
||||
@Log("查询载具物料信息绑定")
|
||||
@ApiOperation("查询载具物料信息绑定")
|
||||
//@SaCheckPermission("@el.check('materialVehicleBind:list')")
|
||||
public ResponseEntity<Object> query(@RequestParam Map whereJson, PageQuery page){
|
||||
return new ResponseEntity<>(TableDataInfo.build(materialVehicleBindService.queryAll(whereJson,page)),HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping
|
||||
@Log("新增载具物料信息绑定")
|
||||
@ApiOperation("新增载具物料信息绑定")
|
||||
//@SaCheckPermission("@el.check('materialVehicleBind:add')")
|
||||
public ResponseEntity<Object> create(@Validated @RequestBody MaterialVehicleBind entity){
|
||||
materialVehicleBindService.create(entity);
|
||||
return new ResponseEntity<>(HttpStatus.CREATED);
|
||||
}
|
||||
|
||||
@PutMapping
|
||||
@Log("修改载具物料信息绑定")
|
||||
@ApiOperation("修改载具物料信息绑定")
|
||||
//@SaCheckPermission("@el.check('materialVehicleBind:edit')")
|
||||
public ResponseEntity<Object> update(@Validated @RequestBody MaterialVehicleBind entity){
|
||||
materialVehicleBindService.update(entity);
|
||||
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
|
||||
}
|
||||
|
||||
@Log("删除载具物料信息绑定")
|
||||
@ApiOperation("删除载具物料信息绑定")
|
||||
//@SaCheckPermission("@el.check('materialVehicleBind:del')")
|
||||
@DeleteMapping
|
||||
public ResponseEntity<Object> delete(@RequestBody Set<String> ids) {
|
||||
materialVehicleBindService.deleteAll(ids);
|
||||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
package org.nl.wms.sch.materialBind.service;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import org.nl.common.domain.query.PageQuery;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import org.nl.wms.sch.materialBind.service.dao.MaterialVehicleBind;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* @description 服务接口
|
||||
* @author songxiaopeng
|
||||
* @date 2024-05-10
|
||||
**/
|
||||
public interface IMaterialVehicleBindService extends IService<MaterialVehicleBind> {
|
||||
|
||||
/**
|
||||
* 查询数据分页
|
||||
* @param whereJson 条件
|
||||
* @param pageable 分页参数
|
||||
* @return IPage<MaterialVehicleBind>
|
||||
*/
|
||||
IPage<MaterialVehicleBind> queryAll(Map whereJson, PageQuery pageable);
|
||||
|
||||
/**
|
||||
* 创建
|
||||
* @param entity /
|
||||
*/
|
||||
void create(MaterialVehicleBind entity);
|
||||
|
||||
/**
|
||||
* 编辑
|
||||
* @param entity /
|
||||
*/
|
||||
void update(MaterialVehicleBind entity);
|
||||
|
||||
/**
|
||||
* 多选删除
|
||||
* @param ids /
|
||||
*/
|
||||
void deleteAll(Set<String> ids);
|
||||
|
||||
List<MaterialVehicleBind> selectByOrder(String order);
|
||||
|
||||
void deleteByGroupId(String groupId);
|
||||
}
|
||||
@@ -0,0 +1,58 @@
|
||||
package org.nl.wms.sch.materialBind.service.dao;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* @description /
|
||||
* @author songxiaopeng
|
||||
* @date 2024-05-10
|
||||
**/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@TableName("material_vehicle_bind")
|
||||
public class MaterialVehicleBind implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@TableId(value = "id", type = IdType.NONE)
|
||||
@ApiModelProperty(value = "ID")
|
||||
private String id;
|
||||
|
||||
@ApiModelProperty(value = "物料编码")
|
||||
private String material_code;
|
||||
|
||||
@ApiModelProperty(value = "物料名称")
|
||||
private String material_name;
|
||||
|
||||
@ApiModelProperty(value = "组盘表id")
|
||||
private String group_id;
|
||||
|
||||
@ApiModelProperty(value = "托盘号")
|
||||
private String vehicle_code;
|
||||
|
||||
@ApiModelProperty(value = "物料数量")
|
||||
private String material_num;
|
||||
|
||||
@ApiModelProperty(value = "订单号")
|
||||
private String order_code;
|
||||
|
||||
@ApiModelProperty(value = "位置")
|
||||
private String position;
|
||||
|
||||
@ApiModelProperty(value = "创建时间")
|
||||
private String create_time;
|
||||
|
||||
@ApiModelProperty(value = "修改时间")
|
||||
private String update_time;
|
||||
|
||||
@ApiModelProperty(value = "是否删除")
|
||||
private String is_delete;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
package org.nl.wms.sch.materialBind.service.dao.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import org.nl.wms.sch.materialBind.service.dao.MaterialVehicleBind;
|
||||
|
||||
/**
|
||||
* @author songxiaopeng
|
||||
* @date 2024-05-10
|
||||
**/
|
||||
public interface MaterialVehicleBindMapper extends BaseMapper<MaterialVehicleBind> {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="org.nl.wms.sch.materialBind.service.dao.mapper.MaterialVehicleBindMapper">
|
||||
|
||||
</mapper>
|
||||
@@ -0,0 +1,43 @@
|
||||
package org.nl.wms.sch.materialBind.service.dto;
|
||||
|
||||
import lombok.Data;
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* @description /
|
||||
* @author songxiaopeng
|
||||
* @date 2024-05-10
|
||||
**/
|
||||
@Data
|
||||
public class MaterialVehicleBindDto implements Serializable {
|
||||
|
||||
/** ID */
|
||||
private String id;
|
||||
|
||||
/** 物料编码 */
|
||||
private String material_code;
|
||||
|
||||
/** 物料名称 */
|
||||
private String material_name;
|
||||
|
||||
/** 托盘号 */
|
||||
private String vehicle_code;
|
||||
|
||||
/** 物料数量 */
|
||||
private String material_num;
|
||||
|
||||
/** 订单号 */
|
||||
private String order_code;
|
||||
|
||||
/** 位置 */
|
||||
private String position;
|
||||
|
||||
/** 创建时间 */
|
||||
private String create_time;
|
||||
|
||||
/** 修改时间 */
|
||||
private String update_time;
|
||||
|
||||
/** 是否删除 */
|
||||
private String is_delete;
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
package org.nl.wms.sch.materialBind.service.dto;
|
||||
|
||||
import org.nl.common.domain.query.BaseQuery;
|
||||
import org.nl.wms.sch.materialBind.service.dao.MaterialVehicleBind;
|
||||
|
||||
/**
|
||||
* @author songxiaopeng
|
||||
* @date 2024-05-10
|
||||
**/
|
||||
public class MaterialVehicleBindQuery extends BaseQuery<MaterialVehicleBind> {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,84 @@
|
||||
package org.nl.wms.sch.materialBind.service.impl;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.common.domain.query.PageQuery;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.wms.sch.materialBind.service.IMaterialVehicleBindService;
|
||||
import org.nl.wms.sch.materialBind.service.dao.mapper.MaterialVehicleBindMapper;
|
||||
import org.nl.wms.sch.materialBind.service.dao.MaterialVehicleBind;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* @author songxiaopeng
|
||||
* @description 服务实现
|
||||
* @date 2024-05-10
|
||||
**/
|
||||
@Slf4j
|
||||
@Service
|
||||
public class MaterialVehicleBindServiceImpl extends ServiceImpl<MaterialVehicleBindMapper, MaterialVehicleBind> implements IMaterialVehicleBindService {
|
||||
|
||||
@Autowired
|
||||
private MaterialVehicleBindMapper materialVehicleBindMapper;
|
||||
|
||||
@Override
|
||||
public IPage<MaterialVehicleBind> queryAll(Map whereJson, PageQuery page) {
|
||||
LambdaQueryWrapper<MaterialVehicleBind> lam = new LambdaQueryWrapper<>();
|
||||
IPage<MaterialVehicleBind> pages = new Page<>(page.getPage() + 1, page.getSize());
|
||||
materialVehicleBindMapper.selectPage(pages, lam);
|
||||
return pages;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void create(MaterialVehicleBind entity) {
|
||||
String now = DateUtil.now();
|
||||
entity.setId(IdUtil.getSnowflake(1, 1).nextIdStr());
|
||||
entity.setCreate_time(now);
|
||||
entity.setUpdate_time(now);
|
||||
materialVehicleBindMapper.insert(entity);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update(MaterialVehicleBind entity) {
|
||||
MaterialVehicleBind dto = materialVehicleBindMapper.selectById(entity.getId());
|
||||
if (dto == null) throw new BadRequestException("被删除或无权限,操作失败!");
|
||||
String now = DateUtil.now();
|
||||
entity.setUpdate_time(now);
|
||||
materialVehicleBindMapper.updateById(entity);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteAll(Set<String> ids) {
|
||||
// 真删除
|
||||
materialVehicleBindMapper.deleteBatchIds(ids);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<MaterialVehicleBind> selectByOrder(String order) {
|
||||
LambdaQueryWrapper<MaterialVehicleBind> lam = new LambdaQueryWrapper<>();
|
||||
lam.eq(MaterialVehicleBind::getOrder_code, order)
|
||||
.orderByDesc(MaterialVehicleBind::getCreate_time);
|
||||
return materialVehicleBindMapper.selectList(lam);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteByGroupId(String groupId) {
|
||||
LambdaQueryWrapper<MaterialVehicleBind> lam = new LambdaQueryWrapper<>();
|
||||
lam.eq(MaterialVehicleBind::getGroup_id, groupId)
|
||||
.orderByDesc(MaterialVehicleBind::getCreate_time);
|
||||
materialVehicleBindMapper.delete(lam);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -143,17 +143,17 @@ public class SchBasePointServiceImpl extends ServiceImpl<SchBasePointMapper, Sch
|
||||
// 获取region_name
|
||||
SchBaseRegion baseRegion = regionMapper.selectById(entity.getRegion_code());
|
||||
entity.setRegion_name(baseRegion.getRegion_name());
|
||||
// if (ObjectUtil.isNotEmpty(entity.getCan_vehicle_types())) {
|
||||
// String can_vehicle_type = String.join(",", entity.getCan_vehicle_types());
|
||||
// entity.setCan_vehicle_type(can_vehicle_type);
|
||||
// }
|
||||
// String pointStatus = entity.getPoint_status();
|
||||
// // 根据点位状态来判断更新内容
|
||||
// if (ObjectUtil.isNotEmpty(pointStatus) && pointStatus.equals(PointStatusEnum.EMPTY_POINT.getCode())) {
|
||||
// entity.setVehicle_type("");
|
||||
// entity.setVehicle_code("");
|
||||
// entity.setVehicle_qty(0);
|
||||
// }
|
||||
if (ObjectUtil.isNotEmpty(entity.getCan_vehicle_types())) {
|
||||
String can_vehicle_type = String.join(",", entity.getCan_vehicle_types());
|
||||
entity.setCan_vehicle_type(can_vehicle_type);
|
||||
}
|
||||
String pointStatus = entity.getPoint_status();
|
||||
// 根据点位状态来判断更新内容
|
||||
if (ObjectUtil.isNotEmpty(pointStatus) && pointStatus.equals(PointStatusEnum.EMPTY_POINT.getCode())) {
|
||||
entity.setVehicle_type("");
|
||||
entity.setVehicle_code("");
|
||||
entity.setVehicle_qty(0);
|
||||
}
|
||||
pointMapper.updateById(entity);
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,62 @@
|
||||
package org.nl.wms.sch.process.controller;
|
||||
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
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.sch.process.service.IOrderProcessService;
|
||||
import org.nl.wms.sch.process.service.dao.OrderProcess;
|
||||
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;
|
||||
import java.util.Set;
|
||||
/**
|
||||
* @author order_process
|
||||
* @date 2024-05-09
|
||||
**/
|
||||
@Slf4j
|
||||
@RestController
|
||||
@Api(tags = "订单工艺信息管理")
|
||||
@RequestMapping("/api/orderProcess")
|
||||
public class OrderProcessController {
|
||||
|
||||
@Autowired
|
||||
private IOrderProcessService orderProcessService;
|
||||
|
||||
@GetMapping
|
||||
@Log("查询订单工艺信息")
|
||||
@ApiOperation("查询订单工艺信息")
|
||||
public ResponseEntity<Object> query(@RequestParam Map whereJson, PageQuery page){
|
||||
return new ResponseEntity<>(TableDataInfo.build(orderProcessService.queryAll(whereJson,page)),HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping
|
||||
@Log("新增订单工艺信息")
|
||||
@ApiOperation("新增订单工艺信息")
|
||||
public ResponseEntity<Object> create(@Validated @RequestBody OrderProcess entity){
|
||||
orderProcessService.create(entity);
|
||||
return new ResponseEntity<>(HttpStatus.CREATED);
|
||||
}
|
||||
|
||||
@PutMapping
|
||||
@Log("修改订单工艺信息")
|
||||
@ApiOperation("修改订单工艺信息")
|
||||
public ResponseEntity<Object> update(@Validated @RequestBody OrderProcess entity){
|
||||
orderProcessService.update(entity);
|
||||
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
|
||||
}
|
||||
|
||||
@Log("删除订单工艺信息")
|
||||
@ApiOperation("删除订单工艺信息")
|
||||
@DeleteMapping
|
||||
public ResponseEntity<Object> delete(@RequestBody Set<String> ids) {
|
||||
orderProcessService.deleteAll(ids);
|
||||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
package org.nl.wms.sch.process.service;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import org.nl.common.domain.query.PageQuery;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import org.nl.wms.sch.process.service.dao.OrderProcess;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* @description 服务接口
|
||||
* @author order_process
|
||||
* @date 2024-05-09
|
||||
**/
|
||||
public interface IOrderProcessService extends IService<OrderProcess> {
|
||||
|
||||
/**
|
||||
* 查询数据分页
|
||||
* @param whereJson 条件
|
||||
* @param pageable 分页参数
|
||||
* @return IPage<OrderProcess>
|
||||
*/
|
||||
IPage<OrderProcess> queryAll(Map whereJson, PageQuery pageable);
|
||||
|
||||
/**
|
||||
* 创建
|
||||
* @param entity /
|
||||
*/
|
||||
void create(OrderProcess entity);
|
||||
|
||||
/**
|
||||
* 编辑
|
||||
* @param entity /
|
||||
*/
|
||||
void update(OrderProcess entity);
|
||||
|
||||
/**
|
||||
* 多选删除
|
||||
* @param ids /
|
||||
*/
|
||||
void deleteAll(Set<String> ids);
|
||||
}
|
||||
@@ -0,0 +1,58 @@
|
||||
package org.nl.wms.sch.process.service.dao;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* @description /
|
||||
* @author order_process
|
||||
* @date 2024-05-09
|
||||
**/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@TableName("order_process")
|
||||
public class OrderProcess implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@TableId(value = "order_id", type = IdType.NONE)
|
||||
@ApiModelProperty(value = "ID")
|
||||
private String order_id;
|
||||
|
||||
@ApiModelProperty(value = "订单号")
|
||||
private String order;
|
||||
|
||||
@ApiModelProperty(value = "工序")
|
||||
private String process;
|
||||
|
||||
@ApiModelProperty(value = "额定最后期限")
|
||||
private String last_time;
|
||||
|
||||
@ApiModelProperty(value = "创建人标识")
|
||||
private String create_id;
|
||||
|
||||
@ApiModelProperty(value = "创建人")
|
||||
private String create_name;
|
||||
|
||||
@ApiModelProperty(value = "创建时间")
|
||||
private String create_time;
|
||||
|
||||
@ApiModelProperty(value = "修改人标识")
|
||||
private String update_id;
|
||||
|
||||
@ApiModelProperty(value = "修改人")
|
||||
private String update_name;
|
||||
|
||||
@ApiModelProperty(value = "修改时间")
|
||||
private String update_time;
|
||||
|
||||
@ApiModelProperty(value = "是否删除")
|
||||
private String is_delete;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
package org.nl.wms.sch.process.service.dao.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import org.nl.wms.sch.process.service.dao.OrderProcess;
|
||||
|
||||
/**
|
||||
* @author order_process
|
||||
* @date 2024-05-09
|
||||
**/
|
||||
public interface OrderProcessMapper extends BaseMapper<OrderProcess> {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="org.nl.wms.sch.process.service.dao.mapper.OrderProcessMapper">
|
||||
|
||||
</mapper>
|
||||
@@ -0,0 +1,46 @@
|
||||
package org.nl.wms.sch.process.service.dto;
|
||||
|
||||
import lombok.Data;
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* @description /
|
||||
* @author order_process
|
||||
* @date 2024-05-09
|
||||
**/
|
||||
@Data
|
||||
public class OrderProcessDto implements Serializable {
|
||||
|
||||
/** ID */
|
||||
private String order_id;
|
||||
|
||||
/** 订单号 */
|
||||
private String order;
|
||||
|
||||
/** 工序 */
|
||||
private String process;
|
||||
|
||||
/** 额定最后期限 */
|
||||
private String last_time;
|
||||
|
||||
/** 创建人标识 */
|
||||
private String create_id;
|
||||
|
||||
/** 创建人 */
|
||||
private String create_name;
|
||||
|
||||
/** 创建时间 */
|
||||
private String create_time;
|
||||
|
||||
/** 修改人标识 */
|
||||
private String update_id;
|
||||
|
||||
/** 修改人 */
|
||||
private String update_name;
|
||||
|
||||
/** 修改时间 */
|
||||
private String update_time;
|
||||
|
||||
/** 是否删除 */
|
||||
private String is_delete;
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
package org.nl.wms.sch.process.service.dto;
|
||||
|
||||
import org.nl.common.domain.query.BaseQuery;
|
||||
import org.nl.wms.sch.process.service.dao.OrderProcess;
|
||||
|
||||
/**
|
||||
* @author order_process
|
||||
* @date 2024-05-09
|
||||
**/
|
||||
public class OrderProcessQuery extends BaseQuery<OrderProcess> {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,80 @@
|
||||
package org.nl.wms.sch.process.service.impl;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.common.domain.query.PageQuery;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.wms.sch.process.service.IOrderProcessService;
|
||||
import org.nl.wms.sch.process.service.dao.mapper.OrderProcessMapper;
|
||||
import org.nl.wms.sch.process.service.dao.OrderProcess;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* @description 服务实现
|
||||
* @author order_process
|
||||
* @date 2024-05-09
|
||||
**/
|
||||
@Slf4j
|
||||
@Service
|
||||
public class OrderProcessServiceImpl extends ServiceImpl<OrderProcessMapper, OrderProcess> implements IOrderProcessService {
|
||||
|
||||
@Autowired
|
||||
private OrderProcessMapper orderProcessMapper;
|
||||
|
||||
@Override
|
||||
public IPage<OrderProcess> queryAll(Map whereJson, PageQuery page){
|
||||
LambdaQueryWrapper<OrderProcess> lam = new LambdaQueryWrapper<>();
|
||||
IPage<OrderProcess> pages = new Page<>(page.getPage() + 1, page.getSize());
|
||||
orderProcessMapper.selectPage(pages, lam);
|
||||
return pages;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void create(OrderProcess entity) {
|
||||
String currentUserId = SecurityUtils.getCurrentUserId();
|
||||
String nickName = SecurityUtils.getCurrentNickName();
|
||||
String now = DateUtil.now();
|
||||
|
||||
entity.setOrder_id(IdUtil.getSnowflake(1, 1).nextIdStr());
|
||||
entity.setCreate_id(currentUserId);
|
||||
entity.setCreate_name(nickName);
|
||||
entity.setCreate_time(now);
|
||||
entity.setUpdate_id(currentUserId);
|
||||
entity.setUpdate_name(nickName);
|
||||
entity.setUpdate_time(now);
|
||||
orderProcessMapper.insert(entity);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update(OrderProcess entity) {
|
||||
OrderProcess dto = orderProcessMapper.selectById(entity.getOrder_id());
|
||||
if (dto == null) throw new BadRequestException("被删除或无权限,操作失败!");
|
||||
|
||||
String currentUserId = SecurityUtils.getCurrentUserId();
|
||||
String nickName = SecurityUtils.getCurrentNickName();
|
||||
String now = DateUtil.now();
|
||||
entity.setUpdate_id(currentUserId);
|
||||
entity.setUpdate_name(nickName);
|
||||
entity.setUpdate_time(now);
|
||||
|
||||
orderProcessMapper.updateById(entity);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteAll(Set<String> ids) {
|
||||
// 真删除
|
||||
orderProcessMapper.deleteBatchIds(ids);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -8,6 +8,8 @@ import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.apache.poi.util.StringUtil;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.config.SpringContextHolder;
|
||||
import org.nl.system.service.param.impl.SysParamServiceImpl;
|
||||
@@ -79,7 +81,7 @@ public class CYJKTask extends AbstractTask {
|
||||
SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper<SchBaseTaskconfig>()
|
||||
.eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE));
|
||||
for (SchBaseTask task : tasks) {
|
||||
SchBasePoint point = findStartPoint(taskConfig.getStart_region_str());
|
||||
SchBasePoint point = findStartPoint(taskConfig.getStart_region_str(),task.getVehicle_type());
|
||||
if (ObjectUtil.isEmpty(point)) {
|
||||
task.setRemark("未找到所需点位!");
|
||||
taskService.update(task);
|
||||
@@ -106,18 +108,37 @@ public class CYJKTask extends AbstractTask {
|
||||
}
|
||||
|
||||
//查找空托盘
|
||||
private SchBasePoint findStartPoint(String startRegionStr) {
|
||||
private SchBasePoint findStartPoint(String startRegionStr,String vehicleType) {
|
||||
if (StringUtils.isEmpty(startRegionStr)) {
|
||||
return null;
|
||||
}
|
||||
String[] reginList = startRegionStr.split(",");
|
||||
LambdaQueryWrapper<SchBasePoint> lam = new LambdaQueryWrapper<>();
|
||||
lam.in(SchBasePoint::getRegion_code, Arrays.asList(reginList))
|
||||
.eq(SchBasePoint::getPoint_status, PointStatusEnum.EMPTY_VEHICLE.getCode())
|
||||
.eq(SchBasePoint::getPoint_type, "1")
|
||||
.eq(SchBasePoint::getCan_vehicle_type, vehicleType)
|
||||
.and(la -> la.isNull(SchBasePoint::getIng_task_code)
|
||||
.or()
|
||||
.eq(SchBasePoint::getIng_task_code, ""))
|
||||
.eq(SchBasePoint::getIs_used, true);
|
||||
List<SchBasePoint> schBasePoints = pointService.list(lam);
|
||||
return ObjectUtil.isNotEmpty(schBasePoints) ? schBasePoints.get(0) : null;
|
||||
if (ObjectUtil.isNotEmpty(schBasePoints)) {
|
||||
return schBasePoints.get(0);
|
||||
}
|
||||
if (VehicleTypeEnum.LK_RO1.getCode().equals(vehicleType) || VehicleTypeEnum.LK_RO2.getCode().equals(vehicleType)) {
|
||||
//空托盘从空托盘货架位就近获取,补空料笼从货架及料笼暂存区获取
|
||||
LambdaQueryWrapper<SchBasePoint> tempAreaLam = new LambdaQueryWrapper<>();
|
||||
tempAreaLam.eq(SchBasePoint::getRegion_code, "CDLKZC")
|
||||
.eq(SchBasePoint::getPoint_status, PointStatusEnum.EMPTY_VEHICLE.getCode())
|
||||
.eq(SchBasePoint::getCan_vehicle_type, vehicleType)
|
||||
.and(la -> la.isNull(SchBasePoint::getIng_task_code)
|
||||
.or()
|
||||
.eq(SchBasePoint::getIng_task_code, ""))
|
||||
.eq(SchBasePoint::getIs_used, true);
|
||||
List<SchBasePoint> tempAreaList = pointService.list(tempAreaLam);
|
||||
return ObjectUtil.isNotEmpty(tempAreaList) ? tempAreaList.get(0) : null;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@@ -144,14 +165,15 @@ public class CYJKTask extends AbstractTask {
|
||||
// 终点解锁
|
||||
endPointObj.setIng_task_code("");
|
||||
endPointObj.setVehicle_code(taskObj.getVehicle_code());
|
||||
endPointObj.setVehicle_code2(taskObj.getVehicle_code2());
|
||||
// endPointObj.setVehicle_type(taskObj.getVehicle_type());
|
||||
endPointObj.setVehicle_qty(1);
|
||||
endPointObj.setUpdate_time(DateUtil.now());
|
||||
pointService.update(endPointObj);
|
||||
// 起点清空
|
||||
startPointObj.setVehicle_code("");
|
||||
startPointObj.setVehicle_code2("");
|
||||
startPointObj.setIng_task_code("");
|
||||
startPointObj.setVehicle_type("");
|
||||
startPointObj.setVehicle_qty(0);
|
||||
startPointObj.setPoint_status(PointStatusEnum.EMPTY_POINT.getCode());
|
||||
startPointObj.setUpdate_time(DateUtil.now());
|
||||
pointService.updateById(startPointObj);
|
||||
// 任务完成
|
||||
|
||||
@@ -19,6 +19,8 @@ import org.nl.wms.pda.service.dao.vo.PdaResponseVo;
|
||||
import org.nl.wms.pdm.service.IPdmBdWorkorderService;
|
||||
import org.nl.wms.sch.group.service.ISchBaseVehiclematerialgroupService;
|
||||
import org.nl.wms.sch.group.service.dao.SchBaseVehiclematerialgroup;
|
||||
import org.nl.wms.sch.materialBind.service.IMaterialVehicleBindService;
|
||||
import org.nl.wms.sch.materialBind.service.dao.MaterialVehicleBind;
|
||||
import org.nl.wms.sch.point.service.ISchBasePointService;
|
||||
import org.nl.wms.sch.point.service.dao.SchBasePoint;
|
||||
import org.nl.wms.sch.task.service.ISchBaseTaskService;
|
||||
@@ -29,6 +31,7 @@ import org.nl.wms.sch.task_manage.AbstractTask;
|
||||
import org.nl.wms.sch.task_manage.enums.GroupBindMaterialStatusEnum;
|
||||
import org.nl.wms.sch.task_manage.enums.GroupStatusEnum;
|
||||
import org.nl.wms.sch.task_manage.enums.PointStatusEnum;
|
||||
import org.nl.wms.sch.task_manage.enums.VehicleTypeEnum;
|
||||
import org.nl.wms.sch.task_manage.task.TaskType;
|
||||
import org.nl.wms.sch.task_manage.task.core.TaskStatus;
|
||||
import org.nl.wms.util.PointUtils;
|
||||
@@ -37,6 +40,7 @@ import org.springframework.context.annotation.Lazy;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.transaction.Transactional;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
@@ -58,10 +62,9 @@ public class CYXLTask extends AbstractTask {
|
||||
@Autowired
|
||||
private ISchBaseTaskconfigService taskConfigService;
|
||||
@Autowired
|
||||
private IPdmBdWorkorderService workorderService;
|
||||
@Autowired
|
||||
private ISchBaseVehiclematerialgroupService vehiclematerialgroupService;
|
||||
|
||||
@Autowired
|
||||
private IMaterialVehicleBindService materialVehicleBindService;
|
||||
@Autowired
|
||||
private AcsToWmsService acsToWmsService;
|
||||
|
||||
@@ -71,7 +74,7 @@ public class CYXLTask extends AbstractTask {
|
||||
SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper<SchBaseTaskconfig>()
|
||||
.eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE));
|
||||
for (SchBaseTask task : tasks) {
|
||||
SchBasePoint point = findNextPoint(taskConfig.getNext_region_str());
|
||||
SchBasePoint point = findNextPoint(taskConfig.getNext_region_str(), task.getVehicle_type());
|
||||
if (ObjectUtil.isEmpty(point)) {
|
||||
task.setRemark("未找到所需点位!");
|
||||
taskService.update(task);
|
||||
@@ -94,12 +97,13 @@ public class CYXLTask extends AbstractTask {
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
private SchBasePoint findNextPoint(String nextReginStr) {
|
||||
//todo 区域优先级,暂时按照创建任务配置时,区域选择顺序
|
||||
private SchBasePoint findNextPoint(String nextReginStr, String vehicleType) {
|
||||
//todo 需要和外部系统确认载具类型vehicleType参数值,暂时使用PointStatusEnum
|
||||
String[] reginList = nextReginStr.split(",");
|
||||
LambdaQueryWrapper<SchBasePoint> lam = new LambdaQueryWrapper<>();
|
||||
lam.in(SchBasePoint::getRegion_code, Arrays.asList(reginList))
|
||||
.eq(SchBasePoint::getPoint_status, PointStatusEnum.EMPTY_POINT.getCode())
|
||||
.eq(SchBasePoint::getCan_vehicle_type, VehicleTypeEnum.GTP.getCode())
|
||||
.and(la -> la.isNull(SchBasePoint::getIng_task_code) // 当前执行的任务为空或者NULL,有数据表示锁住
|
||||
.or()
|
||||
.eq(SchBasePoint::getIng_task_code, ""))
|
||||
@@ -122,13 +126,6 @@ public class CYXLTask extends AbstractTask {
|
||||
throw new BadRequestException("该任务已取消!");
|
||||
}
|
||||
// 获取参数
|
||||
JSONObject extGroupData = ObjectUtil.isNotEmpty(taskObj.getExt_group_data())
|
||||
? JSONObject.parseObject(taskObj.getExt_group_data())
|
||||
: null;
|
||||
// 载具编码:没有就创建一个
|
||||
String vehicle_code = ObjectUtil.isNotEmpty(taskObj.getVehicle_code())
|
||||
? taskObj.getVehicle_code()
|
||||
: IdUtil.getSnowflake(1, 1).nextIdStr();
|
||||
String startPoint = taskObj.getPoint_code1(); // 获取起点
|
||||
String endPoint = taskObj.getPoint_code2(); // 获取终点
|
||||
SchBasePoint startPointObj = pointService.getById(startPoint);
|
||||
@@ -145,41 +142,13 @@ public class CYXLTask extends AbstractTask {
|
||||
}
|
||||
// 终点解锁
|
||||
endPointObj.setIng_task_code("");
|
||||
// endPointObj.setVehicle_code(ObjectUtil.isEmpty(endPointObj.getVehicle_code()) ? vehicle_code : endPointObj.getVehicle_code());
|
||||
endPointObj.setVehicle_code(taskObj.getVehicle_code());
|
||||
endPointObj.setVehicle_qty(1);
|
||||
endPointObj.setVehicle_type(taskObj.getVehicle_type());
|
||||
endPointObj.setPoint_status(PointStatusEnum.FULL_POINT.getCode());
|
||||
pointService.update(endPointObj);
|
||||
// 要把数据存到组盘表 -> 改造公共方法,返回id
|
||||
//todo 涉及一对多、设置物料类型为待分拣冲压件、载具类型
|
||||
// SchBaseVehiclematerialgroup groupEntity = new SchBaseVehiclematerialgroup();
|
||||
// groupEntity.setGroup_id(IdUtil.getSnowflake(1, 1).nextIdStr());
|
||||
// groupEntity.setCreate_id("2");
|
||||
// groupEntity.setCreate_name("ACS");
|
||||
// groupEntity.setCreate_time(DateUtil.now());
|
||||
// groupEntity.setMaterial_id(ObjectUtil.isNotEmpty(workorderCode)
|
||||
// ? workorderCode.getMaterial_id()
|
||||
// : "");
|
||||
// groupEntity.setStanding_time(ObjectUtil.isNotEmpty(workorderCode)
|
||||
// ? workorderCode.getStanding_time()
|
||||
// : 0);
|
||||
// groupEntity.setMaterial_weight(ObjectUtil.isNotEmpty(extGroupData)
|
||||
// ? extGroupData.getBigDecimal("material_qty")
|
||||
// : BigDecimal.valueOf(0));
|
||||
// groupEntity.setWorkorder_code(ObjectUtil.isNotEmpty(workorderCode)
|
||||
// ? workorderCode.getWorkorder_code()
|
||||
// : "");
|
||||
// groupEntity.setVehicle_code(vehicle_code);
|
||||
// groupEntity.setVehicle_type(taskObj.getVehicle_type());
|
||||
// groupEntity.setPoint_code(startPoint);
|
||||
// groupEntity.setPoint_name(startPointObj.getPoint_name());
|
||||
// groupEntity.setPcsn(DateUtil.format(DateUtil.date(), "yyyyMMdd"));
|
||||
// groupEntity.setInstorage_time(DateUtil.now());
|
||||
// groupEntity.setTask_code(taskObj.getTask_code());
|
||||
// groupEntity.setMove_way(startPoint);
|
||||
// groupEntity.setGroup_bind_material_status(GroupBindMaterialStatusEnum.BOUND.getValue()); // 绑定
|
||||
// groupEntity.setGroup_status(GroupStatusEnum.IN_STORAGE.getType()); // 暂时不维护。
|
||||
// groupEntity.setIs_delete(false);
|
||||
// groupEntity.setMove_way(startPoint);
|
||||
// vehiclematerialgroupService.save(groupEntity);
|
||||
|
||||
// 任务完成
|
||||
taskObj.setTask_status(TaskStatus.FINISHED.getCode());
|
||||
// taskObj.setGroup_id(groupEntity.getGroup_id());
|
||||
@@ -187,7 +156,7 @@ public class CYXLTask extends AbstractTask {
|
||||
JSONObject jsonObject = new JSONObject();
|
||||
jsonObject.put("task_code", IdUtil.getSnowflake(1, 1).nextIdStr());
|
||||
jsonObject.put("taskType", "CYJKTask");
|
||||
jsonObject.put("next_device_code",taskObj.getPoint_code1());
|
||||
jsonObject.put("next_device_code", taskObj.getPoint_code1());
|
||||
acsToWmsService.acsApply(jsonObject);
|
||||
}
|
||||
if (status.equals(TaskStatus.CANCELED)) { // 取消
|
||||
@@ -228,7 +197,37 @@ public class CYXLTask extends AbstractTask {
|
||||
agvStateParam.setStatus("1");
|
||||
//叉车到位 请求取货
|
||||
String url = iotUrl + "iot/agvarrive";
|
||||
applyIot(url, agvStateParam, result);
|
||||
JSONObject jsonObject = applyIot(url, agvStateParam, result);
|
||||
if (jsonObject != null) {
|
||||
//todo 校验返回的物料信息和订单工艺信息
|
||||
SchBaseVehiclematerialgroup groupEntity = new SchBaseVehiclematerialgroup();
|
||||
groupEntity.setGroup_id(IdUtil.getSnowflake(1, 1).nextIdStr());
|
||||
groupEntity.setCreate_id("2");
|
||||
groupEntity.setCreate_name("ACS");
|
||||
groupEntity.setCreate_time(DateUtil.now());
|
||||
groupEntity.setVehicle_code(jsonObject.getString("vehicle_code"));
|
||||
groupEntity.setVehicle_type(schBaseTask.getVehicle_type());
|
||||
groupEntity.setPoint_code(startPoint.getPoint_code());
|
||||
groupEntity.setPoint_name(startPoint.getPoint_name());
|
||||
groupEntity.setPcsn(DateUtil.format(DateUtil.date(), "yyyyMMdd"));
|
||||
groupEntity.setInstorage_time(DateUtil.now());
|
||||
groupEntity.setTask_code(schBaseTask.getTask_code());
|
||||
groupEntity.setMove_way(startPoint.getPoint_code());
|
||||
groupEntity.setGroup_bind_material_status(GroupBindMaterialStatusEnum.BOUND.getValue()); // 绑定
|
||||
groupEntity.setGroup_status(GroupStatusEnum.IN_STORAGE.getType()); // 暂时不维护。
|
||||
groupEntity.setIs_delete(false);
|
||||
vehiclematerialgroupService.save(groupEntity);
|
||||
//todo 多个物料信息绑定
|
||||
MaterialVehicleBind materialVehicleBind = new MaterialVehicleBind();
|
||||
materialVehicleBind.setId(IdUtil.getSnowflake(1, 1).nextIdStr());
|
||||
materialVehicleBind.setCreate_time(DateUtil.now());
|
||||
materialVehicleBind.setVehicle_code(jsonObject.getString("vehicle_code"));
|
||||
materialVehicleBind.setGroup_id(groupEntity.getGroup_id());
|
||||
materialVehicleBind.setMaterial_code(jsonObject.getString("material_code"));
|
||||
materialVehicleBind.setMaterial_name(jsonObject.getString("material_name"));
|
||||
materialVehicleBind.setOrder_code(jsonObject.getString("order_code"));
|
||||
materialVehicleBindService.save(materialVehicleBind);
|
||||
}
|
||||
//锁住起点
|
||||
startPoint.setIng_task_code(schBaseTask.getTask_code());
|
||||
pointService.update(startPoint);
|
||||
@@ -244,12 +243,13 @@ public class CYXLTask extends AbstractTask {
|
||||
JSONObject jsonObject = new JSONObject();
|
||||
jsonObject.put("task_code", IdUtil.getSnowflake(1, 1).nextIdStr());
|
||||
jsonObject.put("taskType", "CYJKTask");
|
||||
jsonObject.put("next_device_code",schBaseTask.getPoint_code1());
|
||||
jsonObject.put("vehicleType", schBaseTask.getVehicle_type());
|
||||
jsonObject.put("next_device_code", schBaseTask.getPoint_code1());
|
||||
acsToWmsService.acsApply(jsonObject);
|
||||
}
|
||||
}
|
||||
|
||||
private void applyIot(String url, AgvStateParam agvStateParam, BaseResponse result) {
|
||||
private JSONObject applyIot(String url, AgvStateParam agvStateParam, BaseResponse result) {
|
||||
String jsonParam = JSON.toJSONString(agvStateParam);
|
||||
log.info("请求iot参数为:{}", jsonParam);
|
||||
try {
|
||||
@@ -261,10 +261,12 @@ public class CYXLTask extends AbstractTask {
|
||||
log.info("请求iot成功,返回结果为:{}", res);
|
||||
result.setCode(HttpStatus.OK.value());
|
||||
result.setMessage("请求iot成功!");
|
||||
return res.getJSONObject("data");
|
||||
} else {
|
||||
log.error("请求iot失败:{}", res);
|
||||
result.setCode(HttpStatus.BAD_REQUEST.value());
|
||||
result.setMessage("请求iot失败!");
|
||||
return null;
|
||||
}
|
||||
} catch (Exception e) {
|
||||
String msg = e.getMessage();
|
||||
@@ -272,6 +274,7 @@ public class CYXLTask extends AbstractTask {
|
||||
log.error("请求iot失败:{}", msg);
|
||||
result.setCode(HttpStatus.BAD_REQUEST.value());
|
||||
result.setMessage("请求iot失败!");
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,214 @@
|
||||
package org.nl.wms.sch.task_manage.task.tasks.fj;
|
||||
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.http.HttpRequest;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.config.SpringContextHolder;
|
||||
import org.nl.system.service.param.impl.SysParamServiceImpl;
|
||||
import org.nl.wms.ext.service.dto.to.BaseResponse;
|
||||
import org.nl.wms.ext.service.dto.to.iot.AgvStateParam;
|
||||
import org.nl.wms.pdm.service.IPdmBdWorkorderService;
|
||||
import org.nl.wms.sch.group.service.ISchBaseVehiclematerialgroupService;
|
||||
import org.nl.wms.sch.point.service.ISchBasePointService;
|
||||
import org.nl.wms.sch.point.service.dao.SchBasePoint;
|
||||
import org.nl.wms.sch.task.service.ISchBaseTaskService;
|
||||
import org.nl.wms.sch.task.service.ISchBaseTaskconfigService;
|
||||
import org.nl.wms.sch.task.service.dao.SchBaseTask;
|
||||
import org.nl.wms.sch.task.service.dao.SchBaseTaskconfig;
|
||||
import org.nl.wms.sch.task_manage.AbstractTask;
|
||||
import org.nl.wms.sch.task_manage.enums.PointStatusEnum;
|
||||
import org.nl.wms.sch.task_manage.task.TaskType;
|
||||
import org.nl.wms.sch.task_manage.task.core.TaskStatus;
|
||||
import org.nl.wms.util.PointUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Lazy;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Author: sxp
|
||||
* @Description: 分拣回库
|
||||
* @Date: 2024/3/11
|
||||
*/
|
||||
@Slf4j
|
||||
@Component
|
||||
@TaskType("FJHKTask")
|
||||
@Lazy
|
||||
public class FJHKTask extends AbstractTask {
|
||||
private static String TASK_CONFIG_CODE = "FJHKTask";
|
||||
@Autowired
|
||||
private ISchBasePointService pointService;
|
||||
@Autowired
|
||||
private ISchBaseTaskService taskService;
|
||||
@Autowired
|
||||
private ISchBaseTaskconfigService taskConfigService;
|
||||
@Autowired
|
||||
private ISchBaseVehiclematerialgroupService vehiclematerialgroupService;
|
||||
|
||||
@Override
|
||||
protected void create() throws BadRequestException {
|
||||
List<SchBaseTask> tasks = taskService.findTasksByTaskStatus(TASK_CONFIG_CODE, TaskStatus.APPLY);
|
||||
SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper<SchBaseTaskconfig>()
|
||||
.eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE));
|
||||
for (SchBaseTask task : tasks) {
|
||||
SchBasePoint point = findNextPoint(taskConfig.getNext_region_str(), task.getVehicle_type());
|
||||
if (ObjectUtil.isEmpty(point)) {
|
||||
task.setRemark("未找到所需点位!");
|
||||
taskService.update(task);
|
||||
log.info("分拣下料未找到当前符合条件的点位!");
|
||||
continue;
|
||||
}
|
||||
task.setPoint_code2(point.getPoint_code());
|
||||
task.setTask_status(TaskStatus.CREATED.getCode());
|
||||
task.setRemark("");
|
||||
taskService.update(task);
|
||||
//发起任务时先把点位占用,防止发起重复任务
|
||||
point.setIng_task_code(task.getTask_code());
|
||||
pointService.update(point);
|
||||
this.renotifyAcs(task);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断目标点位
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
private SchBasePoint findNextPoint(String nextReginStr, String vehicleType) {
|
||||
String[] reginList = nextReginStr.split(",");
|
||||
LambdaQueryWrapper<SchBasePoint> lam = new LambdaQueryWrapper<>();
|
||||
lam.in(SchBasePoint::getRegion_code, Arrays.asList(reginList))
|
||||
.eq(SchBasePoint::getPoint_status, PointStatusEnum.EMPTY_POINT.getCode())
|
||||
.eq(SchBasePoint::getCan_vehicle_type, vehicleType)
|
||||
.and(la -> la.isNull(SchBasePoint::getIng_task_code) // 当前执行的任务为空或者NULL,有数据表示锁住
|
||||
.or()
|
||||
.eq(SchBasePoint::getIng_task_code, ""))
|
||||
.eq(SchBasePoint::getIs_used, true)
|
||||
.orderByAsc(SchBasePoint::getIn_order_seq)
|
||||
.orderByAsc(SchBasePoint::getPoint_code);
|
||||
List<SchBasePoint> schBasePoints = pointService.list(lam);
|
||||
return ObjectUtil.isNotEmpty(schBasePoints) ? schBasePoints.get(0) : null;
|
||||
}
|
||||
|
||||
@Override
|
||||
// @Transactional(rollbackFor = Exception.class)
|
||||
protected void updateStatus(String task_code, TaskStatus status) {
|
||||
// 校验任务
|
||||
SchBaseTask taskObj = taskService.getById(task_code);
|
||||
if (taskObj.getTask_status().equals(TaskStatus.FINISHED.getCode())) {
|
||||
throw new BadRequestException("该任务已完成!");
|
||||
}
|
||||
if (taskObj.getTask_status().equals(TaskStatus.CANCELED.getCode())) {
|
||||
throw new BadRequestException("该任务已取消!");
|
||||
}
|
||||
String startPoint = taskObj.getPoint_code1(); // 获取起点
|
||||
String endPoint = taskObj.getPoint_code2(); // 获取终点
|
||||
SchBasePoint startPointObj = pointService.getById(startPoint);
|
||||
SchBasePoint endPointObj = pointService.getById(endPoint);
|
||||
// 根据传来的类型去对任务进行操作
|
||||
if (status.equals(TaskStatus.EXECUTING)) { // 执行中
|
||||
taskObj.setTask_status(TaskStatus.EXECUTING.getCode());
|
||||
taskObj.setRemark("执行中");
|
||||
}
|
||||
if (status.equals(TaskStatus.FINISHED)) { // 完成
|
||||
// 起点清空
|
||||
if (ObjectUtil.isNotEmpty(startPointObj)) {
|
||||
PointUtils.clearPoint(startPointObj);
|
||||
}
|
||||
// 终点解锁
|
||||
endPointObj.setIng_task_code("");
|
||||
// endPointObj.setVehicle_code(ObjectUtil.isEmpty(endPointObj.getVehicle_code()) ? vehicle_code + "," : endPointObj.getVehicle_code() + vehicle_code + ",");
|
||||
endPointObj.setVehicle_qty(1);
|
||||
pointService.update(endPointObj);
|
||||
// 任务完成
|
||||
taskObj.setTask_status(TaskStatus.FINISHED.getCode());
|
||||
taskObj.setRemark("任务完成");
|
||||
}
|
||||
if (status.equals(TaskStatus.CANCELED)) { // 取消
|
||||
// 终点解锁
|
||||
if (ObjectUtil.isNotEmpty(endPointObj)) {
|
||||
endPointObj.setIng_task_code("");
|
||||
//任务取消把原先占用的位置释放
|
||||
pointService.update(endPointObj);
|
||||
}
|
||||
taskObj.setRemark("任务取消");
|
||||
taskObj.setTask_status(TaskStatus.CANCELED.getCode());
|
||||
}
|
||||
taskService.update(taskObj);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void forceFinish(String task_code) {
|
||||
this.updateStatus(task_code, TaskStatus.FINISHED);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void cancel(String task_code) {
|
||||
this.updateStatus(task_code, TaskStatus.CANCELED);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void feedbackTaskState(JSONObject param, SchBaseTask schBaseTask, BaseResponse result) {
|
||||
// 反馈上位系统 反馈上位系统成功后,返回200给acs
|
||||
AgvStateParam agvStateParam = new AgvStateParam();
|
||||
agvStateParam.setTask_code(schBaseTask.getTask_code());
|
||||
agvStateParam.setDevice_code(schBaseTask.getPoint_code1());
|
||||
agvStateParam.setVehicle_code(schBaseTask.getVehicle_code());
|
||||
String phase = param.getString("phase");
|
||||
String iotUrl = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("iot_url").getValue();
|
||||
SchBasePoint startPoint = pointService.getById(schBaseTask.getPoint_code1());
|
||||
if ("3".equals(phase)) {
|
||||
agvStateParam.setStatus("1");
|
||||
//叉车到位 请求取货
|
||||
String url = iotUrl + "iot/agvarrive";
|
||||
applyIot(url, agvStateParam, result);
|
||||
//锁住起点
|
||||
startPoint.setIng_task_code(schBaseTask.getTask_code());
|
||||
pointService.update(startPoint);
|
||||
}
|
||||
if ("5".equals(phase)) {
|
||||
agvStateParam.setStatus("2");
|
||||
//取货完成,请求离开
|
||||
String url = iotUrl + "iot/agvfinish";
|
||||
applyIot(url, agvStateParam, result);
|
||||
//起点解锁 下发补空托盘任务
|
||||
startPoint.setIng_task_code("");
|
||||
pointService.update(startPoint);
|
||||
}
|
||||
}
|
||||
|
||||
private void applyIot(String url, AgvStateParam agvStateParam, BaseResponse result) {
|
||||
String jsonParam = JSON.toJSONString(agvStateParam);
|
||||
log.info("请求iot参数为:{}", jsonParam);
|
||||
try {
|
||||
String resultMsg = HttpRequest.post(url)
|
||||
.body(jsonParam)
|
||||
.execute().body();
|
||||
JSONObject res = JSONObject.parseObject(resultMsg);
|
||||
if ("200".equals(res.getString("code"))) {
|
||||
log.info("请求iot成功,返回结果为:{}", res);
|
||||
result.setCode(HttpStatus.OK.value());
|
||||
result.setMessage("请求iot成功!");
|
||||
} else {
|
||||
log.error("请求iot失败:{}", res);
|
||||
result.setCode(HttpStatus.BAD_REQUEST.value());
|
||||
result.setMessage("请求iot失败!");
|
||||
}
|
||||
} catch (Exception e) {
|
||||
String msg = e.getMessage();
|
||||
//请求iot失败
|
||||
log.error("请求iot失败:{}", msg);
|
||||
result.setCode(HttpStatus.BAD_REQUEST.value());
|
||||
result.setMessage("请求iot失败!");
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,264 @@
|
||||
package org.nl.wms.sch.task_manage.task.tasks.fj;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.http.HttpRequest;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.config.SpringContextHolder;
|
||||
import org.nl.system.service.param.impl.SysParamServiceImpl;
|
||||
import org.nl.wms.ext.service.WmsToAcsService;
|
||||
import org.nl.wms.ext.service.dto.to.BaseResponse;
|
||||
import org.nl.wms.ext.service.dto.to.iot.AgvStateParam;
|
||||
import org.nl.wms.pdm.service.IPdmBdWorkorderService;
|
||||
import org.nl.wms.sch.group.service.ISchBaseVehiclematerialgroupService;
|
||||
import org.nl.wms.sch.point.service.ISchBasePointService;
|
||||
import org.nl.wms.sch.point.service.dao.SchBasePoint;
|
||||
import org.nl.wms.sch.task.service.ISchBaseTaskService;
|
||||
import org.nl.wms.sch.task.service.ISchBaseTaskconfigService;
|
||||
import org.nl.wms.sch.task.service.dao.SchBaseTask;
|
||||
import org.nl.wms.sch.task.service.dao.SchBaseTaskconfig;
|
||||
import org.nl.wms.sch.task_manage.AbstractTask;
|
||||
import org.nl.wms.sch.task_manage.GeneralDefinition;
|
||||
import org.nl.wms.sch.task_manage.enums.PointStatusEnum;
|
||||
import org.nl.wms.sch.task_manage.enums.VehicleTypeEnum;
|
||||
import org.nl.wms.sch.task_manage.task.TaskType;
|
||||
import org.nl.wms.sch.task_manage.task.core.TaskStatus;
|
||||
import org.nl.wms.sch.task_manage.task.tasks.mapper.PointMapper;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Lazy;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Author: sxp
|
||||
* @Description: 分拣叫空盘
|
||||
*/
|
||||
@Slf4j
|
||||
@Component
|
||||
@TaskType("FJJKTask")
|
||||
@Lazy
|
||||
public class FJJKTask extends AbstractTask {
|
||||
private static String TASK_CONFIG_CODE = "FJJKTask";
|
||||
/**
|
||||
* 入口
|
||||
*/
|
||||
private static String ENTRANCE = "1";
|
||||
@Autowired
|
||||
private ISchBasePointService pointService;
|
||||
@Autowired
|
||||
private ISchBaseTaskService taskService;
|
||||
@Autowired
|
||||
private ISchBaseTaskconfigService taskConfigService;
|
||||
@Autowired
|
||||
private IPdmBdWorkorderService workorderService;
|
||||
@Autowired
|
||||
private ISchBaseVehiclematerialgroupService vehiclematerialgroupService;
|
||||
@Autowired
|
||||
private PointMapper pointMapper;
|
||||
@Autowired
|
||||
private WmsToAcsService wmsToAcsService;
|
||||
|
||||
@Override
|
||||
// @Transactional(rollbackFor = Exception.class)
|
||||
protected void create() throws BadRequestException {
|
||||
// 获取任务
|
||||
List<SchBaseTask> tasks = taskService.findTasksByTaskStatus(TASK_CONFIG_CODE, TaskStatus.APPLY);
|
||||
// 配置信息
|
||||
SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper<SchBaseTaskconfig>()
|
||||
.eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE));
|
||||
for (SchBaseTask task : tasks) {
|
||||
SchBasePoint point = findStartPoint(taskConfig.getStart_region_str(), task.getVehicle_type());
|
||||
if (ObjectUtil.isEmpty(point)) {
|
||||
task.setRemark("未找到所需点位!");
|
||||
taskService.update(task);
|
||||
// 消息通知
|
||||
log.info("冲压机叫空盘未找到所需点位!");
|
||||
continue;
|
||||
}
|
||||
// 设置起点并修改创建成功状态
|
||||
task.setPoint_code1(point.getPoint_code());
|
||||
task.setTask_status(TaskStatus.CREATED.getCode());
|
||||
task.setRemark("创建完成");
|
||||
task.setVehicle_code(point.getVehicle_code());
|
||||
task.setVehicle_type(point.getVehicle_type());
|
||||
taskService.update(task);
|
||||
//发起任务时先把点位占用,防止发起重复任务
|
||||
point.setIng_task_code(task.getTask_code());
|
||||
point.setUpdate_id(GeneralDefinition.ACS_ID);
|
||||
point.setUpdate_name(GeneralDefinition.ACS_NAME);
|
||||
point.setUpdate_time(DateUtil.now());
|
||||
pointService.update(point);
|
||||
//下发
|
||||
this.renotifyAcs(task);
|
||||
}
|
||||
}
|
||||
|
||||
//查找空载具
|
||||
private SchBasePoint findStartPoint(String startRegionStr, String vehicleType) {
|
||||
if (StringUtils.isEmpty(startRegionStr)) {
|
||||
return null;
|
||||
}
|
||||
String[] reginList = startRegionStr.split(",");
|
||||
LambdaQueryWrapper<SchBasePoint> lam = new LambdaQueryWrapper<>();
|
||||
lam.in(SchBasePoint::getRegion_code, Arrays.asList(reginList))
|
||||
.eq(SchBasePoint::getPoint_status, PointStatusEnum.EMPTY_VEHICLE.getCode())
|
||||
.eq(SchBasePoint::getCan_vehicle_type, vehicleType)
|
||||
.and(la -> la.isNull(SchBasePoint::getIng_task_code)
|
||||
.or()
|
||||
.eq(SchBasePoint::getIng_task_code, ""))
|
||||
.eq(SchBasePoint::getIs_used, true);
|
||||
List<SchBasePoint> schBasePoints = pointService.list(lam);
|
||||
if (ObjectUtil.isNotEmpty(schBasePoints)) {
|
||||
return schBasePoints.get(0);
|
||||
}
|
||||
if (VehicleTypeEnum.LK_RO1.getCode().equals(vehicleType) || VehicleTypeEnum.LK_RO2.getCode().equals(vehicleType)) {
|
||||
//空托盘从空托盘货架位就近获取,补空料笼从货架及料笼暂存区获取
|
||||
LambdaQueryWrapper<SchBasePoint> tempAreaLam = new LambdaQueryWrapper<>();
|
||||
tempAreaLam.eq(SchBasePoint::getRegion_code, "CDLKZC")
|
||||
.eq(SchBasePoint::getPoint_status, PointStatusEnum.EMPTY_VEHICLE.getCode())
|
||||
.eq(SchBasePoint::getCan_vehicle_type, vehicleType)
|
||||
.and(la -> la.isNull(SchBasePoint::getIng_task_code)
|
||||
.or()
|
||||
.eq(SchBasePoint::getIng_task_code, ""))
|
||||
.eq(SchBasePoint::getIs_used, true);
|
||||
List<SchBasePoint> tempAreaList = pointService.list(tempAreaLam);
|
||||
return ObjectUtil.isNotEmpty(tempAreaList) ? tempAreaList.get(0) : null;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected void updateStatus(String task_code, TaskStatus status) {
|
||||
// 校验任务
|
||||
SchBaseTask taskObj = taskService.getById(task_code);
|
||||
if (taskObj.getTask_status().equals(TaskStatus.FINISHED.getCode())) {
|
||||
throw new BadRequestException("该任务已完成!");
|
||||
}
|
||||
if (taskObj.getTask_status().equals(TaskStatus.CANCELED.getCode())) {
|
||||
throw new BadRequestException("该任务已取消!");
|
||||
}
|
||||
String startPoint = taskObj.getPoint_code1(); // 获取起点
|
||||
String endPoint = taskObj.getPoint_code2(); // 获取终点
|
||||
SchBasePoint startPointObj = pointService.getById(startPoint);
|
||||
SchBasePoint endPointObj = pointService.getById(endPoint);
|
||||
// 根据传来的类型去对任务进行操作
|
||||
if (status.equals(TaskStatus.EXECUTING)) { // 执行中
|
||||
taskObj.setTask_status(TaskStatus.EXECUTING.getCode());
|
||||
taskObj.setRemark("执行中");
|
||||
}
|
||||
if (status.equals(TaskStatus.FINISHED)) { // 完成
|
||||
// 终点解锁
|
||||
endPointObj.setIng_task_code("");
|
||||
endPointObj.setVehicle_code(taskObj.getVehicle_code());
|
||||
// endPointObj.setVehicle_type(taskObj.getVehicle_type());
|
||||
endPointObj.setVehicle_qty(1);
|
||||
endPointObj.setUpdate_time(DateUtil.now());
|
||||
pointService.update(endPointObj);
|
||||
// 起点清空
|
||||
startPointObj.setVehicle_code("");
|
||||
startPointObj.setVehicle_type("");
|
||||
startPointObj.setVehicle_qty(0);
|
||||
startPointObj.setPoint_status(PointStatusEnum.EMPTY_POINT.getCode());
|
||||
startPointObj.setUpdate_time(DateUtil.now());
|
||||
pointService.updateById(startPointObj);
|
||||
// 任务完成
|
||||
taskObj.setTask_status(TaskStatus.FINISHED.getCode());
|
||||
taskObj.setRemark("任务完成");
|
||||
}
|
||||
if (status.equals(TaskStatus.CANCELED)) { // 取消
|
||||
// 终点解锁
|
||||
if (ObjectUtil.isNotEmpty(endPointObj)) {
|
||||
endPointObj.setIng_task_code("");
|
||||
pointService.update(endPointObj);
|
||||
}
|
||||
// 起点解锁
|
||||
if (ObjectUtil.isNotEmpty(startPointObj)) {
|
||||
startPointObj.setIng_task_code("");
|
||||
pointService.update(startPointObj);
|
||||
}
|
||||
taskObj.setRemark("任务取消");
|
||||
taskObj.setTask_status(TaskStatus.CANCELED.getCode());
|
||||
}
|
||||
taskService.update(taskObj);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void forceFinish(String task_code) {
|
||||
this.updateStatus(task_code, TaskStatus.FINISHED);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void cancel(String task_code) {
|
||||
this.updateStatus(task_code, TaskStatus.CANCELED);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void feedbackTaskState(JSONObject param, SchBaseTask schBaseTask, BaseResponse result) {
|
||||
// 反馈上位系统 反馈上位系统成功后,返回200给acs
|
||||
AgvStateParam agvStateParam = new AgvStateParam();
|
||||
agvStateParam.setTask_code(schBaseTask.getTask_code());
|
||||
agvStateParam.setDevice_code(schBaseTask.getPoint_code2());
|
||||
agvStateParam.setVehicle_code(schBaseTask.getVehicle_code());
|
||||
String phase = param.getString("phase");
|
||||
String iotUrl = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("iot_url").getValue();
|
||||
SchBasePoint endPoint = pointService.getById(schBaseTask.getPoint_code2());
|
||||
if ("7".equals(phase)) {
|
||||
//todo 请求放货状态需要修改
|
||||
agvStateParam.setStatus("3");
|
||||
//叉车到位 请求放货
|
||||
String url = iotUrl + "iot/agvarrive";
|
||||
applyIot(url, agvStateParam, result);
|
||||
//锁住终点
|
||||
endPoint.setIng_task_code(schBaseTask.getTask_code());
|
||||
pointService.update(endPoint);
|
||||
}
|
||||
if ("9".equals(phase)) {
|
||||
//todo 请求放货状态需要修改
|
||||
agvStateParam.setStatus("4");
|
||||
//取货完成,请求离开
|
||||
String url = iotUrl + "iot/agvfinish";
|
||||
applyIot(url, agvStateParam, result);
|
||||
//终点解锁 设置载具类型和编码
|
||||
endPoint.setIng_task_code("");
|
||||
// endPoint.setVehicle_code(schBaseTask.getVehicle_code());
|
||||
// endPoint.setVehicle_type(schBaseTask.getVehicle_type());
|
||||
pointService.update(endPoint);
|
||||
}
|
||||
}
|
||||
|
||||
private void applyIot(String url, AgvStateParam agvStateParam, BaseResponse result) {
|
||||
String jsonParam = JSON.toJSONString(agvStateParam);
|
||||
log.info("请求iot参数为:{}", jsonParam);
|
||||
try {
|
||||
String resultMsg = HttpRequest.post(url)
|
||||
.body(jsonParam)
|
||||
.execute().body();
|
||||
JSONObject res = JSONObject.parseObject(resultMsg);
|
||||
if ("200".equals(res.getString("code"))) {
|
||||
log.info("请求iot成功,返回结果为:{}", res);
|
||||
result.setCode(HttpStatus.OK.value());
|
||||
result.setMessage("请求iot成功!");
|
||||
} else {
|
||||
log.error("请求iot失败:{}", res);
|
||||
result.setCode(HttpStatus.BAD_REQUEST.value());
|
||||
result.setMessage("请求iot失败!");
|
||||
}
|
||||
} catch (Exception e) {
|
||||
String msg = e.getMessage();
|
||||
//请求iot失败
|
||||
log.error("请求iot失败:{}", msg);
|
||||
result.setCode(HttpStatus.BAD_REQUEST.value());
|
||||
result.setMessage("请求iot失败!");
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -7,6 +7,8 @@ import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.apache.poi.util.StringUtil;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.config.SpringContextHolder;
|
||||
import org.nl.system.service.param.impl.SysParamServiceImpl;
|
||||
@@ -16,6 +18,7 @@ import org.nl.wms.ext.service.dto.to.iot.AgvStateParam;
|
||||
import org.nl.wms.pdm.service.IPdmBdWorkorderService;
|
||||
import org.nl.wms.sch.group.service.ISchBaseVehiclematerialgroupService;
|
||||
import org.nl.wms.sch.group.service.dao.SchBaseVehiclematerialgroup;
|
||||
import org.nl.wms.sch.materialBind.service.IMaterialVehicleBindService;
|
||||
import org.nl.wms.sch.point.service.ISchBasePointService;
|
||||
import org.nl.wms.sch.point.service.dao.SchBasePoint;
|
||||
import org.nl.wms.sch.task.service.ISchBaseTaskService;
|
||||
@@ -50,10 +53,6 @@ import java.util.List;
|
||||
@Lazy
|
||||
public class FJSLTask extends AbstractTask {
|
||||
private static String TASK_CONFIG_CODE = "FJSLTask";
|
||||
/**
|
||||
* 入口
|
||||
*/
|
||||
private static String ENTRANCE = "1";
|
||||
@Autowired
|
||||
private ISchBasePointService pointService;
|
||||
@Autowired
|
||||
@@ -61,13 +60,9 @@ public class FJSLTask extends AbstractTask {
|
||||
@Autowired
|
||||
private ISchBaseTaskconfigService taskConfigService;
|
||||
@Autowired
|
||||
private IPdmBdWorkorderService workorderService;
|
||||
@Autowired
|
||||
private ISchBaseVehiclematerialgroupService vehiclematerialgroupService;
|
||||
@Autowired
|
||||
private PointMapper pointMapper;
|
||||
@Autowired
|
||||
private WmsToAcsService wmsToAcsService;
|
||||
private IMaterialVehicleBindService materialVehicleBindService;
|
||||
|
||||
@Override
|
||||
// @Transactional(rollbackFor = Exception.class)
|
||||
@@ -78,7 +73,7 @@ public class FJSLTask extends AbstractTask {
|
||||
SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper<SchBaseTaskconfig>()
|
||||
.eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE));
|
||||
for (SchBaseTask task : tasks) {
|
||||
SchBasePoint point = findStartPoint(taskConfig.getStart_region_str());
|
||||
SchBasePoint point = findStartPoint(task, taskConfig.getStart_region_str());
|
||||
if (ObjectUtil.isEmpty(point)) {
|
||||
task.setRemark("未找到所需点位!");
|
||||
taskService.update(task);
|
||||
@@ -88,6 +83,8 @@ public class FJSLTask extends AbstractTask {
|
||||
}
|
||||
// 设置起点并修改创建成功状态
|
||||
task.setPoint_code1(point.getPoint_code());
|
||||
task.setVehicle_code(point.getVehicle_code());
|
||||
task.setVehicle_type(point.getVehicle_type());
|
||||
task.setTask_status(TaskStatus.CREATED.getCode());
|
||||
task.setRemark("");
|
||||
taskService.update(task);
|
||||
@@ -102,14 +99,17 @@ public class FJSLTask extends AbstractTask {
|
||||
}
|
||||
}
|
||||
|
||||
//查找待分拣物料 todo 需要关联组盘信息去查
|
||||
private SchBasePoint findStartPoint(String startRegionStr) {
|
||||
//查找起点,如果上位系统指定起点,直接返回起点,未指定,就从数据库中查找
|
||||
private SchBasePoint findStartPoint(SchBaseTask task, String startRegionStr) {
|
||||
if (StringUtils.isNotEmpty(task.getPoint_code1())) {
|
||||
return pointService.selectByExtPointCode(task.getPoint_code1());
|
||||
}
|
||||
//从待分拣货架查找 物料类型是待分拣物料,物料类型字段尚未确定
|
||||
String[] reginList = startRegionStr.split(",");
|
||||
LambdaQueryWrapper<SchBasePoint> lam = new LambdaQueryWrapper<>();
|
||||
lam.in(SchBasePoint::getRegion_code, Arrays.asList(reginList))
|
||||
.eq(SchBasePoint::getPoint_status, PointStatusEnum.FULL_POINT.getCode())
|
||||
.eq(SchBasePoint::getPoint_type,"1")
|
||||
.eq(SchBasePoint::getCan_vehicle_type, task.getVehicle_type())
|
||||
.and(la -> la.isNull(SchBasePoint::getIng_task_code)
|
||||
.or()
|
||||
.eq(SchBasePoint::getIng_task_code, ""))
|
||||
@@ -146,27 +146,29 @@ public class FJSLTask extends AbstractTask {
|
||||
// 终点解锁
|
||||
endPointObj.setIng_task_code("");
|
||||
endPointObj.setVehicle_code(taskObj.getVehicle_code());
|
||||
endPointObj.setVehicle_code2(taskObj.getVehicle_code2());
|
||||
endPointObj.setVehicle_qty(1);
|
||||
endPointObj.setUpdate_time(DateUtil.now());
|
||||
pointService.update(endPointObj);
|
||||
// 起点清空
|
||||
startPointObj.setVehicle_code("");
|
||||
startPointObj.setVehicle_code2("");
|
||||
startPointObj.setIng_task_code("");
|
||||
startPointObj.setVehicle_type("");
|
||||
startPointObj.setVehicle_qty(0);
|
||||
startPointObj.setPoint_status(PointStatusEnum.EMPTY_POINT.getCode());
|
||||
startPointObj.setUpdate_time(DateUtil.now());
|
||||
pointService.updateById(startPointObj);
|
||||
//todo 分拣上料完成后 组盘信息解绑
|
||||
// SchBaseVehiclematerialgroup vehicleMaterialGroupObj = vehiclematerialgroupService.getById(taskObj.getGroup_id());
|
||||
// vehicleMaterialGroupObj.setGroup_bind_material_status(GroupBindMaterialStatusEnum.UNBOUND.getValue());
|
||||
// vehicleMaterialGroupObj.setPoint_code(endPointObj.getPoint_code());
|
||||
// vehicleMaterialGroupObj.setPoint_name(endPointObj.getPoint_name());
|
||||
// vehicleMaterialGroupObj.setTask_code(taskObj.getTask_code());
|
||||
// vehicleMaterialGroupObj.setMove_way(vehicleMaterialGroupObj.getMove_way() + " -> " + endPointObj.getPoint_code());
|
||||
// vehicleMaterialGroupObj.setUpdate_id(GeneralDefinition.ACS_ID);
|
||||
// vehicleMaterialGroupObj.setUpdate_name(GeneralDefinition.ACS_NAME);
|
||||
// vehicleMaterialGroupObj.setUpdate_time(DateUtil.now());
|
||||
// vehiclematerialgroupService.updateById(vehicleMaterialGroupObj);
|
||||
// 分拣上料完成后 组盘信息解绑
|
||||
SchBaseVehiclematerialgroup vehicleMaterialGroupObj = vehiclematerialgroupService.getById(taskObj.getGroup_id());
|
||||
vehicleMaterialGroupObj.setGroup_bind_material_status(GroupBindMaterialStatusEnum.UNBOUND.getValue());
|
||||
vehicleMaterialGroupObj.setPoint_code(endPointObj.getPoint_code());
|
||||
vehicleMaterialGroupObj.setPoint_name(endPointObj.getPoint_name());
|
||||
vehicleMaterialGroupObj.setTask_code(taskObj.getTask_code());
|
||||
vehicleMaterialGroupObj.setMove_way(vehicleMaterialGroupObj.getMove_way() + " -> " + endPointObj.getPoint_code());
|
||||
vehicleMaterialGroupObj.setUpdate_id(GeneralDefinition.ACS_ID);
|
||||
vehicleMaterialGroupObj.setUpdate_name(GeneralDefinition.ACS_NAME);
|
||||
vehicleMaterialGroupObj.setUpdate_time(DateUtil.now());
|
||||
vehiclematerialgroupService.updateById(vehicleMaterialGroupObj);
|
||||
materialVehicleBindService.deleteByGroupId(vehicleMaterialGroupObj.getGroup_id());
|
||||
// 任务完成
|
||||
taskObj.setTask_status(TaskStatus.FINISHED.getCode());
|
||||
taskObj.setRemark("任务完成");
|
||||
@@ -231,6 +233,7 @@ public class FJSLTask extends AbstractTask {
|
||||
pointService.update(endPoint);
|
||||
}
|
||||
}
|
||||
|
||||
private void applyIot(String url, AgvStateParam agvStateParam, BaseResponse result) {
|
||||
String jsonParam = JSON.toJSONString(agvStateParam);
|
||||
log.info("请求iot参数为:{}", jsonParam);
|
||||
|
||||
@@ -94,6 +94,7 @@ public class FJXLTask extends AbstractTask {
|
||||
* @return
|
||||
*/
|
||||
private SchBasePoint findNextPoint(String nextReginStr) {
|
||||
//todo 添加点位类型为对应载具
|
||||
String[] reginList = nextReginStr.split(",");
|
||||
LambdaQueryWrapper<SchBasePoint> lam = new LambdaQueryWrapper<>();
|
||||
lam.in(SchBasePoint::getRegion_code, Arrays.asList(reginList))
|
||||
|
||||
125
lms/nladmin-ui/src/views/wms/sch/materialBind/index.vue
Normal file
125
lms/nladmin-ui/src/views/wms/sch/materialBind/index.vue
Normal file
@@ -0,0 +1,125 @@
|
||||
<template>
|
||||
<div class="app-container">
|
||||
<!--工具栏-->
|
||||
<div class="head-container">
|
||||
<!--如果想在工具栏加入更多按钮,可以使用插槽方式, slot = 'left' or 'right'-->
|
||||
<crudOperation :permission="permission" />
|
||||
<!--表单组件-->
|
||||
<el-dialog :close-on-click-modal="false" :before-close="crud.cancelCU" :visible.sync="crud.status.cu > 0" :title="crud.status.title" width="500px">
|
||||
<el-form ref="form" :model="form" :rules="rules" size="mini" label-width="80px">
|
||||
<el-form-item label="ID">
|
||||
<el-input v-model="form.id" style="width: 370px;" />
|
||||
</el-form-item>
|
||||
<el-form-item label="物料编码">
|
||||
<el-input v-model="form.material_code" style="width: 370px;" />
|
||||
</el-form-item>
|
||||
<el-form-item label="物料名称">
|
||||
<el-input v-model="form.material_name" style="width: 370px;" />
|
||||
</el-form-item>
|
||||
<el-form-item label="托盘号">
|
||||
<el-input v-model="form.vehicle_code" style="width: 370px;" />
|
||||
</el-form-item>
|
||||
<el-form-item label="物料数量">
|
||||
<el-input v-model="form.material_num" style="width: 370px;" />
|
||||
</el-form-item>
|
||||
<el-form-item label="订单号">
|
||||
<el-input v-model="form.order_code" style="width: 370px;" />
|
||||
</el-form-item>
|
||||
<el-form-item label="位置">
|
||||
<el-input v-model="form.position" style="width: 370px;" />
|
||||
</el-form-item>
|
||||
<el-form-item label="创建时间">
|
||||
<el-input v-model="form.create_time" style="width: 370px;" />
|
||||
</el-form-item>
|
||||
<el-form-item label="修改时间">
|
||||
<el-input v-model="form.update_time" style="width: 370px;" />
|
||||
</el-form-item>
|
||||
<el-form-item label="是否删除">
|
||||
<el-input v-model="form.is_delete" style="width: 370px;" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button type="text" @click="crud.cancelCU">取消</el-button>
|
||||
<el-button :loading="crud.cu === 2" type="primary" @click="crud.submitCU">确认</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
<!--表格渲染-->
|
||||
<el-table ref="table" v-loading="crud.loading" :data="crud.data" size="mini" style="width: 100%;" @selection-change="crud.selectionChangeHandler">
|
||||
<el-table-column type="selection" width="55" />
|
||||
<el-table-column prop="id" label="ID" :min-width="flexWidth('id',crud.data,'ID')"/>
|
||||
<el-table-column prop="material_code" label="物料编码" :min-width="flexWidth('material_code',crud.data,'物料编码')"/>
|
||||
<el-table-column prop="material_name" label="物料名称" :min-width="flexWidth('material_name',crud.data,'物料名称')"/>
|
||||
<el-table-column prop="vehicle_code" label="托盘号" :min-width="flexWidth('vehicle_code',crud.data,'托盘号')"/>
|
||||
<el-table-column prop="material_num" label="物料数量" :min-width="flexWidth('material_num',crud.data,'物料数量')"/>
|
||||
<el-table-column prop="order_code" label="订单号" :min-width="flexWidth('order_code',crud.data,'订单号')"/>
|
||||
<el-table-column prop="position" label="位置" :min-width="flexWidth('position',crud.data,'位置')"/>
|
||||
<el-table-column prop="create_time" label="创建时间" :min-width="flexWidth('create_time',crud.data,'创建时间')"/>
|
||||
<el-table-column prop="update_time" label="修改时间" :min-width="flexWidth('update_time',crud.data,'修改时间')"/>
|
||||
<el-table-column prop="is_delete" label="是否删除" :min-width="flexWidth('is_delete',crud.data,'是否删除')"/>
|
||||
<el-table-column v-permission="[]" label="操作" width="120px" align="center" fixed="right">
|
||||
<template slot-scope="scope">
|
||||
<udOperation
|
||||
:data="scope.row"
|
||||
:permission="permission"
|
||||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<!--分页组件-->
|
||||
<pagination />
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import crudMaterialVehicleBind from './materialVehicleBind'
|
||||
import CRUD, {crud, form, header, presenter} from '@crud/crud'
|
||||
import rrOperation from '@crud/RR.operation'
|
||||
import crudOperation from '@crud/CRUD.operation'
|
||||
import udOperation from '@crud/UD.operation'
|
||||
import pagination from '@crud/Pagination'
|
||||
|
||||
const defaultForm = {
|
||||
id: null,
|
||||
material_code: null,
|
||||
material_name: null,
|
||||
vehicle_code: null,
|
||||
material_num: null,
|
||||
order_code: null,
|
||||
position: null,
|
||||
create_time: null,
|
||||
update_time: null,
|
||||
is_delete: null
|
||||
}
|
||||
export default {
|
||||
name: 'MaterialVehicleBind',
|
||||
components: { pagination, crudOperation, rrOperation, udOperation },
|
||||
mixins: [presenter(), header(), form(defaultForm), crud()],
|
||||
cruds() {
|
||||
return CRUD({
|
||||
title: '载具物料信息绑定',
|
||||
url: 'api/materialVehicleBind',
|
||||
idField: 'id',
|
||||
sort: 'id,desc',
|
||||
crudMethod: { ...crudMaterialVehicleBind }
|
||||
})
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
permission: {
|
||||
},
|
||||
rules: {
|
||||
} }
|
||||
},
|
||||
methods: {
|
||||
// 钩子:在获取表格数据之前执行,false 则代表不获取数据
|
||||
[CRUD.HOOK.beforeRefresh]() {
|
||||
return true
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
</style>
|
||||
@@ -0,0 +1,27 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
export function add(data) {
|
||||
return request({
|
||||
url: 'api/materialVehicleBind',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
export function del(ids) {
|
||||
return request({
|
||||
url: 'api/materialVehicleBind/',
|
||||
method: 'delete',
|
||||
data: ids
|
||||
})
|
||||
}
|
||||
|
||||
export function edit(data) {
|
||||
return request({
|
||||
url: 'api/materialVehicleBind',
|
||||
method: 'put',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
export default { add, edit, del }
|
||||
@@ -217,7 +217,7 @@
|
||||
<el-form-item v-if="form.point_status !== '1'" label="子载具编码" prop="vehicle_code2">
|
||||
<el-input v-model="form.vehicle_code2" clearable style="width: 370px;" />
|
||||
</el-form-item>
|
||||
<!-- <el-form-item label="可放载具类型" prop="can_vehicle_types">
|
||||
<el-form-item label="可放载具类型" prop="can_vehicle_types">
|
||||
<el-select v-model="form.can_vehicle_types" multiple placeholder="请选择" clearable style="width: 370px;">
|
||||
<el-option
|
||||
v-for="item in dict.vehicle_type"
|
||||
@@ -226,7 +226,7 @@
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item> -->
|
||||
</el-form-item>
|
||||
<el-form-item label="载具数量" prop="vehicle_qty">
|
||||
<el-input-number v-model="form.vehicle_qty" style="width: 370px;" :controls="false" class="clear-number-input" :min="0" :precision="0" :max="99999" label="载具数量" size="mini" />
|
||||
</el-form-item>
|
||||
|
||||
130
lms/nladmin-ui/src/views/wms/sch/process/index.vue
Normal file
130
lms/nladmin-ui/src/views/wms/sch/process/index.vue
Normal file
@@ -0,0 +1,130 @@
|
||||
<template>
|
||||
<div class="app-container">
|
||||
<!--工具栏-->
|
||||
<div class="head-container">
|
||||
<!--如果想在工具栏加入更多按钮,可以使用插槽方式, slot = 'left' or 'right'-->
|
||||
<crudOperation :permission="permission" />
|
||||
<!--表单组件-->
|
||||
<el-dialog :close-on-click-modal="false" :before-close="crud.cancelCU" :visible.sync="crud.status.cu > 0" :title="crud.status.title" width="500px">
|
||||
<el-form ref="form" :model="form" :rules="rules" size="mini" label-width="80px">
|
||||
<el-form-item label="ID">
|
||||
<el-input v-model="form.order_id" style="width: 370px;" />
|
||||
</el-form-item>
|
||||
<el-form-item label="订单号">
|
||||
<el-input v-model="form.order" style="width: 370px;" />
|
||||
</el-form-item>
|
||||
<el-form-item label="工序">
|
||||
<el-input v-model="form.process" style="width: 370px;" />
|
||||
</el-form-item>
|
||||
<el-form-item label="额定最后期限">
|
||||
<el-input v-model="form.last_time" style="width: 370px;" />
|
||||
</el-form-item>
|
||||
<el-form-item label="创建人标识">
|
||||
<el-input v-model="form.create_id" style="width: 370px;" />
|
||||
</el-form-item>
|
||||
<el-form-item label="创建人">
|
||||
<el-input v-model="form.create_name" style="width: 370px;" />
|
||||
</el-form-item>
|
||||
<el-form-item label="创建时间">
|
||||
<el-input v-model="form.create_time" style="width: 370px;" />
|
||||
</el-form-item>
|
||||
<el-form-item label="修改人标识">
|
||||
<el-input v-model="form.update_id" style="width: 370px;" />
|
||||
</el-form-item>
|
||||
<el-form-item label="修改人">
|
||||
<el-input v-model="form.update_name" style="width: 370px;" />
|
||||
</el-form-item>
|
||||
<el-form-item label="修改时间">
|
||||
<el-input v-model="form.update_time" style="width: 370px;" />
|
||||
</el-form-item>
|
||||
<el-form-item label="是否删除">
|
||||
<el-input v-model="form.is_delete" style="width: 370px;" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button type="text" @click="crud.cancelCU">取消</el-button>
|
||||
<el-button :loading="crud.cu === 2" type="primary" @click="crud.submitCU">确认</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
<!--表格渲染-->
|
||||
<el-table ref="table" v-loading="crud.loading" :data="crud.data" size="mini" style="width: 100%;" @selection-change="crud.selectionChangeHandler">
|
||||
<el-table-column type="selection" width="55" />
|
||||
<el-table-column prop="order_id" label="ID" :min-width="flexWidth('order_id',crud.data,'ID')"/>
|
||||
<el-table-column prop="order" label="订单号" :min-width="flexWidth('order',crud.data,'订单号')"/>
|
||||
<el-table-column prop="process" label="工序" :min-width="flexWidth('process',crud.data,'工序')"/>
|
||||
<el-table-column prop="last_time" label="额定最后期限" :min-width="flexWidth('last_time',crud.data,'额定最后期限')"/>
|
||||
<el-table-column prop="create_id" label="创建人标识" :min-width="flexWidth('create_id',crud.data,'创建人标识')"/>
|
||||
<el-table-column prop="create_name" label="创建人" :min-width="flexWidth('create_name',crud.data,'创建人')"/>
|
||||
<el-table-column prop="create_time" label="创建时间" :min-width="flexWidth('create_time',crud.data,'创建时间')"/>
|
||||
<el-table-column prop="update_id" label="修改人标识" :min-width="flexWidth('update_id',crud.data,'修改人标识')"/>
|
||||
<el-table-column prop="update_name" label="修改人" :min-width="flexWidth('update_name',crud.data,'修改人')"/>
|
||||
<el-table-column prop="update_time" label="修改时间" :min-width="flexWidth('update_time',crud.data,'修改时间')"/>
|
||||
<el-table-column prop="is_delete" label="是否删除" :min-width="flexWidth('is_delete',crud.data,'是否删除')"/>
|
||||
<el-table-column v-permission="[]" label="操作" width="120px" align="center" fixed="right">
|
||||
<template slot-scope="scope">
|
||||
<udOperation
|
||||
:data="scope.row"
|
||||
:permission="permission"
|
||||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<!--分页组件-->
|
||||
<pagination />
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import crudOrderProcess from './orderProcess'
|
||||
import CRUD, {crud, form, header, presenter} from '@crud/crud'
|
||||
import rrOperation from '@crud/RR.operation'
|
||||
import crudOperation from '@crud/CRUD.operation'
|
||||
import udOperation from '@crud/UD.operation'
|
||||
import pagination from '@crud/Pagination'
|
||||
|
||||
const defaultForm = {
|
||||
order_id: null,
|
||||
order: null,
|
||||
process: null,
|
||||
last_time: null,
|
||||
create_id: null,
|
||||
create_name: null,
|
||||
create_time: null,
|
||||
update_id: null,
|
||||
update_name: null,
|
||||
update_time: null,
|
||||
is_delete: null
|
||||
}
|
||||
export default {
|
||||
name: 'OrderProcess',
|
||||
components: { pagination, crudOperation, rrOperation, udOperation },
|
||||
mixins: [presenter(), header(), form(defaultForm), crud()],
|
||||
cruds() {
|
||||
return CRUD({
|
||||
title: '订单工艺信息',
|
||||
url: 'api/orderProcess',
|
||||
idField: 'order_id',
|
||||
sort: 'order_id,desc',
|
||||
crudMethod: { ...crudOrderProcess }
|
||||
})
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
permission: {
|
||||
},
|
||||
rules: {
|
||||
} }
|
||||
},
|
||||
methods: {
|
||||
// 钩子:在获取表格数据之前执行,false 则代表不获取数据
|
||||
[CRUD.HOOK.beforeRefresh]() {
|
||||
return true
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
</style>
|
||||
27
lms/nladmin-ui/src/views/wms/sch/process/orderProcess.js
Normal file
27
lms/nladmin-ui/src/views/wms/sch/process/orderProcess.js
Normal file
@@ -0,0 +1,27 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
export function add(data) {
|
||||
return request({
|
||||
url: 'api/orderProcess',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
export function del(ids) {
|
||||
return request({
|
||||
url: 'api/orderProcess/',
|
||||
method: 'delete',
|
||||
data: ids
|
||||
})
|
||||
}
|
||||
|
||||
export function edit(data) {
|
||||
return request({
|
||||
url: 'api/orderProcess',
|
||||
method: 'put',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
export default { add, edit, del }
|
||||
Reference in New Issue
Block a user