Merge remote-tracking branch 'origin/master_merge' into master_merge

This commit is contained in:
zhangzq
2025-03-03 10:42:56 +08:00
28 changed files with 1035 additions and 179 deletions

View File

@@ -83,4 +83,11 @@ public class ProductOutTwoController {
return new ResponseEntity<>(TableDataInfo.build(productOutTwoService.woodenBoxPoint(whereJson)), HttpStatus.OK);
}
@PostMapping("/boxOut")
@Log("木箱出库")
@SaIgnore
public ResponseEntity<Object> boxOut(@RequestBody JSONObject whereJson) {
return new ResponseEntity<>(productOutTwoService.boxOut(whereJson),HttpStatus.OK);
}
}

View File

@@ -5,6 +5,7 @@ import cn.dev33.satoken.annotation.SaIgnore;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.nl.b_lms.pda.service.VehicleTwoService;
import org.nl.b_lms.pdm.subpackagerelation.service.IpdmBiSubpackagerelationService;
import org.nl.b_lms.sch.point.service.IbstIvtPackageinfoivtService;
import org.nl.modules.logging.annotation.Log;
import org.springframework.beans.factory.annotation.Autowired;
@@ -16,6 +17,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.Map;
/**
* @author liuxy
@@ -29,8 +31,10 @@ public class VehicleTwoController {
@Autowired
private VehicleTwoService vehicleTwoService;
@Resource
@Autowired
private IbstIvtPackageinfoivtService bstIvtPackageInfoIvtService;
@Autowired
private IpdmBiSubpackagerelationService subpackagerelationService;
@PostMapping("/vehicleIn")
@@ -69,4 +73,11 @@ public class VehicleTwoController {
return new ResponseEntity<>(bstIvtPackageInfoIvtService.update(whereJson), HttpStatus.OK);
}
@PostMapping("/toEndSub")
@Log("二期子卷包装解绑")
@SaIgnore
public ResponseEntity<Object> toEndSub(@RequestBody JSONObject whereJson) {
Map result = subpackagerelationService.toEndSubpackagerelation(whereJson.getString("container_name"));
return new ResponseEntity<>(result, HttpStatus.OK);
}
}

View File

@@ -84,4 +84,10 @@ public interface ProductOutTwoService {
*/
List<JSONObject> woodenBoxPoint(JSONObject whereJson);
/**
* 要出库的木箱明细
* @param whereJson 、
* @return 、
*/
JSONObject boxOut(JSONObject whereJson);
}

View File

@@ -13,11 +13,13 @@ import org.nl.b_lms.storage_manage.database.service.IBstIvtBoxinfoService;
import org.nl.b_lms.storage_manage.database.service.IBstIvtBoxlashboundService;
import org.nl.b_lms.storage_manage.database.service.dao.BstIvtBoxlashbound;
import org.nl.b_lms.storage_manage.database.service.dao.mapper.BstIvtBoxinfoMapper;
import org.nl.b_lms.storage_manage.ios.service.iostorInv.util.service.OutBoxManageService;
import org.nl.modules.common.exception.BadRequestException;
import org.nl.modules.wql.core.bean.WQLObject;
import org.nl.modules.wql.util.SpringContextHolder;
import org.nl.wms.ext.acs.service.WmsToAcsService;
import org.nl.wms.pda.st.service.impl.ProductionOutServiceImpl;
import org.nl.wms.sch.manage.TaskStatusEnum;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -46,6 +48,9 @@ public class ProductOutTwoServiceImpl implements ProductOutTwoService {
@Autowired
private IPdmBiOrderbominfoService iPdmBiOrderbominfoService;
@Autowired
private OutBoxManageService outBoxManageService;
@Override
public JSONObject ivtQuery(JSONObject whereJson) {
@@ -190,4 +195,24 @@ public class ProductOutTwoServiceImpl implements ProductOutTwoService {
}
return null;
}
@Override
@Transactional(rollbackFor = Exception.class)
public JSONObject boxOut(JSONObject whereJson) {
// 判断当前是否有正在出库的空托盘任务
JSONArray resultJSONArray = WQLObject.getWQLObject("sch_base_task")
.query("task_type = '010706' and task_status < '" + TaskStatusEnum.FINISHED.getCode() + "' and is_delete = '0'")
.getResultJSONArray(0);
if (ObjectUtil.isNotEmpty(resultJSONArray)) {
throw new BadRequestException("当前正在执行空托盘出库任务,请稍后再出库!");
}
List<JSONObject> data = whereJson.getJSONArray("data").toJavaList(JSONObject.class);
outBoxManageService.publicBoxOut(data);
JSONObject result = new JSONObject();
result.put("message", "下发出库成功!");
return result;
}
}

View File

@@ -115,6 +115,13 @@ public interface IpdmBiSubpackagerelationService extends IService<PdmBiSubpackag
void createSubTest(JSONObject jo);
/**
* 解绑子卷包装
* @param code
*/
Map toEndSubpackagerelation(String code);
}

View File

@@ -27,6 +27,7 @@ import org.nl.b_lms.pdm.subpackagerelation.dao.PdmBiSubpackagerelation;
import org.nl.b_lms.pdm.subpackagerelation.dao.mapper.PdmBiSubpackagerelationMapper;
import org.nl.b_lms.pdm.subpackagerelation.dto.PdmBiSubpackagerelationDto;
import org.nl.b_lms.pdm.subpackagerelation.service.IpdmBiSubpackagerelationService;
import org.nl.b_lms.pdm_manage.enums.SUBEnum;
import org.nl.b_lms.sch.point.dao.BstIvtPackageinfoivt;
import org.nl.b_lms.sch.point.dao.mapper.BstIvtPackageinfoivtMapper;
import org.nl.b_lms.sch.point.service.IbstIvtPackageinfoivtService;
@@ -45,6 +46,7 @@ import org.nl.b_lms.storage_manage.ios.service.iostorInv.util.service.OutBoxMana
import org.nl.common.TableDataInfo;
import org.nl.common.domain.query.PageQuery;
import org.nl.common.enums.PackageInfoIvtEnum;
import org.nl.common.utils.MapOf;
import org.nl.common.utils.SecurityUtils;
import org.nl.modules.common.exception.BadRequestException;
import org.nl.modules.wql.core.bean.WQLObject;
@@ -58,6 +60,7 @@ import org.redisson.api.RedissonClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.data.domain.Pageable;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
@@ -369,6 +372,15 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl<PdmBiSubpack
throw new BadRequestException("当前木箱"+boxSn+"库存信息查询不到,请确认");
}
JSONObject boxAttr = boxAttrs.getJSONObject(0);
int hasTask = taskService.count(new QueryWrapper<SchBaseTask>()
.eq("is_delete", "0")
.eq("point_code1", boxAttr.getString("struct_code"))
.lt("task_status", TaskStatusEnum.FINISHED.getCode()));
if (hasTask>0){
throw new BadRequestException("当前空木箱"+boxSn+"存在正在执行的任务,稍后再操作");
}
String task_group_id = null;
if (boxAttr.getString("zdepth").equals(IOSEnum.ZDEPTH_STRUCT.code(""))) {
JSONObject 浅Attr = attrTab
@@ -380,20 +392,20 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl<PdmBiSubpack
if (浅Attr.getString("lock_type").equals(IOSEnum.LOCK_TYPE.code("未锁定"))) {
// 判断浅货位木箱和深货位木箱是否相同规格
task_group_id = outBoxManageService.createBoxMove(浅Attr);
} else if(!浅Attr.getString("lock_type").equals(IOSEnum.LOCK_TYPE.code("箱出库锁"))) {
// 判断是否是空木箱出库锁
} else if (浅Attr.getString("lock_type").equals(IOSEnum.LOCK_TYPE.code("箱出库锁"))) {
int 浅Task = taskService.count(new QueryWrapper<SchBaseTask>()
.eq("is_delete", "0")
.eq("point_code1", 浅Attr.getString("struct_code"))
.lt("task_status", TaskStatusEnum.FINISHED.getCode()));
if (浅Task == 0){
task_group_id = outBoxManageService.createBoxMove(浅Attr);
}
}else {
throw new BadRequestException("当前木箱所在货位"+boxAttr.getString("struct_code")+"对应浅货位存在任务"+浅Attr.getString("task_code"));
}
}
}
int moveTask = taskService.count(new QueryWrapper<SchBaseTask>()
.eq("task_type", "010704")
.eq("is_delete", "0")
.eq("point_code1", boxAttr.getString("struct_code"))
.lt("task_status", TaskStatusEnum.FINISHED.getCode()));
if (moveTask>0){
throw new BadRequestException("当前子卷已经装箱入库");
}
// 生成任务
JSONObject jsonTaskParam = new JSONObject();
jsonTaskParam.put("task_type", "010704");
@@ -701,6 +713,27 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl<PdmBiSubpack
}
@Override
public Map toEndSubpackagerelation(String code) {
HashMap result = MapOf.of("status", HttpStatus.OK.value());
result.put("message", code+"子卷包装解除成功");
if (StringUtils.isEmpty(code)){
throw new BadRequestException("子卷编码不能为空");
}
PdmBiSubpackagerelation containerName = this.getOne(new QueryWrapper<PdmBiSubpackagerelation>().eq("container_name", code));
if (containerName==null){
throw new BadRequestException("当前子卷"+code+"还未生成子卷包装");
}
if (SUBEnum.STATUS.code("入库").equals(containerName.getStatus())
||SUBEnum.STATUS.code("出库").equals(containerName.getStatus())){
throw new BadRequestException("当前子卷"+code+"已完成出入库不允许手动解除");
}
if (StringUtils.isNotEmpty(containerName.getPackage_box_sn())){
result.put("message", code+"子卷包装解除成功,同时确认MES装箱以解绑定");
}
this.removeById(containerName.getWorkorder_id());
return result;
}
}

