fix 手持功能和混碾业务优化,任务区分优先级

This commit is contained in:
周俊杰
2024-06-25 15:06:49 +08:00
parent 30bc589867
commit d498644828
28 changed files with 312 additions and 60 deletions

View File

@@ -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());

View File

@@ -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);

View File

@@ -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));

View File

@@ -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");

View File

@@ -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() {

View File

@@ -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>

View File

@@ -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);
}

View File

@@ -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>

View File

@@ -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();

View File

@@ -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("操作成功");
}
}

View File

@@ -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);
}

View File

@@ -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;
}

View File

@@ -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);
}
}

View File

@@ -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;
}
}

View File

@@ -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,

View File

@@ -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")) {

View File

@@ -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);
}

View File

@@ -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>

View File

@@ -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;

View File

@@ -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;
}

View File

@@ -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());

View File

@@ -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;

View File

@@ -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());

View File

@@ -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)) {

View File

@@ -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

View File

@@ -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());
}
}

View File

@@ -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="性别">

View File

@@ -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" />