rev:手工入库增加称重校验

This commit is contained in:
2025-11-27 11:23:42 +08:00
parent 9b0849acb5
commit 59a75b9aab

View File

@@ -1,14 +1,19 @@
package org.nl.wms.sch_manage.service.util.tasks;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import org.nl.common.exception.BadRequestException;
import org.nl.common.utils.CodeUtil;
import org.nl.common.utils.SecurityUtils;
import org.nl.config.IdUtil;
import org.nl.config.SpringContextHolder;
import org.nl.system.service.param.dao.Param;
import org.nl.system.service.param.impl.SysParamServiceImpl;
import org.nl.wms.basedata_manage.enums.BaseDataEnum;
import org.nl.wms.sch_manage.enums.TaskEnum;
import org.nl.wms.sch_manage.enums.TaskStatus;
@@ -23,6 +28,7 @@ import org.nl.wms.sch_manage.service.util.TaskType;
import org.nl.wms.warehouse_management.enums.IOSConstant;
import org.nl.wms.warehouse_management.enums.IOSEnum;
import org.nl.wms.warehouse_management.service.IRawAssistIStorService;
import org.nl.wms.warehouse_management.service.dao.IOStorInv;
import org.nl.wms.warehouse_management.service.dao.IOStorInvDis;
import org.nl.wms.warehouse_management.service.dao.mapper.IOStorInvDisMapper;
import org.springframework.beans.factory.annotation.Autowired;
@@ -30,6 +36,7 @@ import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.*;
/**
* <p>
@@ -57,6 +64,12 @@ public class HandInTask extends AbstractTask {
@Autowired
private ISchBasePointService iSchBasePointService;
/**
* 点对点任务类
*/
@Autowired
private PdaPointTask pdaPointTask;
@Override
public String create(JSONObject json) {
SchBaseTask task = new SchBaseTask();
@@ -208,6 +221,68 @@ public class HandInTask extends AbstractTask {
@Override
public JSONObject resultWeigh(SchBaseTask taskObj) {
return null;
// 返回数据
JSONObject resultJson = new JSONObject();
// 查询当前分配明细
List<IOStorInvDis> disDaiList = ioStorInvDisMapper.selectList(
new QueryWrapper<IOStorInvDis>().lambda()
.eq(IOStorInvDis::getTask_id, taskObj.getTask_id())
);
// 查询主表
IOStorInv mstDao = rawAssistIStorService.getById(disDaiList.get(0).getIostorinv_id());
// 校验称重重量与组盘重量是否相符
SysParamServiceImpl sysParamService = SpringContextHolder.getBean(SysParamServiceImpl.class);
Param ParamDao = sysParamService.findByCode("material_weigh");
String value = ParamDao.getValue();
// 物料浮动上限
double value_up = NumberUtil.add(value, mstDao.getTotal_qty().toString()).doubleValue();
// 物料浮动下限
double value_down = NumberUtil.sub(mstDao.getTotal_qty().toString(),value).doubleValue();
// 称重重量
double double_qty = Double.parseDouble(taskObj.getWeigh_qty());
if (value_down <= double_qty && value_up >= double_qty) {
resultJson.put("is_weigh", IOSConstant.ONE);
return resultJson;
} else {
// 取消任务
this.cancelTask(taskObj);
// 备注任务
SchBaseTask taskDao = taskService.getById(taskObj.getTask_id());
taskDao.setRemark("已取消-称重失败!称重重量为【"+taskObj.getWeigh_qty()+"");
taskService.updateById(taskDao);
// 取消分配及删除单据
ArrayList<LinkedHashMap> tableMater = new ArrayList<>();
disDaiList.forEach(item -> {
tableMater.add(JSONObject.parseObject(JSONObject.toJSONString(item), LinkedHashMap.class));
});
Map<String, Object> map = new HashMap<>();
map.put("tableMater",tableMater);
rawAssistIStorService.unDivStruct(map);
// 删除单据
String[] ids = {mstDao.getIostorinv_id()};
rawAssistIStorService.deleteAll(ids);
// 判断是否是库外站点
if (ObjectUtil.isNotEmpty(mstDao.getSource_id())) {
// 创建点对点任务
JSONObject jsonTask = new JSONObject();
jsonTask.put("point_code1", IOSConstant.CZW_POINT);
jsonTask.put("point_code2", mstDao.getSource_id());
jsonTask.put("vehicle_code", taskObj.getVehicle_code());
jsonTask.put("material_id", taskObj.getMaterial_id());
jsonTask.put("material_qty", taskObj.getMaterial_qty());
jsonTask.put("task_type", TaskEnum.TASK_TYPE.code("料箱"));
jsonTask.put("remark", "物料称重失败退回!");
pdaPointTask.create(jsonTask);
}
resultJson.put("is_weigh", IOSConstant.ZERO);
}
return resultJson;
}
}