View File

@@ -0,0 +1,198 @@
package org.nl.b_lms.sch.tasks;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.nl.b_lms.storage_manage.ios.enums.IOSEnum;
import org.nl.common.utils.SecurityUtils;
import org.nl.modules.common.exception.BadRequestException;
import org.nl.modules.wql.core.bean.WQLObject;
import org.nl.wms.sch.AcsTaskDto;
import org.nl.wms.sch.manage.AbstractAcsTask;
import org.nl.wms.sch.manage.TaskStatusEnum;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.List;
import static org.nl.wms.util.TaskUtil.getRoutePlanCode;
/**
* 二期空木箱出库任务类(异常口)
* Created by Lxy on 2024/1/19.
*/
@Service
public class TwoOutBoxExcepTask extends AbstractAcsTask {
/**
* 处理类
*/
private final String THIS_CLASS = TwoOutBoxExcepTask.class.getName();
@Override
public List<AcsTaskDto> addTask() {
/*
* 下发给ACS时需要特殊处理
*/
// 任务表
WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task");
JSONArray arr = taskTab.query("handle_class = '" + THIS_CLASS + "' and task_status = '" + TaskStatusEnum.START_AND_POINT.getCode() + "' and is_delete ='0' AND point_code2 = 'CK2001' order by create_time").getResultJSONArray(0);
ArrayList<AcsTaskDto> resultList = new ArrayList<>();
for (int i = 0; i < arr.size(); i++) {
JSONObject json = arr.getJSONObject(i);
char dtl_type = json.getString("task_type").charAt(json.getString("task_type").length() - 1);
AcsTaskDto dto = AcsTaskDto.builder()
.ext_task_id(json.getString("task_id"))
.task_code(json.getString("task_code"))
.route_plan_code(getRoutePlanCode(json.getString("point_code1")))
.task_type(json.getString("acs_task_type"))
.start_device_code(json.getString("point_code1"))
.next_device_code(json.getString("point_code2"))
.vehicle_code(json.getString("vehicle_code2"))
.vehicle_code2(json.getString("vehicle_code"))
.interaction_json(json.getJSONObject("request_param"))
.priority(json.getString("priority"))
.class_type(json.getString("task_type"))
.dtl_type(String.valueOf(dtl_type))
.product_area(IOSEnum.PRODUCT_AREA.code("BLK"))
.remark(json.getString("remark"))
.build();
resultList.add(dto);
// 更新任务为下发
JSONObject paramMap = new JSONObject();
paramMap.put("task_status", TaskStatusEnum.ISSUE.getCode());
taskTab.update(paramMap, "task_id ='" + json.getString("task_id") + "'");
}
return resultList;
}
@Override
@Transactional(rollbackFor = Exception.class)
public void updateTaskStatus(JSONObject taskObj, String status) {
// 仓位表
WQLObject attrTab = WQLObject.getWQLObject("st_ivt_structattr");
// 任务表
WQLObject taskTab = WQLObject.getWQLObject("sch_base_task");
// 载具信息表
WQLObject extTab = WQLObject.getWQLObject("md_pb_storagevehicleext");
JSONObject jsonTask = taskTab.query("task_id = '" + taskObj.getString("task_id") + "'").uniqueResult(0);
// 更新任务的参数
JSONObject map = new JSONObject();
/*
* 1-执行中, 2-完成 ,0-acs取消
*/
// 执行中
if (status.equals(TaskStatusEnum.EXECUTING.getCode())) {
map.put("task_status", TaskStatusEnum.EXECUTING.getCode());
}
// 完成
if (status.equals(TaskStatusEnum.FINISHED.getCode())) {
map.put("task_status", TaskStatusEnum.FINISHED.getCode());
// 更新仓位
JSONObject jsonAttr = attrTab.query("struct_code = '" + jsonTask.getString("point_code1") + "'").uniqueResult(0);
jsonAttr.put("lock_type", IOSEnum.LOCK_TYPE.code("未锁定"));
jsonAttr.put("storagevehicle_code", "");
attrTab.update(jsonAttr);
// 更新载具信息表
JSONObject param = new JSONObject();
param.put("pcsn", "");
extTab.update(param,"pcsn = '"+jsonTask.getString("vehicle_code") +"'");
}
// 取消
if (status.equals(IOSEnum.IS_NOTANDYES.code(""))) {
if (taskObj.getIntValue("task_status") > Integer.valueOf(TaskStatusEnum.ISSUE.getCode())) {
throw new BadRequestException("任务已执行不能取消");
}
// 更新任务表删除字段
map.put("is_delete", IOSEnum.IS_NOTANDYES.code(""));
// 解锁仓位
JSONObject jsonAttr = attrTab.query("struct_code = '" + jsonTask.getString("point_code1") + "'").uniqueResult(0);
jsonAttr.put("lock_type", IOSEnum.LOCK_TYPE.code("未锁定"));
attrTab.update(jsonAttr);
}
map.put("update_optid", SecurityUtils.getCurrentUserId());
map.put("update_optname", SecurityUtils.getCurrentNickName());
map.put("update_time", DateUtil.now());
WQLObject.getWQLObject("SCH_BASE_Task").update(map, "task_id = '" + taskObj.getString("task_id") + "'");
}
@Override
public void findStartPoint() {
}
@Override
public void findNextPoint() {
}
@Override
@Transactional(rollbackFor = Exception.class)
public String createTask(JSONObject form) {
if (StrUtil.isBlank(form.getString("task_type"))) {
throw new BadRequestException("业务类型不能为空!");
}
if (StrUtil.isBlank(form.getString("start_device_code"))) {
throw new BadRequestException("起点不能为空!");
}
if (StrUtil.isBlank(form.getString("next_device_code"))) {
throw new BadRequestException("终点不能为空!");
}
if (StrUtil.isBlank(form.getString("vehicle_code"))) {
throw new BadRequestException("木箱号不能为空!");
}
JSONObject json = new JSONObject();
json.put("task_id", IdUtil.getSnowflake(1, 1).nextId());
json.put("task_code", IdUtil.getSnowflake(1, 1).nextId());
json.put("task_type", form.getString("task_type"));
json.put("vehicle_code", form.getString("vehicle_code"));
json.put("vehicle_code2", form.getString("vehicle_code2"));
json.put("vehicle_type", form.getString("vehicle_type"));
json.put("task_status", TaskStatusEnum.START_AND_POINT.getCode());
json.put("task_group_id", form.getLongValue("task_group_id"));
json.put("point_code1", form.getString("start_device_code"));
json.put("point_code2", form.getString("next_device_code"));
json.put("request_param", form.getString("request_param"));
json.put("handle_class", this.getClass().getName());
json.put("create_id", SecurityUtils.getCurrentUserId());
json.put("create_name", SecurityUtils.getCurrentUsername());
json.put("create_time", DateUtil.now());
json.put("priority", form.getString("priority"));
json.put("acs_task_type", "7");
WQLObject.getWQLObject("SCH_BASE_Task").insert(json);
return json.getString("task_id");
}
@Override
@Transactional(rollbackFor = Exception.class)
public void forceFinish(String task_id) {
JSONObject taskObj = WQLObject.getWQLObject("SCH_BASE_Task").query("task_id = '" + task_id + "'").uniqueResult(0);
this.updateTaskStatus(taskObj, TaskStatusEnum.FINISHED.getCode());
}
@Override
public void cancel(String task_id) {
JSONObject taskObj = WQLObject.getWQLObject("SCH_BASE_Task").query("task_id = '" + task_id + "'").uniqueResult(0);
this.updateTaskStatus(taskObj, IOSEnum.ACS_RESULT.code("取消"));
}
}

View File

