fix 手持功能和混碾业务优化,任务区分优先级
This commit is contained in:
@@ -133,7 +133,7 @@ public class NDCAgvServiceImpl implements NDCAgvService {
|
||||
if (StrUtil.equals(acsConfigService.findByCode(AcsConfig.FORKAGV).getValue(), "1")) {
|
||||
String instcode = inst.getInstruction_code();
|
||||
int type = Integer.parseInt(inst.getInstruction_type());
|
||||
int priority = Integer.parseInt(inst.getPriority()) + 128;
|
||||
int priority = Integer.parseInt(inst.getPriority()+79);
|
||||
DeviceAppService appService = SpringContextHolder.getBean(DeviceAppServiceImpl.class);
|
||||
DeviceService deviceService = SpringContextHolder.getBean(DeviceServiceImpl.class);
|
||||
int startAddress = deviceService.queryAddressBydeviceCode(inst.getStart_point_code());
|
||||
|
||||
@@ -105,7 +105,7 @@ public class ItemProtocol {
|
||||
setIsonline(true);
|
||||
return value;
|
||||
}
|
||||
return 0;
|
||||
return -1;
|
||||
}
|
||||
public String getOpcStringValue(String protocol) {
|
||||
String value = this.driver.getStringValue(protocol);
|
||||
|
||||
@@ -192,24 +192,6 @@ public class LnshStationDeviceDriver extends AbstractOpcDeviceDriver implements
|
||||
logServer.deviceExecuteLog(this.device_code, "", "", "信号action:" + last_action + " -> " + action);
|
||||
lucene.deviceItemValue(this.device_code, "action", String.valueOf(action));
|
||||
lucene.deviceExecuteLog(new LuceneLogDto(this.device_code, message + "信号action:" + last_action + " -> " + action));
|
||||
if ("true".equals(this.device.getExtraValue().get("sendDeviceStatus"))) {
|
||||
ApplySignalStatusRequest request = new ApplySignalStatusRequest();
|
||||
request.setDevice_code(this.getDevice_code());
|
||||
request.setRequest_method_code(RequestMethodEnum.real_time_set_point.getCode());
|
||||
request.setRequest_method_name(RequestMethodEnum.real_time_set_point.getName());
|
||||
request.setAction(String.valueOf(action));
|
||||
ApplySignalStatusResponse resp = JSON.toJavaObject(JSONObject.parseObject(acsToWmsService.applyTask(request)), ApplySignalStatusResponse.class);
|
||||
message = RequestMethodEnum.getName("real_time_set_point") + "real_time_set_point 接口请求LMS...";
|
||||
lucene.deviceExecuteLog(new LuceneLogDto(this.device_code, message + "参数:" + JSON.toJSONString(request)));
|
||||
|
||||
if (resp.getCode() == 200) {
|
||||
message = RequestMethodEnum.getName("real_time_set_point") + "real_time_set_point 接口请求成功" + resp.getMessage();;
|
||||
lucene.deviceExecuteLog(new LuceneLogDto(this.device_code, message + "返回参数:" + JSON.toJSONString(request)));
|
||||
} else {
|
||||
message = RequestMethodEnum.getName("real_time_set_point") + "real_time_set_point 接口请求失败" + resp.getMessage();;
|
||||
lucene.deviceExecuteLog(new LuceneLogDto(this.device_code, message + "返回参数:" + JSON.toJSONString(request)));
|
||||
}
|
||||
}
|
||||
}
|
||||
if (io_action != last_ioaction) {
|
||||
logServer.deviceItemValue(this.device_code, "io_action", String.valueOf(io_action));
|
||||
|
||||
@@ -597,7 +597,7 @@ public class HFHandServiceImpl implements HFHandService {
|
||||
@Override
|
||||
public Map<String, Object> Taskoperation(Map<String, String> jsonObject) throws Exception {
|
||||
JSONObject jo = new JSONObject();
|
||||
String task_uuid = jsonObject.get("inst_uuid");
|
||||
String task_uuid = jsonObject.get("task_uuid");
|
||||
String type = jsonObject.get("type");
|
||||
JSONObject taskjo = WQLObject.getWQLObject("acs_task").query("task_id='" + task_uuid + "'").uniqueResult(0);
|
||||
String task_code = taskjo.getString("task_code");
|
||||
|
||||
@@ -104,6 +104,7 @@ import conveyor_press_station from '@/views/acs/device/driver/lnsh/conveyor_pres
|
||||
import agv_ndc_one from '@/views/acs/device/driver/agv/agv_ndc_one'
|
||||
import agv_ndc_two from '@/views/acs/device/driver/agv/agv_ndc_two'
|
||||
import package_site from './driver/lnsh/package_site.vue'
|
||||
import lnsh_jcy from '@/views/acs/device/driver/lnsh/lnsh_jcy'
|
||||
|
||||
export default {
|
||||
name: 'DeviceConfig',
|
||||
@@ -112,7 +113,7 @@ export default {
|
||||
standard_conveyor_control, standard_conveyor_monitor, lnsh_mixing_mill, lnsh_press, lnsh_palletizing_manipulator, lnsh_fold_disc_site, lnsh_kiln_lane, lnsh_kiln_truss,
|
||||
lnsh_package_line, lnsh_out_kiln_truss, lnsh_package_pallet_manipulator, lnsh_pallet_storage, lnsh_labeling_machine, lnsh_split_manipulator, lnsh_rgv,
|
||||
lnsh_station, lnsh_Laminating_machine, lnsh_package_site, lnsh_crusher, lnsh_palletizing_manipulator_site,conveyor_ssx_barcode, conveyor_press_station,
|
||||
agv_ndc_one, agv_ndc_two,package_site},
|
||||
agv_ndc_one, agv_ndc_two,package_site,lnsh_jcy},
|
||||
dicts: ['device_type'],
|
||||
mixins: [crud],
|
||||
data() {
|
||||
|
||||
@@ -414,7 +414,7 @@
|
||||
LEFT JOIN sch_base_point p ON g.point_code = p.point_code
|
||||
WHERE g.group_bind_material_status = '2'
|
||||
and p.region_code = 'CYHCX'
|
||||
order by g.update_time desc
|
||||
order by g.update_time
|
||||
</select>
|
||||
<select id="selectOneKilnInfo" resultType="org.nl.wms.cockpit.service.dao.KilnInfoVo">
|
||||
SELECT g.vehicle_code as vehicleCode,
|
||||
@@ -425,7 +425,7 @@
|
||||
LEFT JOIN md_base_material m ON g.material_id = m.material_id
|
||||
WHERE g.group_bind_material_status = '2'
|
||||
and g.point_code = 'RYK01'
|
||||
order by g.update_time desc
|
||||
order by g.update_time
|
||||
</select>
|
||||
<select id="selectTwoKilnInfo" resultType="org.nl.wms.cockpit.service.dao.KilnInfoVo">
|
||||
SELECT g.vehicle_code as vehicleCode,
|
||||
@@ -436,7 +436,7 @@
|
||||
LEFT JOIN md_base_material m ON g.material_id = m.material_id
|
||||
WHERE g.group_bind_material_status = '2'
|
||||
and g.point_code = 'RYK02'
|
||||
order by g.update_time desc
|
||||
order by g.update_time
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
|
||||
@@ -2,9 +2,12 @@ package org.nl.wms.database.material.service.dao.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import org.nl.wms.database.material.service.dao.MdBaseMaterial;
|
||||
import org.nl.wms.database.material.service.dto.MdBaseMaterialQuery;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author lyd
|
||||
* @date 2023-05-05
|
||||
@@ -18,4 +21,12 @@ public interface MdBaseMaterialMapper extends BaseMapper<MdBaseMaterial> {
|
||||
* @return
|
||||
*/
|
||||
IPage<MdBaseMaterial> queryByInventory(IPage<MdBaseMaterial> pages, MdBaseMaterialQuery query);
|
||||
|
||||
/**
|
||||
* 根据物料id查询物料名称
|
||||
*
|
||||
* @param vehicle_code
|
||||
* @return
|
||||
*/
|
||||
Map getMaterialCode(@Param("material_id") String material_id);
|
||||
}
|
||||
|
||||
@@ -47,4 +47,8 @@
|
||||
row_num = 1
|
||||
ORDER BY CTE.total_material_qty DESC
|
||||
</select>
|
||||
<select id="getMaterialCode" resultType="Map">
|
||||
SELECT * FROM md_base_material
|
||||
WHERE md_base_material.material_id= #{material_id}
|
||||
</select>
|
||||
</mapper>
|
||||
|
||||
@@ -265,15 +265,17 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
// 找到当前的设备
|
||||
String deviceCode = param.getString("device_code");
|
||||
String requestNo = param.getString("requestNo");
|
||||
RLock lock = redissonClient.getLock(deviceCode);
|
||||
SchBasePoint basePoint = pointService.getById(deviceCode);
|
||||
String configCode = basePoint.getRegion_code() + "QKTask";
|
||||
RLock lock = redissonClient.getLock(configCode);
|
||||
boolean tryLock = lock.tryLock(0, TimeUnit.SECONDS);
|
||||
try {
|
||||
if (tryLock) {
|
||||
SchBasePoint basePoint = pointService.getById(deviceCode);
|
||||
|
||||
if (ObjectUtil.isEmpty(basePoint)) {
|
||||
throw new BadRequestException(ExceptionConstant.REQUEST_DEVICE_ERROR);
|
||||
throw new BadRequestException("点位错误!");
|
||||
}
|
||||
String configCode = basePoint.getRegion_code() + RequestConstant.CALL_VEHICLE_SUFFIX;
|
||||
|
||||
// 组织参数
|
||||
param.put("config_code", configCode);
|
||||
taskService.apply(param);
|
||||
@@ -299,15 +301,16 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
// 找到当前的设备
|
||||
String deviceCode = param.getString("device_code");
|
||||
String requestNo = param.getString("requestNo");
|
||||
RLock lock = redissonClient.getLock(deviceCode);
|
||||
SchBasePoint basePoint = pointService.getById(deviceCode);
|
||||
String configCode = basePoint.getRegion_code() + "SKTask";
|
||||
RLock lock = redissonClient.getLock(configCode);
|
||||
boolean tryLock = lock.tryLock(0, TimeUnit.SECONDS);
|
||||
try {
|
||||
if (tryLock) {
|
||||
SchBasePoint basePoint = pointService.getById(deviceCode);
|
||||
if (ObjectUtil.isEmpty(basePoint)) {
|
||||
throw new BadRequestException("点位错误!");
|
||||
}
|
||||
String configCode = basePoint.getRegion_code() + "SKTask";
|
||||
|
||||
// 组织参数
|
||||
param.put("config_code", configCode);
|
||||
taskService.apply(param);
|
||||
@@ -333,19 +336,20 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
// 找到当前的设备
|
||||
String deviceCode = param.getString("device_code");
|
||||
String requestNo = param.getString("requestNo");
|
||||
RLock lock = redissonClient.getLock(deviceCode);
|
||||
SchBasePoint basePoint = pointService.getById(deviceCode);
|
||||
String configCode = basePoint.getRegion_code() + "MLTask";
|
||||
RLock lock = redissonClient.getLock(configCode);
|
||||
// 无业务:0
|
||||
int handling = 0;
|
||||
boolean tryLock = lock.tryLock(0, TimeUnit.SECONDS);
|
||||
try {
|
||||
if (tryLock) {
|
||||
SchBasePoint basePoint = pointService.getById(deviceCode);
|
||||
if (ObjectUtil.isEmpty(basePoint)) {
|
||||
throw new BadRequestException("点位错误!");
|
||||
}
|
||||
String configCode = basePoint.getRegion_code() + "MLTask";
|
||||
// 组织参数
|
||||
param.put("config_code", configCode);
|
||||
handling = specialHandling(basePoint.getRegion_code(), param);
|
||||
param.put("special_param", handling);
|
||||
taskService.apply(param);
|
||||
}
|
||||
@@ -941,7 +945,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
try {
|
||||
if (tryLock) {
|
||||
String move = null;
|
||||
if (ObjectUtil.isNotEmpty(actionRequest.getMove())) {
|
||||
if (ObjectUtil.isNotEmpty(actionRequest.getMove()) && !"-1".equals(actionRequest.getMove())) {
|
||||
move = (Integer.parseInt(actionRequest.getMove()) + 1) + "";
|
||||
}
|
||||
String action = actionRequest.getAction();
|
||||
|
||||
@@ -1,23 +1,20 @@
|
||||
package org.nl.wms.pda.controller;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaIgnore;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.common.logging.annotation.Log;
|
||||
import org.nl.wms.das.device.check.service.IDasDeviceCheckRecordService;
|
||||
import org.nl.wms.das.device.check.service.dao.DasDeviceCheckRecord;
|
||||
import org.nl.wms.das.device.operation.service.IDasDeviceOperationRecordService;
|
||||
import org.nl.wms.das.device.operation.service.dao.DasDeviceOperationRecord;
|
||||
import org.nl.wms.pda.service.PdaService;
|
||||
import org.nl.wms.pda.service.dao.dto.*;
|
||||
import org.nl.wms.pda.service.dao.vo.PdaResponseVo;
|
||||
import org.nl.wms.pdm.workorder.service.IPdmBdWorkorderService;
|
||||
import org.nl.wms.pda.service.util.PdaUtils;
|
||||
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.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
@@ -153,5 +150,30 @@ public class PdaController {
|
||||
public ResponseEntity<Object> rgfjskTask(@RequestBody FjReq req) {
|
||||
return new ResponseEntity<>(pdaService.rgfjskTask(req), HttpStatus.OK);
|
||||
}
|
||||
@PostMapping("/mlTask")
|
||||
@Log("混碾压制满料")
|
||||
@ApiOperation("混碾压制满料")
|
||||
public ResponseEntity<Object> mlTask(@RequestBody FjReq req) {
|
||||
return new ResponseEntity<>(pdaService.mlTask(req), HttpStatus.OK);
|
||||
}
|
||||
@PostMapping("/zpxxTask")
|
||||
@Log("查看组盘信息")
|
||||
@ApiOperation("查看组盘信息")
|
||||
public ResponseEntity<Object> zpxxTask(@RequestBody FjReq req) {
|
||||
return new ResponseEntity<>(pdaService.zpxxTask(req), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/vehicleUnbind")
|
||||
@Log("载具解绑")
|
||||
@ApiOperation("载具解绑")
|
||||
public PdaResponseVo vehicleUnbind(@RequestBody JSONObject param) {
|
||||
String point_code = param.getString("point_code");
|
||||
if (StrUtil.isBlank(point_code)) {
|
||||
throw new BadRequestException("点位不能为空!");
|
||||
}
|
||||
pdaService.vehicleUnbind(point_code);
|
||||
return PdaUtils.pdaResultOk("操作成功");
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package org.nl.wms.pda.service;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import org.nl.wms.pda.service.dao.dto.*;
|
||||
import org.nl.wms.pda.service.dao.vo.*;
|
||||
import org.nl.wms.pdm.workorder.service.dao.PdmBdWorkorder;
|
||||
@@ -88,6 +89,10 @@ public interface PdaService {
|
||||
|
||||
PdaResponseVo rgfjskTask(FjReq req);
|
||||
|
||||
PdaResponseVo mlTask(FjReq req);
|
||||
|
||||
JSONObject zpxxTask(FjReq req);
|
||||
|
||||
List<PdmBdWorkorder> getHnWorkOrder();
|
||||
|
||||
List<DropdownListVo> getRgfjPoint();
|
||||
@@ -99,4 +104,11 @@ public interface PdaService {
|
||||
List<DropdownListVo> getCbjPoint();
|
||||
|
||||
List<ShelfInfoVo> packShelfInfo();
|
||||
|
||||
/**
|
||||
* 载具解绑
|
||||
*
|
||||
* @param point_code 点位编码
|
||||
*/
|
||||
void vehicleUnbind(String point_code);
|
||||
}
|
||||
|
||||
@@ -9,4 +9,7 @@ import lombok.Data;
|
||||
public class FjReq {
|
||||
private String startPoint;
|
||||
private String deviceCode;
|
||||
private String weight;
|
||||
private String vehicle_code;
|
||||
private String qty;
|
||||
}
|
||||
|
||||
@@ -11,6 +11,7 @@ import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.wms.database.material.service.IMdBaseMaterialService;
|
||||
import org.nl.wms.database.material.service.dao.MdBaseMaterial;
|
||||
import org.nl.wms.database.material.service.dao.mapper.MdBaseMaterialMapper;
|
||||
import org.nl.wms.ext.acs.service.WmsToAcsService;
|
||||
import org.nl.wms.ext.acs.service.dto.to.acs.DeviceInfoDto;
|
||||
import org.nl.wms.ext.acs.service.dto.to.wms.AcsResponse;
|
||||
@@ -24,6 +25,7 @@ import org.nl.wms.pdm.workorder.service.IPdmBdWorkorderService;
|
||||
import org.nl.wms.pdm.workorder.service.dao.PdmBdWorkorder;
|
||||
import org.nl.wms.sch.group.service.ISchBaseVehiclematerialgroupService;
|
||||
import org.nl.wms.sch.group.service.dao.SchBaseVehiclematerialgroup;
|
||||
import org.nl.wms.sch.group.service.dao.mapper.SchBaseVehiclematerialgroupMapper;
|
||||
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;
|
||||
@@ -40,6 +42,7 @@ import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @Author: lyd
|
||||
@@ -52,6 +55,10 @@ public class PdaServiceImpl implements PdaService {
|
||||
@Autowired
|
||||
private PdaMapper pdaMapper;
|
||||
@Autowired
|
||||
private MdBaseMaterialMapper mdBaseMaterialMapper;
|
||||
@Autowired
|
||||
private SchBaseVehiclematerialgroupMapper vehiclematerialgroupMapper;
|
||||
@Autowired
|
||||
private IPdmBdWorkorderService workorderService;
|
||||
@Autowired
|
||||
private ISchBasePointService pointService;
|
||||
@@ -535,6 +542,44 @@ public class PdaServiceImpl implements PdaService {
|
||||
return PdaResponseVo.pdaResultOk("人工分拣送空请求成功");
|
||||
}
|
||||
|
||||
@Override
|
||||
public PdaResponseVo mlTask(FjReq req) {
|
||||
JSONObject param = new JSONObject();
|
||||
String device_code=req.getDeviceCode();
|
||||
if(device_code.startsWith("HN")) {
|
||||
param.put("device_code", req.getDeviceCode());
|
||||
param.put("qty", req.getQty());
|
||||
param.put("config_code", "HNMLTask");
|
||||
param.put("weight", req.getWeight());
|
||||
param.put("vehicle_code", req.getVehicle_code());
|
||||
taskService.apply(param);
|
||||
}
|
||||
if(device_code.startsWith("YJ")) {
|
||||
param.put("device_code", req.getDeviceCode());
|
||||
param.put("config_code", "YZMLTask");
|
||||
param.put("qty", req.getQty());
|
||||
param.put("weight", req.getWeight());
|
||||
param.put("vehicle_code", req.getVehicle_code());
|
||||
taskService.apply(param);
|
||||
}
|
||||
return PdaResponseVo.pdaResultOk("任务创建成功");
|
||||
}
|
||||
|
||||
@Override
|
||||
public JSONObject zpxxTask(FjReq req) {
|
||||
String vehicle_code=req.getVehicle_code();
|
||||
if(ObjectUtil.isEmpty(vehiclematerialgroupMapper.getVehicleCode(vehicle_code))){
|
||||
throw new BadRequestException("条码信息错误");
|
||||
}
|
||||
Map zpxx =vehiclematerialgroupMapper.getVehicleCode(vehicle_code);
|
||||
Map mcxx=mdBaseMaterialMapper.getMaterialCode(zpxx.get("material_id").toString());
|
||||
JSONObject param = new JSONObject();
|
||||
param.put("material_code",mcxx.get("material_code").toString());
|
||||
param.put("material_qty",zpxx.get("material_qty").toString());
|
||||
param.put("material_weight",zpxx.get("material_weight").toString());
|
||||
param.put("message","条码信息为");
|
||||
return param;
|
||||
}
|
||||
@Override
|
||||
public List<PdmBdWorkorder> getHnWorkOrder() {
|
||||
return pdaMapper.getHnWorkOrder();
|
||||
@@ -595,4 +640,28 @@ public class PdaServiceImpl implements PdaService {
|
||||
group.setCreate_time(DateUtil.now());
|
||||
vehiclematerialgroupService.save(group);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void vehicleUnbind(String point_code) {
|
||||
SchBasePoint basePoint = pointService.getById(point_code);
|
||||
if (ObjectUtil.isNotEmpty(basePoint.getVehicle_code())) {
|
||||
SchBaseVehiclematerialgroup groupInfo=new SchBaseVehiclematerialgroup();
|
||||
if(point_code.startsWith("HCHJ")){
|
||||
groupInfo = vehiclematerialgroupService.getGroupInfo(basePoint.getVehicle_code(),
|
||||
GeneralDefinition.STEEL_TRAY, GroupBindMaterialStatusEnum.BOUND.getValue());
|
||||
}if(point_code.startsWith("KL")){
|
||||
groupInfo = vehiclematerialgroupService.getGroupInfo(basePoint.getVehicle_code(),
|
||||
GeneralDefinition.MATERIAL_CUP, GroupBindMaterialStatusEnum.BOUND.getValue());
|
||||
}
|
||||
log.info("解绑载具数据{}", groupInfo);
|
||||
if (ObjectUtil.isNotEmpty(groupInfo)) {
|
||||
TaskUtils.setGroupUpdateByPC(groupInfo);
|
||||
groupInfo.setGroup_bind_material_status(GroupBindMaterialStatusEnum.UNBOUND.getValue());
|
||||
vehiclematerialgroupService.updateById(groupInfo);
|
||||
}
|
||||
}else{
|
||||
throw new BadRequestException("该位置不存在物料信息");
|
||||
}
|
||||
PointUtils.clearPoint(basePoint);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,50 @@
|
||||
package org.nl.wms.pda.service.util;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import org.nl.wms.pda.service.dao.vo.PdaResponseVo;
|
||||
|
||||
/**
|
||||
* 辽宁晟华手持工具类
|
||||
*
|
||||
* @author 张江玮
|
||||
* @date 2022/11/30 15:53
|
||||
*/
|
||||
public final class PdaUtils {
|
||||
private String message;
|
||||
|
||||
public static PdaResponseVo pdaResultOk(String message) {
|
||||
PdaResponseVo vo = new PdaResponseVo();
|
||||
vo.setMessage(message);
|
||||
return vo;
|
||||
}
|
||||
|
||||
/**
|
||||
* 服务层调用方法
|
||||
* 创建操作成功的 JSONObject 并携带需要返回的数据
|
||||
*
|
||||
* @param result 返回数据,可为 NULL
|
||||
* @return 携带了返回数据的 JSONObject
|
||||
*/
|
||||
public static JSONObject buildSuccessResultJSON(JSON result) {
|
||||
JSONObject resultJSON = new JSONObject();
|
||||
resultJSON.put("code", "1");
|
||||
resultJSON.put("desc", "操作成功!");
|
||||
resultJSON.put("result", result);
|
||||
return resultJSON;
|
||||
}
|
||||
|
||||
/**
|
||||
* 服务层调用方法
|
||||
* 创建操作失败的 JSONObject
|
||||
*
|
||||
* @param desc 错误提示,可为 NULL
|
||||
* @return 自定义错误提示的 JSONObject
|
||||
*/
|
||||
public static JSONObject buildFailResultJSON(String desc) {
|
||||
JSONObject resultJSON = new JSONObject();
|
||||
resultJSON.put("code", "0");
|
||||
resultJSON.put("desc", desc);
|
||||
return resultJSON;
|
||||
}
|
||||
}
|
||||
@@ -45,6 +45,7 @@
|
||||
m.material_model AS formula,
|
||||
m.order_number AS order_number,
|
||||
m.material_code AS material_code,
|
||||
m.raw_material_code As material_model,
|
||||
IF(LENGTH(m.a_long_side) > 0,m.a_long_side,0) AS a,
|
||||
IF(LENGTH(m.b_short_side) > 0,m.b_short_side,0) AS b,
|
||||
IF(LENGTH(m.h_height) > 0,m.h_height,0) AS h,
|
||||
|
||||
@@ -97,6 +97,7 @@ public class PdmBdWorkorderServiceImpl extends ServiceImpl<PdmBdWorkorderMapper,
|
||||
if ("HN".equals(entity.getRegion_code())) {
|
||||
// 如果是混碾就需要清空客户数据
|
||||
entity.setCustomer("");
|
||||
entity.setProduce_order(entity.getMaterial_code());
|
||||
}
|
||||
// 如果是分拣,就特殊处理
|
||||
// if (entity.getRegion_code().equals("FJ")) {
|
||||
|
||||
@@ -3,9 +3,13 @@ package org.nl.wms.sch.group.service.dao.mapper;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
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;
|
||||
|
||||
/**
|
||||
* @author lyd
|
||||
* @date 2023-05-16
|
||||
@@ -17,4 +21,12 @@ public interface SchBaseVehiclematerialgroupMapper extends BaseMapper<SchBaseVeh
|
||||
SchBaseVehiclematerialgroup getGroup(JSONObject entity);
|
||||
|
||||
int getInventoryQtyByMaterialId(String materialId);
|
||||
|
||||
/**
|
||||
* 根据条码获取组盘信息
|
||||
*
|
||||
* @param vehicle_code
|
||||
* @return
|
||||
*/
|
||||
Map getVehicleCode(@Param("vehicle_code") String vehicle_code);
|
||||
}
|
||||
|
||||
@@ -72,4 +72,9 @@
|
||||
AND vg.group_id IS NOT NULL
|
||||
AND vg.material_id = #{materialId}
|
||||
</select>
|
||||
<select id="getVehicleCode" resultType="Map">
|
||||
SELECT * FROM sch_base_vehiclematerialgroup
|
||||
WHERE sch_base_vehiclematerialgroup.vehicle_code= #{vehicle_code}
|
||||
And sch_base_vehiclematerialgroup.group_bind_material_status= '2'
|
||||
</select>
|
||||
</mapper>
|
||||
|
||||
@@ -4,13 +4,19 @@ import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.lang.Assert;
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.hutool.http.HttpRequest;
|
||||
import cn.hutool.http.HttpStatus;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import lombok.SneakyThrows;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.config.SpringContextHolder;
|
||||
import org.nl.system.service.param.dao.Param;
|
||||
import org.nl.system.service.param.impl.SysParamServiceImpl;
|
||||
import org.nl.wms.ext.acs.service.WmsToAcsService;
|
||||
import org.nl.wms.ext.acs.service.dto.to.wms.AcsResponse;
|
||||
import org.nl.wms.pdm.workorder.service.IPdmBdWorkorderService;
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
package org.nl.wms.sch.task_manage.enums;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
|
||||
/**
|
||||
* @Author: zjj
|
||||
* @Description: 混碾货架
|
||||
* @Date: 2024/6/20
|
||||
*/
|
||||
@Getter
|
||||
@AllArgsConstructor
|
||||
public enum HNEnum {
|
||||
/**
|
||||
* 第一层
|
||||
*/
|
||||
FIRST("0", "第一层"),
|
||||
/**
|
||||
* 第二层
|
||||
*/
|
||||
SECOND("1", "第二层");
|
||||
|
||||
|
||||
private String value;
|
||||
private String label;
|
||||
|
||||
}
|
||||
@@ -6,6 +6,7 @@ import cn.hutool.core.util.IdUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.system.service.notice.ISysNoticeService;
|
||||
import org.nl.wms.database.material.service.IMdBaseMaterialService;
|
||||
@@ -158,11 +159,27 @@ public class HNMLTask extends AbstractTask {
|
||||
.or()
|
||||
.eq(SchBasePoint::getIng_task_code, ""))
|
||||
.eq(SchBasePoint::getPoint_status, PointStatusEnum.EMPTY_POINT.getCode())
|
||||
.eq(SchBasePoint::getOut_order_seq,HNEnum.FIRST.getValue())
|
||||
.eq(SchBasePoint::getIs_used, true)
|
||||
.notLike(SchBasePoint::getPoint_code,"CBJ%")
|
||||
.orderByAsc(SchBasePoint::getUpdate_time)
|
||||
.orderByAsc(SchBasePoint::getIn_order_seq)
|
||||
.orderByAsc(SchBasePoint::getPoint_code));
|
||||
if(ObjectUtil.isEmpty(points)){
|
||||
points = pointService.list(new LambdaQueryWrapper<SchBasePoint>()
|
||||
.eq(SchBasePoint::getRegion_code, nextRegionStr.get(0))
|
||||
// 当前执行的任务为空或者NULL,有数据表示锁住
|
||||
.and(la -> la.isNull(SchBasePoint::getIng_task_code)
|
||||
.or()
|
||||
.eq(SchBasePoint::getIng_task_code, ""))
|
||||
.eq(SchBasePoint::getPoint_status, PointStatusEnum.EMPTY_POINT.getCode())
|
||||
.eq(SchBasePoint::getOut_order_seq,HNEnum.SECOND.getValue())
|
||||
.eq(SchBasePoint::getIs_used, true)
|
||||
.notLike(SchBasePoint::getPoint_code,"CBJ%")
|
||||
.orderByAsc(SchBasePoint::getUpdate_time)
|
||||
.orderByAsc(SchBasePoint::getIn_order_seq)
|
||||
.orderByAsc(SchBasePoint::getPoint_code));
|
||||
}
|
||||
}
|
||||
return ObjectUtil.isNotEmpty(points) ? points.get(0) : null;
|
||||
}
|
||||
@@ -304,6 +321,7 @@ public class HNMLTask extends AbstractTask {
|
||||
groupEntity.setCreate_name(GeneralDefinition.ACS_NAME);
|
||||
groupEntity.setCreate_time(DateUtil.now());
|
||||
groupEntity.setVehicle_code(vehicleCode);
|
||||
groupEntity.setRedundance_material_code(productionTask.getProduce_order());
|
||||
groupEntity.setVehicle_type(vehicleType);
|
||||
groupEntity.setSource_vehicle_code(basePoint.getPoint_code());
|
||||
groupEntity.setPoint_code(basePoint.getPoint_code());
|
||||
|
||||
@@ -18,6 +18,8 @@ import org.nl.wms.sch.task_manage.enums.NoticeTypeEnum;
|
||||
import org.nl.wms.sch.task_manage.enums.PointStatusEnum;
|
||||
import org.nl.wms.sch.task_manage.enums.TaskFinishedTypeEnum;
|
||||
import org.nl.wms.sch.task_manage.task.core.TaskStatus;
|
||||
import org.nl.wms.sch.task_manage.task.tasks.dtk.mapper.DTKMapper;
|
||||
import org.nl.wms.sch.task_manage.task.tasks.hn.mapper.HNMapper;
|
||||
import org.nl.wms.util.PointUtils;
|
||||
import org.nl.wms.util.TaskUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
||||
@@ -221,6 +221,8 @@ public class YZMLTask extends AbstractTask {
|
||||
}
|
||||
// 砖块数量
|
||||
Integer qty = param.getInteger("qty");
|
||||
//重量
|
||||
BigDecimal weight=param.getBigDecimal("weight");
|
||||
SchBasePoint basePoint = pointService.getById(deviceCode);
|
||||
PdmBdWorkorder workorderObject = workorderService.getDeviceProductionTask(basePoint.getParent_point_code());
|
||||
// 找到相同组盘信息就修改,避免任务取消组盘信息还存在,重复插入
|
||||
@@ -248,6 +250,7 @@ public class YZMLTask extends AbstractTask {
|
||||
groupEntity.setVehicle_code(vehicleCode);
|
||||
groupEntity.setVehicle_type(vehicleType);
|
||||
groupEntity.setMaterial_qty(qty);
|
||||
groupEntity.setMaterial_weight(weight);
|
||||
groupEntity.setCustomer(workorderObject.getCustomer());
|
||||
groupEntity.setExt_data(JSONObject.toJSONString(stackParameters));
|
||||
groupEntity.setPoint_code(basePoint.getPoint_code());
|
||||
|
||||
@@ -129,19 +129,6 @@ public class YZQLTask extends AbstractTask {
|
||||
Integer materialRatio = workOrder.getMaterial_ratio();
|
||||
// 获取计划重量
|
||||
BigDecimal planWeight = workOrder.getPlan_weight();
|
||||
if (YZPoint.getPoint_type().equals(GeneralDefinition.SPREADER_NEW_MATERIAL)) {
|
||||
BigDecimal newPlanWeight = planWeight.multiply(BigDecimal.valueOf(((double)materialRatio / 100)));
|
||||
if (workOrder.getReal_new_weight().compareTo(newPlanWeight) >= 0) {
|
||||
throw new BadRequestException(ExceptionConstant.exceptionMessage(ExceptionConstant.getCurrentClass()
|
||||
, ExceptionConstant.getLineNumber(), "新料实际量已足够"));
|
||||
}
|
||||
} else {
|
||||
BigDecimal oldWeight = planWeight.multiply(BigDecimal.valueOf((double) ((100 - materialRatio) / 100)));
|
||||
if (workOrder.getReal_new_weight().compareTo(oldWeight) >= 0) {
|
||||
throw new BadRequestException(ExceptionConstant.exceptionMessage(ExceptionConstant.getCurrentClass()
|
||||
, ExceptionConstant.getLineNumber(), "旧料实际量已足够"));
|
||||
}
|
||||
}
|
||||
extGroupData.put("is_new", YZPoint.getPoint_type().equals(GeneralDefinition.SPREADER_NEW_MATERIAL));
|
||||
SchBasePoint point = findStartPoint(startRegionStr, extGroupData);
|
||||
if (ObjectUtil.isEmpty(point)) {
|
||||
|
||||
@@ -14,6 +14,7 @@ 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.constant.GeneralDefinition;
|
||||
import org.nl.wms.sch.task_manage.enums.HNEnum;
|
||||
import org.nl.wms.sch.task_manage.enums.NoticeTypeEnum;
|
||||
import org.nl.wms.sch.task_manage.enums.PointStatusEnum;
|
||||
import org.nl.wms.sch.task_manage.enums.TaskFinishedTypeEnum;
|
||||
@@ -59,9 +60,9 @@ public class YZSKTask extends AbstractTask {
|
||||
SchBasePoint point = findNextPoint(nextRegionStr);
|
||||
if (ObjectUtil.isEmpty(point)) {
|
||||
// 消息通知
|
||||
noticeService.createNotice("送空盅任务未找到混料机空位!", TASK_CONFIG_CODE + task.getPoint_code1(),
|
||||
noticeService.createNotice("送空盅任务未找到困料货架空位!", TASK_CONFIG_CODE + task.getPoint_code1(),
|
||||
NoticeTypeEnum.WARN.getCode());
|
||||
throw new BadRequestException("送空盅任务未找到混料机空位!");
|
||||
throw new BadRequestException("送空盅任务未找到困料货架空位!");
|
||||
}
|
||||
// 设置终点并修改创建成功状态
|
||||
task.setPoint_code2(point.getPoint_code());
|
||||
@@ -126,15 +127,29 @@ public class YZSKTask extends AbstractTask {
|
||||
LambdaQueryWrapper<SchBasePoint> lam = new LambdaQueryWrapper<>();
|
||||
lam.in(SchBasePoint::getRegion_code, nextRegionStr)
|
||||
.eq(SchBasePoint::getPoint_status, PointStatusEnum.EMPTY_POINT.getCode())
|
||||
.eq(SchBasePoint::getOut_order_seq,HNEnum.SECOND.getValue())
|
||||
.eq(SchBasePoint::getIs_used, true)
|
||||
.and(la -> la.isNull(SchBasePoint::getIng_task_code) // 当前执行的任务为空或者NULL,有数据表示锁住
|
||||
.or()
|
||||
.eq(SchBasePoint::getIng_task_code, ""))
|
||||
.notLike(SchBasePoint::getPoint_code,"CBJ%")
|
||||
.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;
|
||||
if(ObjectUtil.isEmpty(schBasePoints)){
|
||||
lam.in(SchBasePoint::getRegion_code, nextRegionStr)
|
||||
.eq(SchBasePoint::getPoint_status, PointStatusEnum.EMPTY_POINT.getCode())
|
||||
.and(la -> la.isNull(SchBasePoint::getIng_task_code) // 当前执行的任务为空或者NULL,有数据表示锁住
|
||||
.or()
|
||||
.eq(SchBasePoint::getIng_task_code, ""))
|
||||
.eq(SchBasePoint::getOut_order_seq, HNEnum.FIRST.getValue())
|
||||
.notLike(SchBasePoint::getPoint_code,"CBJ%")
|
||||
.eq(SchBasePoint::getIs_used, true)
|
||||
.orderByAsc(SchBasePoint::getIn_order_seq)
|
||||
.orderByAsc(SchBasePoint::getPoint_code);
|
||||
schBasePoints = pointService.list(lam);
|
||||
}
|
||||
return ObjectUtil.isNotEmpty(schBasePoints) ? schBasePoints.get(0) : null;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -56,6 +56,7 @@ public class TaskUtils {
|
||||
taskObj.setUpdate_time(DateUtil.now());
|
||||
}
|
||||
|
||||
|
||||
public static void setGroupUpdateByAcs(SchBaseVehiclematerialgroup groupEntity) {
|
||||
groupEntity.setUpdate_id(GeneralDefinition.ACS_ID);
|
||||
groupEntity.setUpdate_name(GeneralDefinition.ACS_NAME);
|
||||
@@ -206,4 +207,9 @@ public class TaskUtils {
|
||||
}
|
||||
return result;
|
||||
}
|
||||
public static void addCurrentUpdateColum(JSONObject row) {
|
||||
row.put("update_optid", SecurityUtils.getCurrentUserId());
|
||||
row.put("update_optname", SecurityUtils.getCurrentNickName());
|
||||
row.put("update_time", DateUtil.now());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -91,7 +91,7 @@
|
||||
/>
|
||||
</el-form-item>
|
||||
<br v-if="!crud.status.add">
|
||||
<el-form-item v-if="crud.status.add" label="密码" prop="password">
|
||||
<el-form-item label="密码" prop="password">
|
||||
<el-input v-model="form.password" style="width: 200px;" show-password auto-complete="new-password" />
|
||||
</el-form-item>
|
||||
<el-form-item label="性别">
|
||||
|
||||
@@ -14,6 +14,16 @@
|
||||
label-position="right"
|
||||
label-width="80px"
|
||||
>
|
||||
<el-form-item label="泥料编码">
|
||||
<el-input
|
||||
v-model="query.blurry"
|
||||
clearable
|
||||
size="mini"
|
||||
placeholder="泥料编码"
|
||||
@keyup.enter.native="crud.toQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="物料名称">
|
||||
<el-input
|
||||
v-model="query.blurry"
|
||||
@@ -68,6 +78,7 @@
|
||||
<el-radio v-model="tableRadio" :label="scope.row"><i /></el-radio>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="raw_material_code" label="泥料编码" width="160"/>
|
||||
<el-table-column prop="order_number" label="订单编号" width="160"/>
|
||||
<el-table-column prop="product_code" label="产品编码" width="160" />
|
||||
<el-table-column prop="material_name" label="物料名称" width="160" />
|
||||
|
||||
Reference in New Issue
Block a user