@@ -16,6 +16,7 @@ import org.nl.b_lms.sch.point.dao.StIvtCutpointivt;
import org.nl.b_lms.sch.point.service.IstIvtCutpointivtService;
import org.nl.b_lms.sch.task.dao.SchBaseTask;
import org.nl.b_lms.sch.task.service.IschBaseTaskService;
import org.nl.b_lms.sch.tasks.slitter.util.SlitterTaskUtil;
import org.nl.b_lms.storage_manage.ios.enums.IOSEnum;
import org.nl.common.utils.SecurityUtils;
import org.nl.common.utils.TaskUtils;
@@ -111,17 +112,22 @@ public class SlitterDownTrussTask extends AbstractAcsTask {
log.info("起点数据:{}", point1);
log.info("终点数据:{}", point2);
// 更新分切计划
// 下来的分切计划状态06 -> 09
PdmBiSlittingproductionplan p = new PdmBiSlittingproductionplan();
p.setStatus("09");
p.setEnd_time(DateUtil.now());
TaskUtils.updateOptMessageBySlitterPlan(p);
// 下来的分切计划状态06 -> 09, 设置重量
List<String> downQzzNos = Stream.of(tmpUpQzzNo, tmpDownQzzNo)
.filter(value -> value != null && !value.isEmpty()).collect(Collectors.toList());
log.info("即将下卷的上下轴的气胀轴编码数据:{}", downQzzNos);
slittingproductionplanService.update(p, new LambdaQueryWrapper<PdmBiSlittingproductionplan>()
.in(PdmBiSlittingproductionplan::getQzzno, downQzzNos));
List<PdmBiSlittingproductionplan> downPlans = slittingproductionplanService.getByQzzNos(downQzzNos);
SlitterTaskUtil.setPaperWeightStr(point1.getRemark(), downPlans);
downPlans.forEach(downPlan -> {
downPlan.setStatus("09");
downPlan.setEnd_time(DateUtil.now());
TaskUtils.updateOptMessageBySlitterPlan(downPlan);
});
slittingproductionplanService.updateBatchById(downPlans);
// 设置完了就清空
point1.setRemark("");
// 上去的分切计划状态04 -> 05
PdmBiSlittingproductionplan p = new PdmBiSlittingproductionplan();
p.setStatus("05");
p.setEnd_time("");
List<String> upQzzNos = Stream.of(point2.getQzz_no1(), point2.getQzz_no2())
@@ -130,6 +136,8 @@ public class SlitterDownTrussTask extends AbstractAcsTask {
if (upQzzNos.size() > 0) {
List<PdmBiSlittingproductionplan> plans = slittingproductionplanService.getByQzzNos(upQzzNos);
PdmBiSlittingproductionplan pp = plans.get(0);
// 需要把重量记录到分切机上
point1.setRemark(SlitterTaskUtil.getPaperWeightStr(plans));
if (pp.getContainer_name().contains("虚拟")) {
// 如果是虚拟卷,需要执行删除标记,并且清空数据
// 将分切计划删除,设备禁用
@@ -142,7 +150,6 @@ public class SlitterDownTrussTask extends AbstractAcsTask {
});
slittingproductionplanService.updateBatchById(plans);
// 设备禁用
point1.setIs_used("0");
point1.setUp_qzzno("");
point1.setDown_qzzno("");
} else {

View File

@@ -15,6 +15,7 @@ import org.nl.b_lms.sch.point.dao.StIvtCutpointivt;
import org.nl.b_lms.sch.point.service.IstIvtCutpointivtService;
import org.nl.b_lms.sch.task.dao.SchBaseTask;
import org.nl.b_lms.sch.task.service.IschBaseTaskService;
import org.nl.b_lms.sch.tasks.slitter.util.SlitterTaskUtil;
import org.nl.b_lms.storage_manage.ios.enums.IOSEnum;
import org.nl.common.utils.SecurityUtils;
import org.nl.common.utils.TaskUtils;
@@ -112,6 +113,7 @@ public class UpShaftTrussTask extends AbstractAcsTask {
.filter(value -> value != null && !value.isEmpty()).collect(Collectors.toList());
List<PdmBiSlittingproductionplan> plans = slittingproductionplanService.getByQzzNos(collect);
PdmBiSlittingproductionplan pp = plans.get(0);
String weightStr = SlitterTaskUtil.getPaperWeightStr(plans);
if (pp.getContainer_name().contains("虚拟")) {
// 如果是虚拟卷,需要执行删除标记,并且清空数据
// 将分切计划删除,设备禁用
@@ -124,7 +126,6 @@ public class UpShaftTrussTask extends AbstractAcsTask {
});
slittingproductionplanService.updateBatchById(plans);
// 设备禁用
point2.setIs_used("0");
point2.setUp_qzzno("");
point2.setDown_qzzno("");
} else {
@@ -134,6 +135,7 @@ public class UpShaftTrussTask extends AbstractAcsTask {
slittingproductionplanService.update(p, new LambdaQueryWrapper<PdmBiSlittingproductionplan>()
.in(PdmBiSlittingproductionplan::getQzzno, collect));
}
point2.setRemark(weightStr);
cutpointivtService.updateById(point2);
point1.setQzz_no1("");
point1.setQzz_no2("");

View File

@@ -514,19 +514,19 @@ public class SlitterServiceImpl implements SlitterService {
String area = device.getProduct_area();
// 获取当前分切机的下一组分切计划(最多四条分切计划)
// hint: 获取到的分切可能是不同组的但具有一定时间顺序
List<PdmBiSlittingproductionplan> timePlans = slittingproductionplanService.list(
new LambdaQueryWrapper<PdmBiSlittingproductionplan>()
.eq(PdmBiSlittingproductionplan::getResource_name, device.getExt_code())
.eq(PdmBiSlittingproductionplan::getStatus, "03")
.eq(PdmBiSlittingproductionplan::getIs_delete, "0")
.orderByAsc(PdmBiSlittingproductionplan::getUpdate_time));
log.info("获取下一组分切计划(可能存在脏数据){}", timePlans);
// List<PdmBiSlittingproductionplan> timePlans = slittingproductionplanService.list(
// new LambdaQueryWrapper<PdmBiSlittingproductionplan>()
// .eq(PdmBiSlittingproductionplan::getResource_name, actualDeviceCode)
// .eq(PdmBiSlittingproductionplan::getStatus, "03")
// .eq(PdmBiSlittingproductionplan::getIs_delete, "0")
// .orderByAsc(PdmBiSlittingproductionplan::getUpdate_time));
// log.info("获取下一组分切计划(可能存在脏数据){}", timePlans);
// 寻找备好轴的对接点位
List<BstIvtCutpointivt> cutPointList = slitterMapper.getReadyShaftPoint(device.getExt_code());
List<BstIvtCutpointivt> cutPointList = slitterMapper.getReadyShaftPoint(actualDeviceCode);
// 任务参数
JSONObject taskParam = new JSONObject();
taskParam.put("containers", containers);
if (timePlans.size() == 0 || cutPointList.size() == 0) {
if (cutPointList.size() == 0) {
// 如果没有下一组的分切计划,就只做下卷任务(判断下单/下双)
// 获取分切对接位没任务的空位置
List<BstIvtCutpointivt> emptyPoints = slitterMapper.getEmptyCutPointNotTask(area,
@@ -580,19 +580,16 @@ public class SlitterServiceImpl implements SlitterService {
}
}
}
PdmBiSlittingproductionplan tmpPlan = timePlans.get(0);
// hint: 以第一条为准,过滤和第一条同组同母卷的分切计划
List<PdmBiSlittingproductionplan> nextPlans = timePlans.stream()
.filter(plan -> plan.getParent_container_name().equals(tmpPlan.getParent_container_name())
&& plan.getRestruct_container_name().equals(tmpPlan.getRestruct_container_name())
&& plan.getSplit_group().equals(tmpPlan.getSplit_group()))
// 找到该分切计划的点位
BstIvtCutpointivt newCutPoint = cutPointList.get(0);
List<String> qzznos = Stream.of(newCutPoint.getQzz_no1(), newCutPoint.getQzz_no2()).filter(ObjectUtil::isNotEmpty)
.collect(Collectors.toList());
// hint: 以第一条为准,过滤和第一条同组同母卷的分切计划
List<PdmBiSlittingproductionplan> nextPlans = slittingproductionplanService.getByQzzNos(qzznos);
log.info("获取下一趟分切计划数据:{}", nextPlans);
// 筛选上下轴各一条
PdmBiSlittingproductionplan nextUpPlan = nextPlans.stream().filter(p -> "1".equals(p.getUp_or_down())).findFirst().orElse(null);
PdmBiSlittingproductionplan nextDownPlan = nextPlans.stream().filter(p -> "2".equals(p.getUp_or_down())).findFirst().orElse(null);
// 找到该分切计划的点位
BstIvtCutpointivt newCutPoint = cutPointList.get(0);
String binaryExpress = TaskUtils.binaryConvertExpress(currentUpPlan, currentDownPlan, nextUpPlan, nextDownPlan);
switch (binaryExpress) {
case "00":

View File

@@ -9,6 +9,8 @@ import org.nl.b_lms.pdm.bi.slittingproductionplan.service.dao.PdmBiSlittingprodu
import org.nl.b_lms.sch.tasks.slitter.constant.SlitterConstant;
import org.nl.modules.common.exception.BadRequestException;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
@@ -308,4 +310,103 @@ public class SlitterTaskUtil {
String[] split = paperStr.replaceAll("\\|[\\u4e00-\\u9fa5]+$", "").split("\\|");
return split[split.length - 1];
}
/**
* 设置重量
* @param plans 分切计划
* @return 0,0,0,0
*/
public static void setPaperWeightStr(String weightStr, List<PdmBiSlittingproductionplan> plans) {
// 1. 校验输入格式
String[] parts = weightStr.split(",");
if (parts.length != 4) {
// 没有数据则不修改
return;
}
// 2. 遍历四个位置
for (int index = 0; index < 4; index++) {
// 解析重量值(自动四舍五入到两位小数)
String strValue = parts[index];
BigDecimal value;
try {
value = new BigDecimal(strValue).setScale(2, RoundingMode.HALF_UP);
} catch (NumberFormatException e) {
continue; // 跳过无效数值
}
// 3. 根据索引确定位置规则
String expectedUp, expectedLeft;
switch (index) {
case 0: // 上左
expectedUp = "1";
expectedLeft = "1";
break;
case 1: // 上右
expectedUp = "1";
expectedLeft = "2";
break;
case 2: // 下左
expectedUp = "2";
expectedLeft = "1";
break;
case 3: // 下右
expectedUp = "2";
expectedLeft = "2";
break;
default:
throw new IllegalStateException("非法索引: " + index);
}
// 4. 在集合中查找匹配项并更新
for (PdmBiSlittingproductionplan plan : plans) {
if (expectedUp.equals(plan.getUp_or_down()) &&
expectedLeft.equals(plan.getLeft_or_right())) {
plan.setPaper_weight(value.toString());
break; // 找到后跳出循环
}
}
}
}
/**
* 获取重量
* @param plans 分切计划
* @return 0,0,0,0
*/
public static String getPaperWeightStr(List<PdmBiSlittingproductionplan> plans) {
String[] weights = new String[4];
Arrays.fill(weights, "0");
for (PdmBiSlittingproductionplan plan : plans) {
// 1. 获取重量并四舍五入
String weightStr = plan.getPaper_weight();
BigDecimal weight;
try {
weight = new BigDecimal(weightStr);
} catch (Exception e) {
continue;
}
BigDecimal rounded = weight.setScale(2, RoundingMode.HALF_UP);
// 2. 根据位置确定数组索引
String upDown = plan.getUp_or_down();
String leftRight = plan.getLeft_or_right();
int index = -1;
if ("1".equals(upDown)) {
index = ("1".equals(leftRight)) ? 0 : 1;
} else {
index = ("1".equals(leftRight)) ? 2 : 3;
}
// 3. 更新对应位置的重量(格式化为两位小数)
if (index >= 0 && index < 4) {
weights[index] = rounded.toString();
}
}
// 4. 拼接结果字符串
return String.join(",", weights);
}
}

View File

@@ -8,6 +8,7 @@ import org.nl.b_lms.sch.task.dao.SchBaseTask;
import org.nl.b_lms.sch.task.service.IschBaseTaskService;
import org.nl.b_lms.sch.tasks.TwoExcepionalMoveTask;
import org.nl.b_lms.sch.tasks.TwoMoveBoxTask;
import org.nl.b_lms.sch.tasks.TwoOutBoxExcepTask;
import org.nl.b_lms.sch.tasks.TwoOutBoxTask;
import org.nl.b_lms.storage_manage.database.service.IBstIvtBoxinfoService;
import org.nl.b_lms.storage_manage.database.service.dao.BstIvtBoxinfo;
@@ -210,7 +211,7 @@ public class OutBoxManageServiceImpl implements OutBoxManageService {
throw new BadRequestException("此木箱没有绑定托盘号!"+jsonAttr.getString("storagevehicle_code"));
}
// 锁定起点
jsonAttr.put("lock_type", IOSEnum.LOCK_TYPE.code("箱出库锁"));
jsonAttr.put("lock_type", IOSEnum.LOCK_TYPE.code("箱出库锁"));
attrTab.update(jsonAttr);
// 清空缓存
notOutRowList.clear();
@@ -737,4 +738,132 @@ public class OutBoxManageServiceImpl implements OutBoxManageService {
return jsonTaskParam.getString("task_group_id");
}
@Override
@Transactional(rollbackFor = Exception.class)
public void publicBoxOut(List<JSONObject> list) {
WQLObject attrTab = WQLObject.getWQLObject("st_ivt_structattr");
WQLObject extTab = WQLObject.getWQLObject("md_pb_storagevehicleext");
// 查询需要出库的仓位信息
String struct_code_in = list.stream()
.map(row -> row.getString("struct_code"))
.collect(Collectors.joining("','"));
List<JSONObject> attrList = attrTab.query("struct_code in ('" + struct_code_in + "') AND sect_code = 'BZC01'")
.getResultJSONArray(0).toJavaList(JSONObject.class);
// 获取这些仓位的每排仓位
String row_num_in = attrList.stream()
.map(row -> row.getString("row_num"))
.distinct()
.collect(Collectors.joining("','"));
List<JSONObject> allList = attrTab.query("row_num IN ('" + row_num_in + "') AND sect_code = 'BZC01' AND is_delete = '0'")
.getResultJSONArray(0).toJavaList(JSONObject.class);
// 查询木箱对应的托盘号
String box_no_in = list.stream()
.map(row -> row.getString("box_no"))
.collect(Collectors.joining("','"));
List<JSONObject> extList = extTab.query("pcsn IN ('" + box_no_in + "')")
.getResultJSONArray(0).toJavaList(JSONObject.class);
// 需要移库的木箱仓位
ArrayList<JSONObject> moveList = new ArrayList<>();
// 创建任务
for (JSONObject json : attrList) {
// 判断是否是深货位
if (json.getString("zdepth").equals(IOSEnum.ZDEPTH_STRUCT.code(""))) {
// 查询对应的浅货位
JSONObject jsonShallow = allList.stream()
.filter(row -> row.getString("row_num").equals(json.getString("row_num")) &&
row.getString("col_num").equals(json.getString("col_num")) &&
row.getString("layer_num").equals(json.getString("layer_num")) &&
row.getString("zdepth").equals(IOSEnum.ZDEPTH_STRUCT.code(""))
)
.findFirst().orElse(null);
if (ObjectUtil.isEmpty(jsonShallow)) {
throw new BadRequestException("仓位【"+json.getString("struct_code")+"】对应的浅货位信息错误!");
}
// 判断浅货位是否有空木箱
if (ObjectUtil.isNotEmpty(jsonShallow.getString("storagevehicle_code"))) {
// 判断是否是当前需要出库的集合当中
int size = (int) attrList.stream()
.filter(row -> row.getString("struct_code").equals(jsonShallow.getString("struct_code"))).count();
// 不在要出库的集合当中
if (size == 0) {
// 判断是否被锁定
if (jsonShallow.getString("lock_type").equals(IOSEnum.LOCK_TYPE.code("未锁定"))) {
// 加入要移库的集合当中
moveList.add(jsonShallow);
} else if (!jsonShallow.getString("lock_type").equals(IOSEnum.LOCK_TYPE.code("木箱出库锁"))
&& (!jsonShallow.getString("lock_type").equals(IOSEnum.LOCK_TYPE.code("移出锁")))
) {
throw new BadRequestException("仓位【"+jsonShallow.getString("struct_code")+"】被锁定,无法生成移库任务!");
}
}
}
}
// 校验木箱是否绑定了托盘
JSONObject jsonExt = extList.stream()
.filter(row -> row.getString("pcsn").equals(json.getString("storagevehicle_code")))
.findFirst().orElse(null);
if (ObjectUtil.isEmpty(jsonExt)) {
throw new BadRequestException("此木箱【"+json.getString("storagevehicle_code")+"】没有绑定托盘,请核查");
}
// 创建任务
JSONObject jsonTaskParam = new JSONObject();
jsonTaskParam.put("task_type", "010704");
jsonTaskParam.put("start_device_code", json.getString("struct_code"));
jsonTaskParam.put("next_device_code", IOSEnum.EXCEP_OUT.code("异常出库口"));
jsonTaskParam.put("vehicle_code", json.getString("storagevehicle_code"));
jsonTaskParam.put("vehicle_code2", jsonExt.getString("storagevehicle_code"));
jsonTaskParam.put("task_group_id", IdUtil.getStringId());
jsonTaskParam.put("priority", json.getString("zdepth"));
JSONObject request_param = new JSONObject();
request_param.put("containerType", json.getString("storagevehicle_type"));
jsonTaskParam.put("request_param", request_param.toString());
TwoOutBoxExcepTask twoOutBoxExcepTask = new TwoOutBoxExcepTask();
twoOutBoxExcepTask.createTask(jsonTaskParam);
// 更新仓位锁定状态
json.put("lock_type", IOSEnum.LOCK_TYPE.code("木箱出库锁"));
attrTab.update(json);
}
// 查询移库木箱对应的托盘
String storagevehicle_code_in = moveList.stream()
.map(row -> row.getString("storagevehicle_code"))
.collect(Collectors.joining("','"));
List<JSONObject> extMoveList = extTab.query("pcsn IN ('" + storagevehicle_code_in + "')")
.getResultJSONArray(0).toJavaList(JSONObject.class);
// 此循环为防止下发一部分后报错无法回滚
moveList.forEach(item -> {
// 校验木箱和托盘是否绑定
JSONObject jsonExtMove = extMoveList.stream()
.filter(row -> row.getString("pcsn").equals(item.getString("storagevehicle_code")))
.findFirst().orElse(null);
if (ObjectUtil.isEmpty(jsonExtMove)) {
throw new BadRequestException("此移库木箱【"+jsonExtMove.getString("storagevehicle_code")+"】没有绑定托盘,请核查");
}
});
// 生成移库任务
for (JSONObject jsonMove : moveList) {
// 调用接口生成木箱移库任务
this.createBoxMove(jsonMove);
}
// 下发木箱出库任务
new TwoOutBoxExcepTask().immediateNotifyAcs(null);
}
}

View File

@@ -2,6 +2,8 @@ package org.nl.b_lms.storage_manage.ios.service.iostorInv.util.service;
import com.alibaba.fastjson.JSONObject;
import java.util.List;
/**
* <p>
* 空木箱业务处理 服务类
@@ -52,4 +54,10 @@ public interface OutBoxManageService {
*/
public String createBoxMove(JSONObject jsonObject);
/**
* 根据木箱号出库公共方法(多条数据)
* @param list 需要出库的木箱集合
*/
void publicBoxOut(List<JSONObject> list);
}

View File

@@ -25,38 +25,40 @@
sys_user.extuser_id as extuserId
</sql>
<insert id="insertDataPermission">
INSERT INTO sys_user_data_permission(user_id, permission_scope_type, permission_id)
VALUES (#{dataPermission.user_id}, #{dataPermission.permission_scope_type}, #{dataPermission.permission_id})
INSERT INTO sys_user_data_permission(user_id, permission_scope_type, permission_id) VALUES (#{dataPermission.user_id}, #{dataPermission.permission_scope_type}, #{dataPermission.permission_id})
</insert>
<delete id="deleteDataPermissionById">
DELETE
FROM sys_user_data_permission
WHERE user_id = #{userId}
DELETE FROM sys_user_data_permission WHERE user_id = #{userId}
</delete>
<resultMap id="UserDetail" type="org.nl.system.service.user.dto.SysUserDetail">
<id column="userId" property="user_id"/>
<result column="username" property="username"/>
<result column="personName" property="person_name"/>
<result column="gender" property="gender"/>
<result column="phone" property="phone"/>
<result column="email" property="email"/>
<result column="avatarName" property="avatar_name"/>
<result column="avatarPath" property="avatar_path"/>
<result column="password" property="password"/>
<result column="isAdmin" property="is_admin"/>
<result column="isUsed" property="is_used"/>
<result column="pwdResetUserId" property="pwd_reset_user_id"/>
<result column="pwdResetTime" property="pwd_reset_time"/>
<result column="create_id" property="create_id"/>
<result column="createName" property="create_name"/>
<result column="createTime" property="create_time"/>
<result column="updateId" property="update_id"/>
<result column="updateName" property="update_name"/>
<result column="updateTime" property="update_time"/>
<result column="extpersonId" property="extperson_id"/>
<result column="extuserId" property="extuser_id"/>
<collection property="depts" ofType="org.nl.system.service.dept.dao.SysDept" column="user_id" select="selectDept"></collection>
<collection property="roles" ofType="org.nl.system.service.role.dao.SysRole" column="user_id" select="selectRole"></collection>
<resultMap id="UserDetail" type="org.nl.system.service.user.dto.SysUserDetail" >
<id column="userId" property="user_id" />
<result column="username" property="username" />
<result column="personName" property="person_name" />
<result column="gender" property="gender" />
<result column="phone" property="phone" />
<result column="email" property="email" />
<result column="avatarName" property="avatar_name" />
<result column="avatarPath" property="avatar_path" />
<result column="password" property="password" />
<result column="isAdmin" property="is_admin" />
<result column="isUsed" property="is_used" />
<result column="pwdResetUserId" property="pwd_reset_user_id" />
<result column="pwdResetTime" property="pwd_reset_time" />
<result column="create_id" property="create_id" />
<result column="createName" property="create_name" />
<result column="createTime" property="create_time" />
<result column="updateId" property="update_id" />
<result column="updateName" property="update_name" />
<result column="updateTime" property="update_time" />
<result column="extpersonId" property="extperson_id" />
<result column="extuserId" property="extuser_id" />
<collection property="depts" ofType="org.nl.system.service.dept.dao.SysDept">
<id property="dept_id" column="dept_id"/>
<result column="dept_name" property="name"/>
</collection>
<collection property="roles" ofType="org.nl.system.service.role.dao.SysRole">
<id property="role_id" column="role_id"/>
</collection>
</resultMap>
<select id="getUserDetail" resultMap="UserDetail">
SELECT
@@ -78,30 +80,17 @@
and sys_user.is_used = #{query.is_used}
</if>
<if test="query.start_time != null">
and sys_user.create_time >= #{query.startTime}
and and sys_user.create_time >= #{query.startTime}
</if>
<if test="query.end_time != null">
and #{query.end_time} >= sys_user.create_time
</if>
<if test="query.blurry != null">
and (email like #{query.blurry} or username like concat('%',#{query.blurry},'%') or person_name like concat('%',#{query.blurry},'%'))
and (email like #{query.blurry} or username like #{query.blurry} or person_name like #{query.blurry})
</if>
</where>
</select>
<select id="selectDept" resultType="org.nl.system.service.dept.dao.SysDept">
select
sys_dept.dept_id as deptId,
sys_dept.name as name
from sys_dept
left join sys_user_dept
on sys_user_dept.dept_id = sys_dept.dept_id
where user_id = #{user_id}
</select>
<select id="selectRole" resultType="org.nl.system.service.role.dao.SysRole">
select role_id as roleId
from sys_users_roles
where user_id = #{user_id}
</select>
<select id="getDetailForMap" resultType="java.util.Map">
SELECT
<include refid="Base_Column_List"/>
@@ -134,15 +123,11 @@
</select>
<select id="getUserDataPermissionByPermissionId"
resultType="org.nl.system.service.user.dto.UserDataPermissionDto">
SELECT *
FROM sys_user_data_permission
WHERE permission_id = #{permissionId}
SELECT * FROM sys_user_data_permission WHERE permission_id = #{permissionId}
</select>
<select id="getUserDataPermissionByUserId"
resultType="org.nl.system.service.user.dto.UserDataPermissionDto">
SELECT *
FROM sys_user_data_permission
WHERE user_id = #{userId}
SELECT * FROM sys_user_data_permission WHERE user_id = #{userId}
</select>
<select id="getUserIdByDeptId" resultType="java.lang.String">
SELECT

View File

@@ -140,6 +140,13 @@ public class LmsToMesController {
return new ResponseEntity<>(lmsToMesService.momBoxPackageSubmit(jo), HttpStatus.OK);
}
@PostMapping("/momBoxCheckSubmit")
@Log("LMS将验箱信息传递给MES")
@SaIgnore
public ResponseEntity<Object> momBoxCheckSubmit(@RequestBody JSONObject jo) {
return new ResponseEntity<>(lmsToMesService.BoxDataCollectionSubmit2(jo), HttpStatus.OK);
}
@PostMapping("/GetInspectionResult")
@Log("LMS获取MES称重后子卷信息")
@SaIgnore

View File

@@ -183,5 +183,7 @@ public interface LmsToMesService {
JSONObject momBoxPackageSubmit(JSONObject jo);
JSONObject BoxDataCollectionSubmit2(JSONObject jo);
JSONObject getInspectionResult(JSONObject jo);
}

View File

@@ -38,6 +38,8 @@ public class LmsToMesServiceImpl implements LmsToMesService {
private static String is_connect_mes = "1";
private static Integer time_out = 120000;
@Autowired
private IBstIvtBoxinfoService bstIvtBoxinfoService;
@@ -72,6 +74,7 @@ public class LmsToMesServiceImpl implements LmsToMesService {
try {
String resultMsg = HttpRequest.post(url)
.body(String.valueOf(param))
.timeout(time_out)//超时时间,毫秒
.execute().body();
result = JSONObject.parseObject(resultMsg);
log.info("momRollFoilWeighing接口输出参数为-------------------" + result.toString());
@@ -131,6 +134,7 @@ public class LmsToMesServiceImpl implements LmsToMesService {
try {
String resultMsg = HttpRequest.post(url)
.body(String.valueOf(param))
.timeout(time_out)//超时时间,毫秒
.execute().body();
result = JSONObject.parseObject(resultMsg);
log.info("momRollBakeInBound接口输出参数为-------------------" + result.toString());
@@ -194,6 +198,7 @@ public class LmsToMesServiceImpl implements LmsToMesService {
try {
String resultMsg = HttpRequest.post(url)
.body(String.valueOf(param))
.timeout(time_out)//超时时间,毫秒
.execute().body();
result = JSONObject.parseObject(resultMsg);
log.info("momRollBakeOutBound接口输出参数为-------------------" + result.toString());
@@ -234,6 +239,7 @@ public class LmsToMesServiceImpl implements LmsToMesService {
try {
String resultMsg = HttpRequest.post(url)
.body(String.valueOf(param))
.timeout(time_out)//超时时间,毫秒
.execute().body();
result = JSONObject.parseObject(resultMsg);
log.info("momRollSemiFGInboundComplete接口输出参数为-------------------" + result.toString());
@@ -288,6 +294,7 @@ public class LmsToMesServiceImpl implements LmsToMesService {
try {
String resultMsg = HttpRequest.post(url)
.body(String.valueOf(jo))
.timeout(time_out)//超时时间,毫秒
.execute().body();
result = JSONObject.parseObject(resultMsg);
log.info("airSwellWithPaperTubeAssComplete接口输出参数为-------------------" + result.toString());
@@ -346,6 +353,7 @@ public class LmsToMesServiceImpl implements LmsToMesService {
try {
String resultMsg = HttpRequest.post(url)
.body(String.valueOf(jo))
.timeout(time_out)//超时时间,毫秒
.execute().body();
result = JSONObject.parseObject(resultMsg);
log.info("airSwellWithPaperTubeAssComplete接口输出参数为-------------------" + result.toString());
@@ -396,6 +404,7 @@ public class LmsToMesServiceImpl implements LmsToMesService {
try {
String resultMsg = HttpRequest.post(url)
.body(String.valueOf(jo))
.timeout(time_out)//超时时间,毫秒
.execute().body();
result = JSONObject.parseObject(resultMsg);
log.info("airSwellWithPaperTubeAssArrival接口输出参数为-------------------" + result.toString());
@@ -449,8 +458,10 @@ public class LmsToMesServiceImpl implements LmsToMesService {
String api = "CamstarApi/ChildRollFGInboundComplete";
url = url + api;
try {
String resultMsg = HttpRequest.post(url)
String resultMsg = HttpRequest
.post(url)
.body(String.valueOf(jo))
.timeout(time_out)//超时时间,毫秒
.execute().body();
result = JSONObject.parseObject(resultMsg);
log.info("childRollFGInboundComplete接口输出参数为-------------------" + result.toString());
@@ -493,6 +504,7 @@ public class LmsToMesServiceImpl implements LmsToMesService {
try {
String resultMsg = HttpRequest.post(url)
.body(String.valueOf(param))
.timeout(time_out)//超时时间,毫秒
.execute().body();
result = JSONObject.parseObject(resultMsg);
log.info("childRollFGOutboundComplete接口输出参数为-------------------" + result.toString());
@@ -540,6 +552,7 @@ public class LmsToMesServiceImpl implements LmsToMesService {
try {
String resultMsg = HttpRequest.post(url)
.body(String.valueOf(param))
.timeout(time_out)//超时时间,毫秒
.execute().body();
result = JSONObject.parseObject(resultMsg);
log.info("LMSUnPackage接口输出参数为-------------------" + result.toString());
@@ -587,6 +600,7 @@ public class LmsToMesServiceImpl implements LmsToMesService {
try {
String resultMsg = HttpRequest.post(url)
.body(String.valueOf(param))
.timeout(time_out)//超时时间,毫秒
.execute().body();
result = JSONObject.parseObject(resultMsg);
log.info("LMSPackakge接口输出参数为-------------------" + result.toString());
@@ -623,6 +637,7 @@ public class LmsToMesServiceImpl implements LmsToMesService {
try {
String resultMsg = HttpRequest.post(url)
.body(String.valueOf(param))
.timeout(time_out)//超时时间,毫秒
.execute().body();
result = JSONObject.parseObject(resultMsg);
log.info("scrapAudit接口输出参数为-------------------" + result.toString());
@@ -659,6 +674,7 @@ public class LmsToMesServiceImpl implements LmsToMesService {
try {
String resultMsg = HttpRequest.post(url)
.body(String.valueOf(param))
.timeout(time_out)//超时时间,毫秒
.execute().body();
result = JSONObject.parseObject(resultMsg);
log.info("proudDayData接口输出参数为-------------------" + result.toString());
@@ -700,6 +716,7 @@ public class LmsToMesServiceImpl implements LmsToMesService {
try {
String resultMsg = HttpRequest.post(url)
.body(String.valueOf(param))
.timeout(time_out)//超时时间,毫秒
.execute().body();
result = JSONObject.parseObject(resultMsg);
log.info("ChildScrapUpdate接口输出参数为-------------------" + result.toString());
@@ -736,6 +753,7 @@ public class LmsToMesServiceImpl implements LmsToMesService {
try {
String resultMsg = HttpRequest.post(url)
.timeout(time_out)//超时时间,毫秒
.execute().body();
result = JSONObject.parseObject(resultMsg);
log.info("sendSalesIvtMsg接口输出参数为-------------------" + result.toString());
@@ -771,6 +789,7 @@ public class LmsToMesServiceImpl implements LmsToMesService {
try {
String resultMsg = HttpRequest.post(url)
.body(String.valueOf(param))
.timeout(time_out)//超时时间,毫秒
.execute().body();
result = JSONObject.parseObject(resultMsg);
log.info("sendSalesIvtMsgParam接口输出参数为-------------------" + result.toString());
@@ -825,6 +844,7 @@ public class LmsToMesServiceImpl implements LmsToMesService {
try {
/*String resultMsg = HttpRequest.post(url)
.body(String.valueOf(param))
.timeout(time_out)//超时时间,毫秒
.execute().body();
result = JSONObject.parseObject(resultMsg);
log.info("momAutoTransterMoveIn接口输出参数为-------------------" + result.toString());
@@ -868,6 +888,7 @@ public class LmsToMesServiceImpl implements LmsToMesService {
try {
String resultMsg = HttpRequest.post(url)
.body(String.valueOf(param))
.timeout(time_out)//超时时间,毫秒
.execute().body();
result = JSONObject.parseObject(resultMsg);
log.info("momGetPackingInfo接口输出参数为-------------------" + result.toString());
@@ -931,6 +952,7 @@ public class LmsToMesServiceImpl implements LmsToMesService {
try {
String resultMsg = HttpRequest.post(url)
.body(String.valueOf(param))
.timeout(time_out)//超时时间,毫秒
.execute().body();
result = JSONObject.parseObject(resultMsg);
IpdmBiSubpackagerelationService subpackagerelationService = SpringContextHolder.getBean(IpdmBiSubpackagerelationService.class);
@@ -958,6 +980,69 @@ public class LmsToMesServiceImpl implements LmsToMesService {
return result;
}
@Override
public JSONObject BoxDataCollectionSubmit2(JSONObject param) {
log.info("BoxDataCollectionSubmit2接口输入参数为-------------------" + param.toString());
String box_no = param.getString("box_no");
String box_weight = param.getString("box_weight");
if (StrUtil.isEmpty(box_no)) {
throw new BadRequestException("木箱号不能为空!");
}
if (StrUtil.isEmpty(box_weight)) {
throw new BadRequestException("木箱毛重不能为空!");
}
JSONObject result = new JSONObject();
String url = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("MES_URL2").getValue();
String api = "CamstarApi/BoxDataCollectionSubmit2";
url = url + api;
String UserName = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("MES_USERNAME").getValue();
String Password = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("MES_PASSWORD").getValue();
param.put("UserName", UserName);
param.put("Password", Password);
param.put("BoxContainerName", box_no);
param.put("BoxWeight", box_weight);
JSONArray rows = new JSONArray();
JSONObject row1 = new JSONObject();
row1.put("DataPointName","保护棉是否填充");
row1.put("DataType","7");
row1.put("DataValue","true");
row1.put("DataCollectionDefId","001c61800000004f");
row1.put("DataCollectionDefName","PACKAGE");
row1.put("DataCollectionDefName","PACKAGE");
rows.add(row1);
row1.put("DataPointName","信息核对准确");
rows.add(row1);
row1.put("DataPointName","木箱是否防护");
rows.add(row1);
param.put("DataPoints", rows);
try {
String resultMsg = HttpRequest.post(url)
.body(String.valueOf(param))
.timeout(time_out)//超时时间,毫秒
.execute().body();
result = JSONObject.parseObject(resultMsg);
log.info("BoxDataCollectionSubmit2接口输出参数为-------------------" + result.toString());
String RTYPE = result.getString("RTYPE");
if ("E".equals(RTYPE)) {
throw new BadRequestException(result.getString("RTMSG"));
}
} catch (Exception e) {
throw new BadRequestException("MES提示错误" + e.getMessage());
}
return result;
}
public JSONObject getInspectionResult(JSONObject param) {
log.info("getInspectionResult接口输出参数为-------------------" + param.toString());
@@ -988,6 +1073,7 @@ public class LmsToMesServiceImpl implements LmsToMesService {
try {
String resultMsg = HttpRequest.post(url)
.body(String.valueOf(param))
.timeout(time_out)//超时时间,毫秒
.execute().body();
result = JSONObject.parseObject(resultMsg);
IpdmBiSubpackagerelationService subpackagerelationService = SpringContextHolder.getBean(IpdmBiSubpackagerelationService.class);

View File

@@ -175,7 +175,7 @@ public class RawFoilServiceImpl implements RawFoilService {
if (jsonSb.getString("product_area").equals("B1")) {
// 2.根据就近原则查对应空卷轴
JSONObject map = new JSONObject();
map.put("flag", "6");
map.put("flag", "601");
map.put("product_area", jsonSb.getString("product_area"));
map.put("point_location", jsonSb.getString("point_location"));
// 查找冷却区空轴位状态是空轴的点位

View File

@@ -333,3 +333,39 @@ IF 输入.flag = "6"
ENDQUERY
ENDIF
IF 输入.flag = "601"
QUERY
SELECT
ivt.*
FROM
ST_IVT_CoolPointIvt ivt
WHERE
ivt.empty_point_status = '02'
AND ivt.point_type = '1'
AND
ivt.is_used = '1'
AND NOT EXISTS (
SELECT
*
FROM
sch_base_task
WHERE
( point_code1 = ivt.empty_point_code OR point_code4 = ivt.empty_point_code )
AND task_status < '07'
AND is_delete = '0'
)
OPTION 输入.product_area <> ""
ivt.product_area = 输入.product_area
ENDOPTION
OPTION 输入.point_location <> ""
ivt.point_location = 输入.point_location
ENDOPTION
order by ivt.point_code ASC
ENDSELECT
ENDQUERY
ENDIF

View File

@@ -93,10 +93,10 @@ public class TaskServiceImpl implements TaskService {
map.put("finishTypeList", whereJson.getString("finishTypeList"));
}
if (StrUtil.isNotEmpty(whereJson.getString("begin_time"))) {
map.put("begin_time", whereJson.getString("begin_time"));
map.put("begin_time", whereJson.getString("begin_time").substring(0, 10)+" 00:00:00");
}
if (StrUtil.isNotEmpty(whereJson.getString("end_time"))) {
map.put("end_time", whereJson.getString("end_time"));
map.put("end_time", whereJson.getString("end_time").substring(0, 10)+" 99:99:99");
}
if (StrUtil.isNotEmpty(whereJson.getString("is_delete"))) {
map.put("is_delete", whereJson.getString("is_delete"));

View File

@@ -52,60 +52,59 @@
IF 输入.flag = "1"
PAGEQUERY
SELECT * FROM (
SELECT
task.*,
md.class_name task_type_name,
user.person_name AS create_name1,
dict.label task_status_name,
case when task.task_type like '0105%' then 'LK' when task.task_type like '0107%' then 'LK' ELSE task.product_area end AS final_product_area
FROM
sch_base_task task
LEFT JOIN md_pb_classstandard md ON task.task_type = md.class_code
LEFT JOIN sys_user user ON user.username = task.create_name
LEFT JOIN sys_dict dict ON dict.`value` = task.task_status AND dict.`code` = 'task_status'
WHERE
1=1
OPTION 输入.is_delete <> ""
task.is_delete = 输入.is_delete
SELECT
task.*,
md.class_name task_type_name,
user.person_name AS create_name1,
dict.label task_status_name,
case when task.task_type like '0105%' then 'LK' when task.task_type like '0107%' then 'LK' ELSE task.product_area end AS final_product_area
FROM
(select
tas.*
from
sch_base_task tas
where 1=1
OPTION 输入.is_delete <> ""
tas.is_delete = 输入.is_delete
ENDOPTION
OPTION 输入.finished_type <> ""
tas.finished_type = 输入.finished_type
ENDOPTION
OPTION 输入.unFinish <> ""
tas.task_status <> '07'
ENDOPTION
OPTION 输入.task_status <> ""
find_in_set( tas.task_status, 输入.task_status)
ENDOPTION
OPTION 输入.vehicle_code <> ""
(tas.vehicle_code like 输入.vehicle_code OR tas.material_code like 输入.vehicle_code OR tas.vehicle_code2 like 输入.vehicle_code)
ENDOPTION
OPTION 输入.task_code <> ""
(tas.task_code like 输入.task_code)
ENDOPTION
OPTION 输入.point_code1 <> ""
(tas.point_code1 like 输入.point_code1)
ENDOPTION
OPTION 输入.begin_time <> ""
tas.create_time >= 输入.begin_time
ENDOPTION
OPTION 输入.end_time <> ""
tas.create_time <= 输入.end_time
ENDOPTION
) task
LEFT JOIN md_pb_classstandard md ON task.task_type = md.class_code
LEFT JOIN sys_user user ON user.username = task.create_name
LEFT JOIN sys_dict dict ON dict.`value` = task.task_status AND dict.`code` = 'task_status'
WHERE
1=1
OPTION 输入.task_type <> ""
md.class_id in 输入.task_type
ENDOPTION
) a
WHERE 1=1
OPTION 输入.in_area_id <> ""
a.final_product_area IN 输入.in_area_id
ENDOPTION
OPTION 输入.task_type <> ""
md.class_id in 输入.task_type
ENDOPTION
OPTION 输入.finished_type <> ""
task.finished_type = 输入.finished_type
ENDOPTION
OPTION 输入.begin_time <> ""
task.create_time >= 输入.begin_time
ENDOPTION
OPTION 输入.end_time <> ""
task.create_time <= 输入.end_time
ENDOPTION
OPTION 输入.unFinish <> ""
task.task_status <> '07'
ENDOPTION
OPTION 输入.task_status <> ""
find_in_set( task.task_status, 输入.task_status)
ENDOPTION
OPTION 输入.vehicle_code <> ""
(task.vehicle_code like 输入.vehicle_code OR task.material_code like 输入.vehicle_code OR task.vehicle_code2 like 输入.vehicle_code)
ENDOPTION
OPTION 输入.task_code <> ""
(task.task_code like 输入.task_code)
ENDOPTION
OPTION 输入.point_code1 <> ""
(task.point_code1 like 输入.point_code1)
ENDOPTION
OPTION 输入.begin_time <> ""
task.create_time >= 输入.begin_time
ENDOPTION
OPTION 输入.end_time <> ""
task.create_time <= 输入.end_time
ENDOPTION
) a
WHERE 1=1
OPTION 输入.in_area_id <> ""
a.final_product_area IN 输入.in_area_id
ENDOPTION
ENDSELECT
ENDPAGEQUERY
ENDIF

View File

@@ -1381,6 +1381,7 @@
box_no = 输入.box_no
AND dtl.bill_status < '99'
AND mst.is_delete = '0'
AND mst.io_type = '0'
ENDSELECT
ENDQUERY
ENDIF

View File

@@ -62,6 +62,8 @@ public class InAndOutRetrunServiceImpl implements InAndOutReturnService {
map.put("bill_status", MapUtil.getStr(whereJson, "bill_status"));
map.put("bill_type", MapUtil.getStr(whereJson, "bill_type"));
map.put("is_upload", MapUtil.getStr(whereJson, "is_upload"));
map.put("upload_mes", MapUtil.getStr(whereJson, "upload_mes"));
map.put("upload_sap", MapUtil.getStr(whereJson, "upload_sap"));
String begin_time = MapUtil.getStr(whereJson, "begin_time");
if (StrUtil.isNotEmpty(begin_time)) {
map.put("begin_time", begin_time.substring(0,10)+" 00:00:00");

View File

@@ -21,6 +21,8 @@
输入.stor_id TYPEAS s_string
输入.bill_status TYPEAS s_string
输入.is_upload TYPEAS s_string
输入.upload_mes TYPEAS s_string
输入.upload_sap TYPEAS s_string
输入.begin_time TYPEAS s_string
输入.end_time TYPEAS s_string
输入.vbeln TYPEAS s_string
@@ -96,6 +98,12 @@
OPTION 输入.is_upload <> ""
mst.is_upload = 输入.is_upload
ENDOPTION
OPTION 输入.upload_mes <> ""
mst.upload_mes = 输入.upload_mes
ENDOPTION
OPTION 输入.upload_sap <> ""
mst.upload_sap = 输入.upload_sap
ENDOPTION
OPTION 输入.begin_time <> ""
mst.input_time >= 输入.begin_time
ENDOPTION

View File

@@ -5,6 +5,7 @@ import cn.hutool.core.date.DateUtil;
import cn.hutool.core.date.LocalDateTimeUtil;
import cn.hutool.core.map.MapUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import lombok.RequiredArgsConstructor;
@@ -59,6 +60,7 @@ public class OutBillQueryServiceImpl implements OutBillQueryService {
}
map.put("with", with);
map.put("begin_time", begin_time);
map.put("pcsn", pcsn);
map.put("end_time", end_time);
if (ObjectUtil.isNotEmpty(customer_name)) {
@@ -90,7 +92,21 @@ public class OutBillQueryServiceImpl implements OutBillQueryService {
map.put("bill_type", joiner.toString());
}
map.put("with", with);
map.put("pcsn", pcsn);
// 空格查询
if (StrUtil.isNotEmpty(pcsn)){
// 判断是否有空格
boolean matches = pcsn.matches(".*\\s.*");
if (matches) {
String[] s = pcsn.split(" ");
String pcsn_in = String.join("','", Arrays.asList(s));
map.put("pcsn_in", "('"+pcsn_in+"')");
map.put("pcsn", "");
} else {
map.put("pcsn", pcsn);
}
}
if (ObjectUtil.isNotEmpty(customer_name)) {
map.put("customer_name", "%" + customer_name + "%");
}
@@ -189,7 +205,7 @@ public class OutBillQueryServiceImpl implements OutBillQueryService {
String customer_name = MapUtil.getStr(map, "customer_name");
JSONObject mapParam = new JSONObject();
mapParam.put("flag", "1");
mapParam.put("flag", "11");
mapParam.put("stor_id", stor_id);
if (ObjectUtil.isNotEmpty(bill_types)) {
StringJoiner joiner = new StringJoiner(",", "(", ")");
@@ -263,7 +279,7 @@ public class OutBillQueryServiceImpl implements OutBillQueryService {
String pcsn = MapUtil.getStr(map, "pcsn");
String customer_name = MapUtil.getStr(map, "customer_name");
map.put("flag", "2");
map.put("flag", "22");
map.put("stor_id", stor_id);
if (ObjectUtil.isNotEmpty(bill_types)) {
StringJoiner joiner = new StringJoiner(",", "(", ")");
@@ -273,7 +289,21 @@ public class OutBillQueryServiceImpl implements OutBillQueryService {
map.put("bill_type", joiner.toString());
}
map.put("with", with);
map.put("pcsn", pcsn);
// 空格查询
if (StrUtil.isNotEmpty(pcsn)){
// 判断是否有空格
boolean matches = pcsn.matches(".*\\s.*");
if (matches) {
String[] s = pcsn.split(" ");
String pcsn_in = String.join("','", Arrays.asList(s));
map.put("pcsn_in", "('"+pcsn_in+"')");
map.put("pcsn", "");
} else {
map.put("pcsn", pcsn);
}
}
if (ObjectUtil.isNotEmpty(customer_name)) {
map.put("customer_name", "%" + customer_name + "%");
}
@@ -379,33 +409,40 @@ public class OutBillQueryServiceImpl implements OutBillQueryService {
mp.put("管件描述", json.getString("paper_name"));
mp.put("客户编码", json.getString("customer_name"));
mp.put("发货客户名称", json.getString("customer_description"));
if (ObjectUtil.isEmpty(json.getString("sale_order_name"))) {
throw new BadRequestException("子卷" + json.getString("pcsn") + "销售订单为空!");
}
try {
mp.put("销售订单", json.getString("sale_order_name").substring(0, json.getString("sale_order_name").indexOf("-")));
mp.put("行号", json.getString("sale_order_name").substring(json.getString("sale_order_name").indexOf("-") + 1, json.getString("sale_order_name").length()));
} catch (Exception e) {
mp.put("销售订单", json.getString("sale_order_name"));
mp.put("行号", "");
}
mp.put("销售订单", json.getString("sale_order_name"));
mp.put("行号", "");
mp.put("原销售订单", json.getString("sale_order_name"));
mp.put("原行号", "");
if (ObjectUtil.isNotEmpty(json.getString("sale_order_name"))) {
try {
mp.put("销售订单", json.getString("sale_order_name").substring(0, json.getString("sale_order_name").indexOf("-")));
mp.put("行号", json.getString("sale_order_name").substring(json.getString("sale_order_name").indexOf("-") + 1, json.getString("sale_order_name").length()));
} catch (Exception e) {
mp.put("销售订单", json.getString("sale_order_name"));
mp.put("行号", "");
}
}
// 原销售订单
if (ObjectUtil.isEmpty(jsonSub)) {
try {
mp.put("原销售订单", json.getString("sale_order_name").substring(0, json.getString("sale_order_name").indexOf("-")));
mp.put("行号", json.getString("sale_order_name").substring(json.getString("sale_order_name").indexOf("-") + 1, json.getString("sale_order_name").length()));
} catch (Exception e) {
mp.put("原销售订单", json.getString("sale_order_name"));
mp.put("行号", "");
if (ObjectUtil.isNotEmpty(json.getString("sale_order_name"))) {
try {
mp.put("销售订单", json.getString("sale_order_name").substring(0, json.getString("sale_order_name").indexOf("-")));
mp.put("原行号", json.getString("sale_order_name").substring(json.getString("sale_order_name").indexOf("-") + 1, json.getString("sale_order_name").length()));
} catch (Exception e) {
mp.put("销售订单", json.getString("sale_order_name"));
mp.put("原行号", "");
}
}
} else {
try {
mp.put("原销售订单", jsonSub.getString("sale_order_name").substring(0, jsonSub.getString("sale_order_name").indexOf("-")));
mp.put("行号", jsonSub.getString("sale_order_name").substring(jsonSub.getString("sale_order_name").indexOf("-") + 1, jsonSub.getString("sale_order_name").length()));
} catch (Exception e) {
mp.put("原销售订单", jsonSub.getString("sale_order_name"));
mp.put("行号", "");
if (ObjectUtil.isNotEmpty(jsonSub.getString("sale_order_name"))) {
try {
mp.put("销售订单", jsonSub.getString("sale_order_name").substring(0, jsonSub.getString("sale_order_name").indexOf("-")));
mp.put("原行号", jsonSub.getString("sale_order_name").substring(jsonSub.getString("sale_order_name").indexOf("-") + 1, jsonSub.getString("sale_order_name").length()));
} catch (Exception e) {
mp.put("销售订单", jsonSub.getString("sale_order_name"));
mp.put("原行号", "");
}
}
}

View File

@@ -21,6 +21,7 @@
输入.begin_time TYPEAS s_string
输入.end_time TYPEAS s_string
输入.customer_name TYPEAS s_string
输入.pcsn_in TYPEAS f_string
[临时表]
@@ -148,6 +149,109 @@
ENDPAGEQUERY
ENDIF
IF 输入.flag = "11"
QUERY
SELECT
mst.stor_name,
dis.sect_name,
mst.bill_type,
dtl.vbeln,
base.cust_name,
mst.estimated_freight,
dis.box_no,
mater.material_code,
mater.material_name,
dis.pcsn,
sub.sap_pcsn,
sub.net_weight,
dis.qty_unit_name,
sub.customer_name,
sub.customer_description,
sub.sale_order_name,
mst.input_time,
sub.width,
sub.thickness,
sub.mass_per_unit_area,
mst.input_optname,
case when plan.paper_tube_or_FRP = '1' then '纸管' when plan.paper_tube_or_FRP = '2' then 'FRP管' end AS paper_type,
case when plan.paper_tube_or_FRP = '1' then plan.paper_tube_material when plan.paper_tube_or_FRP = '2' then plan.FRP_material end AS paper_code,
case when plan.paper_tube_or_FRP = '1' then plan.paper_tube_description when plan.paper_tube_or_FRP = '2' then plan.FRP_description end AS paper_name,
mst.remark,
stor.stor_name AS in_stor_name
FROM
(
SELECT
MAX( a.iostorinvdis_id ) AS iostorinvdis_id
FROM
st_ivt_iostorinvdis a
LEFT JOIN st_ivt_iostorinv b ON a.iostorinv_id = b.iostorinv_id
WHERE
b.io_type = '1'
OPTION 输入.bill_type <> ""
b.bill_type IN 输入.bill_type
ENDOPTION
OPTION 输入.pcsn <> ""
a.pcsn = 输入.pcsn
ENDOPTION
AND b.bill_status = '99'
GROUP BY
pcsn
) AS c
LEFT JOIN st_ivt_iostorinvdis dis ON dis.iostorinvdis_id = c.iostorinvdis_id
LEFT JOIN st_ivt_iostorinv mst ON mst.iostorinv_id = dis.iostorinv_id
LEFT JOIN st_ivt_iostorinvdtl dtl ON dtl.iostorinvdtl_id = dis.iostorinvdtl_id
LEFT JOIN md_cs_transportationbase base ON base.cust_code = mst.trans_code
LEFT JOIN md_me_materialbase mater ON mater.material_id = dis.material_id
LEFT JOIN st_ivt_bsrealstorattr stor ON stor.stor_id = mst.out_stor_id
LEFT JOIN pdm_bi_subpackagerelation sub ON sub.container_name = dis.pcsn AND sub.package_box_sn = dis.box_no
LEFT JOIN (SELECT
container_name,
MAX(paper_tube_or_FRP) AS paper_tube_or_FRP,
MAX(paper_tube_material) AS paper_tube_material,
MAX(paper_tube_description) AS paper_tube_description,
MAX(paper_tube_model) AS paper_tube_model,
MAX(FRP_material) AS FRP_material,
MAX(FRP_description) AS FRP_description,
MAX(FRP_model) AS FRP_model
FROM
pdm_bi_slittingproductionplan plan1
WHERE
plan1.is_delete = '0'
GROUP BY container_name) plan ON plan.container_name = sub.container_name
WHERE
mst.io_type = '1'
AND mst.is_delete = '0'
AND mst.bill_status = '99'
OPTION 输入.stor_id <> ""
mst.stor_id = 输入.stor_id
ENDOPTION
OPTION 输入.bill_type <> ""
mst.bill_type IN 输入.bill_type
ENDOPTION
OPTION 输入.begin_time <> ""
mst.input_time >= 输入.begin_time
ENDOPTION
OPTION 输入.end_time <> ""
mst.input_time <= 输入.end_time
ENDOPTION
OPTION 输入.with <> ""
CONCAT(sub.width,'*',sub.thickness) = 输入.with
ENDOPTION
OPTION 输入.customer_name <> ""
(sub.customer_name LIKE 输入.customer_name OR
sub.customer_description LIKE 输入.customer_name)
ENDOPTION
ENDSELECT
ENDQUERY
ENDIF
IF 输入.flag = "2"
PAGEQUERY
SELECT
@@ -200,6 +304,9 @@
OPTION 输入.pcsn <> ""
a.pcsn = 输入.pcsn
ENDOPTION
OPTION 输入.pcsn_in <> ""
a.pcsn IN 输入.pcsn_in
ENDOPTION
OPTION 输入.begin_time <> ""
b.confirm_time >= 输入.begin_time
ENDOPTION
@@ -316,6 +423,9 @@
OPTION 输入.pcsn <> ""
a.pcsn = 输入.pcsn
ENDOPTION
OPTION 输入.pcsn_in <> ""
a.pcsn IN 输入.pcsn_in
ENDOPTION
OPTION 输入.begin_time <> ""
b.confirm_time >= 输入.begin_time
ENDOPTION
@@ -376,7 +486,7 @@
plan1.is_delete = '0'
GROUP BY container_name) plan ON plan.container_name = sub.container_name
WHERE 1=1
limit 0,10000
limit 0,50000
ENDSELECT
ENDQUERY
ENDIF

View File

@@ -88,7 +88,8 @@
start-placeholder="开始日期"
end-placeholder="结束日期"
:default-time="['00:00:00', '23:59:59']"
@change="crud.toQuery"
@input="onInput()"
@change="mytoQuery"
/>
</el-form-item>
</el-col>
@@ -209,8 +210,8 @@ import crudTask from '@/views/wms/sch/task/task'
import CRUD, { crud, 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'
import DateRangePicker from '@/components/DateRangePicker/index'
import Treeselect, { LOAD_CHILDREN_OPTIONS } from '@riophae/vue-treeselect'
import '@riophae/vue-treeselect/dist/vue-treeselect.css'
import crudClassstandard from '@/views/wms/basedata/master/class/classstandard'
@@ -219,7 +220,7 @@ export default {
name: 'Task',
dicts: ['acs_task_type', 'vehicle_type'],
components: {
pagination, crudOperation, rrOperation, Treeselect, udOperation
pagination, crudOperation, rrOperation, Treeselect, DateRangePicker
},
mixins: [presenter(), header(), crud()],
cruds() {
@@ -255,6 +256,7 @@ export default {
permission: {
},
query_flag: true,
rules: {},
classes1: []
}
@@ -267,13 +269,16 @@ export default {
crudTask.getFinishType().then(data => {
this.finishTypeList = data
})
// this.crud.query.task_status = ['-1']
// this.crud.toQuery()
this.crud.query.createTime = [new Date().daysAgo(7), new Date()]
},
methods: {
// 钩子在获取表格数据之前执行false 则代表不获取数据
[CRUD.HOOK.beforeRefresh]() {
return true
if (this.query_flag) {
this.crud.query.begin_time = (new Date().daysAgo(7)).strftime('%F', 'zh')
this.crud.query.end_time = (new Date()).strftime('%F', 'zh')
this.query_flag = false
}
},
initClass1() {
const param = {
@@ -285,6 +290,19 @@ export default {
this.classes1 = data
})
},
onInput() {
this.$forceUpdate()
},
mytoQuery(array1) {
if (array1 === null) {
this.crud.query.begin_time = ''
this.crud.query.end_time = ''
} else {
this.crud.query.begin_time = array1[0]
this.crud.query.end_time = array1[1]
}
this.crud.toQuery()
},
buildTree(classes) {
classes.forEach(data => {
if (data.children) {

View File

@@ -139,6 +139,40 @@
/>
</el-select>
</el-form-item>
<el-form-item label="是否回传MES">
<el-select
v-model="query.upload_mes"
clearable
size="mini"
placeholder="是否回传"
class="filter-item"
@change="crud.toQuery"
>
<el-option
v-for="item in dict.is_upload"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
<el-form-item label="是否回传SAP">
<el-select
v-model="query.upload_sap"
clearable
size="mini"
placeholder="是否回传"
class="filter-item"
@change="crud.toQuery"
>
<el-option
v-for="item in dict.is_upload"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
<el-form-item label="单据日期">
<el-date-picker
v-model="query.createTime"