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

This commit is contained in:
zhouz
2024-07-01 16:45:18 +08:00
114 changed files with 3166 additions and 1097 deletions

View File

@@ -31,11 +31,10 @@
FROM `bst_ivt_cutpointivt` bc
LEFT JOIN pdm_bi_slittingproductionplan pp ON pp.qzzno = bc.qzz_no1
OR pp.qzzno = bc.qzz_no2
LEFT JOIN st_ivt_cutpointivt sc ON sc.ext_code = pp.resource_name
WHERE bc.point_type = #{type}
AND pp.qzz_size = #{size}
<if test="size == '3'">
AND sc.qzz_generation = #{generation}
AND pp.qzz_generation = #{generation}
</if>
AND bc.is_used = '1'
AND bc.point_status = '3'
@@ -46,11 +45,10 @@
</select>
<select id="getAreaNotTaskPointByLocationAreaAndStatus"
resultType="org.nl.b_lms.bst.ivt.cutpointivt.service.dao.BstIvtCutpointivt">
SELECT DISTINCT bic.*, sc.qzz_generation, p.qzz_size
SELECT DISTINCT bic.*, p.qzz_generation, p.qzz_size
FROM bst_ivt_cutpointivt bic
LEFT JOIN pdm_bi_slittingproductionplan p ON ((p.qzzno = bic.qzz_no1 AND IFNULL(bic.qzz_no1,'') != '')
OR (p.qzzno = bic.qzz_no2 AND IFNULL(bic.qzz_no2,'') != ''))
LEFT JOIN st_ivt_cutpointivt sc ON sc.ext_code = p.resource_name
WHERE bic.point_type = '1'
AND bic.is_used = '1'
AND bic.point_status = '3'

View File

@@ -1,5 +1,6 @@
package org.nl.b_lms.bst.ivt.shafttubeivt.controller;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.nl.b_lms.bst.ivt.shafttubeivt.service.dto.BstIvtShafttubeivtQuery;
import org.nl.common.TableDataInfo;
@@ -37,8 +38,7 @@ public class BstIvtShafttubeivtController {
@PostMapping
@Log("新增穿拔轴区点位库存管理")
//@SaCheckPermission("@el.check('bstIvtShafttubeivt:add')")
public ResponseEntity
<Object> create(@Validated @RequestBody BstIvtShafttubeivt entity){
public ResponseEntity <Object> create(@Validated @RequestBody BstIvtShafttubeivt entity){
bstIvtShafttubeivtService.create(entity);
return new ResponseEntity<>(HttpStatus.CREATED);
}
@@ -58,4 +58,12 @@ public class BstIvtShafttubeivtController {
bstIvtShafttubeivtService.deleteAll(ids);
return new ResponseEntity<>(HttpStatus.OK);
}
@Log("设置是否有轴")
//@SaCheckPermission("@el.check('bstIvtShafttubeivt:del')")
@PostMapping("/setHaveShaft")
public ResponseEntity<Object> setHaveShaft(@RequestBody JSONObject param) {
bstIvtShafttubeivtService.setHaveShaft(param);
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
}
}

View File

@@ -1,5 +1,6 @@
package org.nl.b_lms.bst.ivt.shafttubeivt.service;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.nl.b_lms.bst.ivt.shafttubeivt.service.dto.BstIvtShafttubeivtQuery;
import org.nl.common.domain.query.PageQuery;
@@ -92,4 +93,6 @@ public interface IBstIvtShafttubeivtService extends IService<BstIvtShafttubeivt>
* @return
*/
List<BstIvtShafttubeivt> getNotTaskShaftCacheEmpty(BstIvtShafttubeivt startPoint);
void setHaveShaft(JSONObject param);
}

View File

@@ -3,6 +3,8 @@ package org.nl.b_lms.bst.ivt.shafttubeivt.service.impl;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -12,6 +14,7 @@ import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.nl.b_lms.bst.ivt.shafttubeivt.service.dto.BstIvtShafttubeivtQuery;
import org.nl.b_lms.sch.tasks.slitter.constant.SlitterConstant;
import org.nl.common.utils.TaskUtils;
import org.nl.modules.common.exception.BadRequestException;
import org.nl.common.domain.query.PageQuery;
import org.nl.common.utils.SecurityUtils;
@@ -24,6 +27,7 @@ import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.function.Consumer;
/**
* @description 服务实现
@@ -128,4 +132,16 @@ public class BstIvtShafttubeivtServiceImpl extends ServiceImpl<BstIvtShafttubeiv
return bstIvtShafttubeivtMapper.getNotTaskShaftCacheEmpty(startPoint);
}
@Override
public void setHaveShaft(JSONObject param) {
JSONArray data = param.getJSONArray("data");
String have_qzz = param.getString("have_qzz");
List<BstIvtShafttubeivt> list = data.toJavaList(BstIvtShafttubeivt.class);
list.forEach(bs -> {
bs.setHave_qzz(have_qzz);
TaskUtils.updateOptMessageByBShaftPoint(bs);
});
this.updateBatchById(list);
}
}

View File

@@ -231,7 +231,7 @@ public class BstIvtStockingivtServiceImpl extends ServiceImpl<BstIvtStockingivtM
JSONObject jo = new JSONObject();
SlitterTaskUtil.doSavePaperInfos(list, jo);
jo.put("product_area", bstIvtStockingivt.getProduct_area());
jo.put("deivce_code", bstIvtStockingivt.getPoint_code());
jo.put("device_code", bstIvtStockingivt.getPoint_code());
wmsToAcsService.getTubeMsg(jo);
}

View File

@@ -10,7 +10,7 @@
p.split_group,
p.up_or_down,
p.qzz_size,
sc.qzz_generation,
p.qzz_generation,
COALESCE ( count_table.num, 0 ) num,
COALESCE ( ct1.cn, 0 ) AS cn,
COALESCE ( ct2.cnn, 0 ) AS cnn
@@ -60,8 +60,6 @@
AND p.parent_container_name = ct2.parent_container_name
AND p.split_group = ct2.split_group
AND p.up_or_down <![CDATA[ <> ]]> ct2.up_or_down
LEFT JOIN st_ivt_cutpointivt sc
ON sc.ext_code = p.resource_name
WHERE
p.`status` = '01'
AND p.is_child_tz_ok = '0'
@@ -75,7 +73,7 @@
p.split_group,
p.up_or_down,
p.qzz_size,
sc.qzz_generation,
p.qzz_generation,
num,
cn,
cnn
@@ -97,7 +95,7 @@
p1.up_or_down,
'1' AS num,
p1.qzz_size,
c.qzz_generation,
p1.qzz_generation,
ROW_NUMBER() OVER (
PARTITION BY p1.parent_container_name, p1.split_group
ORDER BY p1.resource_name
@@ -124,16 +122,6 @@
AND p1.up_or_down <![CDATA[ <> ]]> p2.up_or_down
AND p1.is_delete = '0'
AND p1.is_paper_ok = '1'
LEFT JOIN
st_ivt_cutpointivt c
ON
c.ext_code = p1.resource_name
WHERE
p1.qzzno NOT IN
<foreach item="item" index="index" collection="qzzs" open="(" separator="," close=")">
#{item}
</foreach>
OR p1.qzzno IS NULL
)
SELECT
resource_name,

View File

@@ -120,6 +120,18 @@ public class PdmBiSubpackagerelationController {
}
@PostMapping("/transferBoxPackageToMes")
@Log("传输子卷包装关系至LMS")
//@SaCheckPermission("@el.check(updateEntityList)")
public ResponseEntity<Object> transferBoxPackageToMes(@RequestBody JSONObject whereJson) {
pdmBiSubpackagerelationService.transferBoxPackageToMes(true,whereJson,null,null,null);
return new ResponseEntity<>(HttpStatus.OK);
}
/**
* 删除数据
*

View File

@@ -54,7 +54,7 @@
FROM
pdm_bi_subpackagerelation
WHERE
container_name IN (SELECT container_name FROM bst_ivt_packageinfoivt WHERE point_status = '6')
container_name IN (SELECT container_name FROM bst_ivt_packageinfoivt WHERE point_status = '3' AND ivt_status = '3')
<if test="sale_order_name != null and sale_order_name != ''">
AND sale_order_name LIKE CONCAT('%', #{sale_order_name}, '%')
</if>
@@ -81,7 +81,8 @@
FROM `pdm_bi_subpackagerelation` a
LEFT JOIN bst_ivt_packageinfoivt b ON a.container_name = b.container_name
LEFT JOIN pdm_bi_slittingproductionplan c ON a.container_name = c.container_name
WHERE b.point_status = '6'
WHERE b.point_status = '3'
AND b.ivt_status = '3'
AND a.sale_order_name = #{sale_order_name}
ORDER BY box_group DESC
</select>

View File

@@ -1,19 +1,16 @@
package org.nl.b_lms.pdm.subpackagerelation.service;
import com.alibaba.fastjson.JSONObject;
import org.nl.b_lms.pdm.subpackagerelation.dao.PdmBiSubpackagerelation;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import org.nl.b_lms.pdm.subpackagerelation.dao.PdmBiSubpackagerelation;
import org.nl.common.domain.query.PageQuery;
import org.springframework.data.domain.Pageable;
import java.util.List;
import java.util.Map;
import java.util.Set;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.nl.b_lms.storage_manage.database.service.dao.BstIvtBoxinfo;
import org.nl.common.domain.query.PageQuery;
import org.springframework.data.domain.Pageable;
import org.springframework.web.bind.annotation.RequestBody;
/**
* {@code @Description:} 子卷包装关系表(PdmBiSubpackagerelation)服务接口层
@@ -69,7 +66,17 @@ public interface IpdmBiSubpackagerelationService extends IService<PdmBiSubpackag
*
* @param whereJson 分配信息
*/
void updateEntityList(@RequestBody JSONObject whereJson);
void updateEntityList(JSONObject whereJson);
/**
* 传输子卷包装关系至LMS
* @param manual 是否手动同步
* @param whereJson 子卷与木箱绑定信息
* @param containerNameList 子卷号信息
* @param boxSn 木箱号
* @param totalWeight 理论毛重
*/
void transferBoxPackageToMes(boolean manual, JSONObject whereJson, Set<String> containerNameList, String boxSn, String totalWeight);
/**

View File

@@ -1,43 +1,45 @@
package org.nl.b_lms.pdm.subpackagerelation.service.impl;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.date.StopWatch;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
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 com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.extern.log4j.Log4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.nl.b_lms.pdm.bi.slittingproductionplan.service.dao.mapper.PdmBiSlittingproductionplanMapper;
import org.nl.b_lms.pdm.bi.slittingproductionplan.service.IPdmBiSlittingproductionplanService;
import org.nl.b_lms.pdm.bi.slittingproductionplan.service.dao.PdmBiSlittingproductionplan;
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.service.IpdmBiSubpackagerelationService;
import cn.hutool.core.date.DateUtil;
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;
import org.nl.b_lms.sch.task.dao.SchBaseTask;
import org.nl.b_lms.sch.tasks.first_floor_area.*;
import org.nl.b_lms.sch.tasks.first_floor_area.auto.TaskQueueManager;
import org.nl.b_lms.sch.tasks.first_floor_area.DjqTask;
import org.nl.b_lms.sch.tasks.first_floor_area.ZxDjwTask;
import org.nl.b_lms.sch.tasks.first_floor_area.ZxqTask;
import org.nl.b_lms.sch.tasks.first_floor_area.auto.TaskQueue;
import org.nl.b_lms.storage_manage.database.service.IBstIvtBoxinfoService;
import org.nl.b_lms.storage_manage.database.service.dao.BstIvtBoxinfo;
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.common.domain.query.PageQuery;
import org.nl.common.enums.PackageInfoIvtEnum;
import org.nl.common.utils.SecurityUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.nl.modules.common.exception.BadRequestException;
import org.nl.system.service.param.ISysParamService;
import org.nl.wms.ext.mes.service.impl.LmsToMesServiceImpl;
import org.nl.wms.sch.manage.TaskStatusEnum;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.nl.common.domain.query.PageQuery;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
@@ -55,6 +57,7 @@ import java.util.stream.Collectors;
* @since 2024-02-01
*/
@Service("pdmBiSubpackagerelationService")
@Log4j
public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl<PdmBiSubpackagerelationMapper, PdmBiSubpackagerelation> implements IpdmBiSubpackagerelationService {
@Resource
@@ -66,14 +69,14 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl<PdmBiSubpack
private ISysParamService iSysParamService;
@Resource
private IBstIvtBoxinfoService iBstIvtBoxinfoService;
private LmsToMesServiceImpl lmsToMesServiceImpl;
@Resource
private DjqTask djqTask;
@Resource
private GzqTask gzqTask;
private IPdmBiSlittingproductionplanService iPdmBiSlittingproductionplanService;
@Resource
private DjqToKzjhcwTask djqToKzjhcwTask;
private DjqTask djqTask;
@Resource
private OutBoxManageService outBoxManageService;
@@ -84,11 +87,6 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl<PdmBiSubpack
@Resource
private PdmBiSubpackagerelationMapper pdmBiSubpackagerelationMapper;
@Resource
private PdmBiSlittingproductionplanMapper pdmBiSlittingproductionplanMapper;
@Resource
private BstIvtPackageinfoivtMapper bstIvtPackageinfoivtMapper;
@Resource
@@ -123,7 +121,6 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl<PdmBiSubpack
@Override
public Map<String, Object> queryBoxSpec(Map whereJson, Pageable page) {
Map<String, Object> boxInfoList = new HashMap<String, Object>();
//IPage<BstIvtBoxinfo> resultPage = new Page<>(page.getPageNumber(), page.getPageSize());
IPage<BstIvtBoxinfo> resultPage = new Page<>(page.getPageNumber() + 1, page.getPageSize());
LambdaQueryWrapper<BstIvtBoxinfo> queryWrapper = new LambdaQueryWrapper<>();
if (whereJson.containsKey("search")) {
@@ -190,11 +187,8 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl<PdmBiSubpack
queryWrapper.lt(PdmBiSubpackagerelation::getStatus, "99");
}
}
queryWrapper.groupBy(PdmBiSubpackagerelation::getSale_order_name)
.orderByDesc(PdmBiSubpackagerelation::getCreate_time);
return pdmBiSubpackagerelationMapper.selectPage(resultPage, queryWrapper);
}
@@ -213,32 +207,17 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl<PdmBiSubpack
Map<String, Long> countByGroup = pdmBiSubpackagerelationList.stream()
.filter(item -> item.getBox_group() != null)
.collect(Collectors.groupingBy(PdmBiSubpackagerelation::getBox_group, Collectors.counting()));
pdmBiSubpackagerelationList.forEach(item -> {
if (item.getBox_group() != null) {
item.setQuanlity_in_box(BigDecimal.valueOf(countByGroup.getOrDefault(item.getBox_group(), null)));
pdmBiSubpackagerelationList.forEach(r -> {
//获取子卷长度
// int containerLength = getMaxNum(null, r.getPaper_tube_description());
// r.setUn_plan_product_property3(Integer.toString(containerLength));
if (r.getBox_group() != null) {
r.setQuanlity_in_box(BigDecimal.valueOf(countByGroup.getOrDefault(r.getBox_group(), null)));
} else {
item.setQuanlity_in_box(BigDecimal.ZERO);
item.setBox_group("0");
r.setQuanlity_in_box(BigDecimal.ZERO);
r.setBox_group("0");
}
});
//下发空木箱出库任务
//outBox1();
//满轴->待检
//mzToDj();
//待检->装箱
// djToZx();
//下发桁架任务1
//transferToPacking1();
//下发桁架任务2
//transferToPacking2();
return pdmBiSubpackagerelationList;
}
@@ -275,16 +254,21 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl<PdmBiSubpack
@Override
@Transactional(rollbackFor = Exception.class)
public void updateEntityList(JSONObject whereJson) {
StopWatch stopWatch = new StopWatch();
stopWatch.start();
List<PdmBiSubpackagerelation> packagerelationList = JSONObject.parseArray(whereJson.getJSONArray("tableMater").toJSONString(), PdmBiSubpackagerelation.class);
if (CollectionUtils.isEmpty(packagerelationList)) {
throw new BadRequestException("无选中子卷信息");
}
//检查是否存在已分配规格的子卷号
List<PdmBiSubpackagerelation> isOutBox = packagerelationList.stream().filter(r -> r.getStatus().equals("0")).collect(Collectors.toList());
if (isOutBox.size() > 0) {
throw new BadRequestException("标记为黄色的子卷号已分配且对应的木箱正在出库,请重新选择未分配木箱规格的子卷");
}
JSONArray jsonArray = whereJson.getJSONArray("tableMater");
if (jsonArray == null || jsonArray.size() == 0) {
throw new BadRequestException("无选中子卷信息");
throw new BadRequestException("标记为黄色的子卷号已分配且对应的木箱出库,请重新选择未分配木箱规格的子卷");
}
// JSONArray jsonArray = whereJson.getJSONArray("tableMater");
// if (jsonArray == null || jsonArray.size() == 0) {
// throw new BadRequestException("无选中子卷信息");
// }
//均衡获取木箱出库装箱区对接位
String deviceCode = getPointCode();
Integer taskCount = bstIvtPackageinfoivtMapper.getZxqTaskCount(deviceCode.substring(deviceCode.lastIndexOf("_") + 1));
@@ -292,7 +276,7 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl<PdmBiSubpack
throw new BadRequestException("子卷搬运任务数已达上限!");
}
List<PdmBiSubpackagerelation> pdmBiSubpackagerelationList = pdmBiSubpackagerelationMapper
.selectList(new LambdaQueryWrapper<PdmBiSubpackagerelation>().eq(PdmBiSubpackagerelation::getSale_order_name, jsonArray.getJSONObject(0).getString("sale_order_name")));
.selectList(new LambdaQueryWrapper<PdmBiSubpackagerelation>().eq(PdmBiSubpackagerelation::getSale_order_name, packagerelationList.get(0).getSale_order_name()));
Integer maxBoxGroup = pdmBiSubpackagerelationList.stream()
.map(PdmBiSubpackagerelation::getBox_group)
.filter(Objects::nonNull)
@@ -300,14 +284,31 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl<PdmBiSubpack
.max(Integer::compareTo)
.orElse(0) + 1;
try {
List<String> entityList = JSONObject.parseArray(whereJson.getJSONArray("tableMater").toJSONString(), PdmBiSubpackagerelation.class).stream()
List<String> workIdList = JSONObject.parseArray(whereJson.getJSONArray("tableMater").toJSONString(), PdmBiSubpackagerelation.class).stream()
.map(PdmBiSubpackagerelation::getWorkorder_id)
.map(String::valueOf)
.collect(Collectors.toList());
if (entityList.isEmpty()) {
if (workIdList.isEmpty()) {
return;
}
outBox(entityList, packagerelationList, deviceCode, maxBoxGroup, whereJson.getString("checked"));
//根据分切计划获取子卷重量计算理论毛重
Set<String> containerNameList = packagerelationList.stream()
.map(PdmBiSubpackagerelation::getContainer_name)
.collect(Collectors.toSet());
BigDecimal totalWeight;
List<PdmBiSlittingproductionplan> planList = iPdmBiSlittingproductionplanService.list(new LambdaQueryWrapper<PdmBiSlittingproductionplan>().in(PdmBiSlittingproductionplan::getContainer_name, containerNameList));
totalWeight = planList.stream()
.map(PdmBiSlittingproductionplan::getWeight)
.filter(Objects::nonNull)
.filter(r -> !r.isEmpty())
.map(BigDecimal::new)
.reduce(BigDecimal.ZERO, BigDecimal::add);
BigDecimal boxWeight = new BigDecimal(whereJson.getString("box_weight"));
totalWeight = totalWeight.add(boxWeight);
stopWatch.stop();
System.out.println("子卷装箱代码1装箱信息查询执行花费时间------------------------------------------------------------------------------------------*************************************************************************************************= totalTime = " + stopWatch.getTotalTimeMillis());
log.info("子卷装箱代码1箱信息查询执行花费时间------------------------------------------------------------------------------------------*************************************************************************************************= totalTime = " + stopWatch.getTotalTimeMillis());
outBox(workIdList, containerNameList, deviceCode, maxBoxGroup, whereJson.getString("checked"), totalWeight.toString());
} catch (Exception e) {
throw new BadRequestException(e.getMessage());
}
@@ -317,52 +318,132 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl<PdmBiSubpack
/**
* 空木箱出库
*/
private void outBox(List<String> entityList, List<PdmBiSubpackagerelation> packagerelationList, String deviceCode, Integer maxBoxGroup, String boxType) {
private void outBox(List<String> workIdList, Set<String> containerNameList, String deviceCode, Integer maxBoxGroup, String boxType, String totalWeight) {
//均衡获取装箱对接位
//String deviceCode = "ZXQ_1_1";
StopWatch stopWatch = new StopWatch();
stopWatch.start();
JSONObject boxInfo = new JSONObject();
//确定装箱区终点
boxInfo.put("device_code", deviceCode);
boxInfo.put("material_code", boxType);
boxInfo.put("num", entityList.size());
boxInfo.put("num", workIdList.size());
String boxSn = outBoxManageService.outBox(boxInfo);
stopWatch.stop();
System.out.println("木箱出库代码执行花费时间------------------------------------------------------------------------------------------*************************************************************************************************= totalTime = " + stopWatch.getTotalTimeMillis());
log.info("木箱出库代码执行花费时间------------------------------------------------------------------------------------------*************************************************************************************************= totalTime = " + stopWatch.getTotalTimeMillis());
//String boxSn = "MX230118000013";
StopWatch stopWatch1 = new StopWatch();
stopWatch1.start();
//更新及子卷包装状态已分配规格及木箱规格组
CompletableFuture.runAsync(() -> {
try {
updateBoxGroup(maxBoxGroup, entityList, boxType);
updateBoxGroup(maxBoxGroup, workIdList, boxSn, boxType, totalWeight);
} catch (Exception e) {
log.error("异常信息:" + e);
}
}, pool);
//更新子卷包装关系更新木箱号
//给LMS传输子卷包装关系
CompletableFuture.runAsync(() -> {
try {
updateBoxInfo(entityList, boxSn);
transferBoxPackageToMes(true, null, containerNameList, boxSn, totalWeight);
} catch (Exception e) {
log.error("异常信息:" + e);
}
}, pool);
//待检区->装箱区agv任务
// CompletableFuture.runAsync(() -> {
// try {
// agvTransfer(packagerelationList, deviceCode, boxSn);
// } catch (Exception e) {
// log.error("异常信息:" + e);
// }
// }, pool);
CompletableFuture.runAsync(() -> {
try {
agvTransfer(containerNameList, deviceCode, boxSn);
} catch (Exception e) {
log.error("异常信息:" + e);
}
}, pool);
stopWatch1.stop();
System.out.println("子卷装箱代码2装箱信息更新执行花费时间------------------------------------------------------------------------------------------*************************************************************************************************= totalTime = " + stopWatch1.getTotalTimeMillis());
log.info("子卷装箱代码2装箱信息更新执行花费时间------------------------------------------------------------------------------------------*************************************************************************************************= totalTime = " + stopWatch1.getTotalTimeMillis());
}
private void updateBoxGroup(Integer maxBoxGroup, List<String> entityList, String boxType) {
// code终点,material_code木箱规格,num: 子卷数
private void updateBoxGroup(Integer maxBoxGroup, List<String> entityList, String boxSn, String boxType, String totalWeight) {
UpdateWrapper<PdmBiSubpackagerelation> updateWrapper = new UpdateWrapper<>();
updateWrapper.set("package_box_sn", boxSn);
updateWrapper.set("quanlity_in_box", entityList.size());
updateWrapper.set("box_type", boxType);
updateWrapper.set("box_group", maxBoxGroup);
updateWrapper.set("box_weight", totalWeight);
updateWrapper.set("status", "0");
updateWrapper.in("workorder_id", entityList);
pdmBiSubpackagerelationMapper.update(null, updateWrapper);
}
/**
* 传输子卷包装关系至LMS
*/
public void transferBoxPackageToMes(boolean manual, JSONObject whereJson, Set<String> containerNameList, String boxSn, String totalWeight) {
List<PdmBiSubpackagerelation> packagerelationList = JSONObject.parseArray(whereJson.getJSONArray("tableMater").toJSONString(), PdmBiSubpackagerelation.class);
JSONObject param = new JSONObject();
//手动推送
if (manual) {
if (StringUtils.isBlank(packagerelationList.get(0).getPackage_box_sn()) || packagerelationList.get(0).getBox_weight() == null) {
throw new BadRequestException("子卷未确定木箱规格信息!");
}
BigDecimal boxWeight = new BigDecimal(String.valueOf(packagerelationList.get(0).getBox_weight()));
if (boxWeight.compareTo(new BigDecimal(0)) == 0) {
throw new BadRequestException("理论毛重不能为0");
}
JSONArray containerJsonArray = packagerelationList.stream().map(PdmBiSubpackagerelation::getContainer_name).collect(Collectors.toCollection(JSONArray::new));
param.put("rows", containerJsonArray);
param.put("num", packagerelationList.size());
param.put("box_no", packagerelationList.get(0).getPackage_box_sn());
param.put("box_weight", packagerelationList.get(0).getBox_weight());
} else {
param.put("num", containerNameList.size());
param.put("rows", containerNameList.stream().collect(Collectors.toCollection(JSONArray::new)));
param.put("box_no", boxSn);
param.put("box_weight", totalWeight);
}
lmsToMesServiceImpl.momBoxPackageSubmit(param);
}
protected void agvTransfer(Set<String> containerNameList, String deviceCode, String boxSn) {
//待检区点位
List<BstIvtPackageinfoivt> djqPointList = packageinfoivtService
.list(new LambdaUpdateWrapper<BstIvtPackageinfoivt>()
.eq(BstIvtPackageinfoivt::getPoint_status, PackageInfoIvtEnum.POINT_STATUS.code("待检区"))
.eq(BstIvtPackageinfoivt::getIs_used, PackageInfoIvtEnum.IS_USED.code("启用"))
.eq(BstIvtPackageinfoivt::getIvt_status, PackageInfoIvtEnum.IVT_STATUS.code("合格品"))
//.eq(BstIvtPackageinfoivt::getIvt_status, PackageInfoIvtEnum.IVT_STATUS.code("有子卷"))
.orderByAsc(BstIvtPackageinfoivt::getSort_seq));
List<BstIvtPackageinfoivt> djqPoints = djqPointList.stream()
.filter(r -> containerNameList.contains(r.getContainer_name()))
.collect(Collectors.toList());
//任务组id
String groupId = deviceCode.substring(deviceCode.lastIndexOf("_") + 1);
List<SchBaseTask> schBaseTaskList = new ArrayList<>();
//确定起点,安装装箱组标识加入任务队列
djqPoints.forEach(r -> {
JSONObject jo = new JSONObject();
jo.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("待检区->装箱区"));
jo.put("vehicle_code", r.getContainer_name());
jo.put("point_code1", r.getPoint_code());
jo.put("task_status", TaskStatusEnum.SURE_START.getCode());
//木箱号
jo.put("vehicle_code2", groupId);
//任务组id
//jo.put("car_no", deviceCode);
SchBaseTask task = new SchBaseTask();
task.setTask_id(zxqTask.createTask(jo));
//增加任务到队列
schBaseTaskList.add(task);
});
//taskQueueManager.addTasksToQueue(groupId, schBaseTaskList);
if (CollectionUtils.isNotEmpty(schBaseTaskList)) {
taskQueue.addTasksToQueue(groupId, schBaseTaskList);
}
}
private String getPointCode() {
//均衡获取木箱出库装箱区对接位
List<BstIvtPackageinfoivt> bstIvtPackageinfoivtList = bstIvtPackageinfoivtMapper.selectList(new LambdaQueryWrapper<BstIvtPackageinfoivt>().eq(BstIvtPackageinfoivt::getPoint_status, "5").eq(BstIvtPackageinfoivt::getIs_used, "1").orderByAsc(BstIvtPackageinfoivt::getPoint_code));
@@ -401,55 +482,6 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl<PdmBiSubpack
return minPointCode.orElseGet(() -> bstIvtPackageinfoivtList.get(0).getPoint_code());
}
protected void updateBoxInfo(List<String> entityList, String boxSn) {
UpdateWrapper<PdmBiSubpackagerelation> updateWrapper = new UpdateWrapper<>();
updateWrapper.set("package_box_sn", boxSn);
updateWrapper.in("workorder_id", entityList);
pdmBiSubpackagerelationMapper.update(null, updateWrapper);
}
protected void agvTransfer(List<PdmBiSubpackagerelation> packagerelationList, String deviceCode, String boxSn) {
//待检区点位
List<BstIvtPackageinfoivt> djqPointList = packageinfoivtService
.list(new LambdaUpdateWrapper<BstIvtPackageinfoivt>()
.eq(BstIvtPackageinfoivt::getPoint_status, PackageInfoIvtEnum.POINT_STATUS.code("待检区"))
.eq(BstIvtPackageinfoivt::getIs_used, PackageInfoIvtEnum.IS_USED.code("启用"))
//.eq(BstIvtPackageinfoivt::getIvt_status, PackageInfoIvtEnum.IVT_STATUS.code("合格品"))
.eq(BstIvtPackageinfoivt::getIvt_status, PackageInfoIvtEnum.IVT_STATUS.code("有子卷"))
.orderByAsc(BstIvtPackageinfoivt::getSort_seq));
Set<String> containerNames = packagerelationList.stream()
.map(PdmBiSubpackagerelation::getContainer_name)
.collect(Collectors.toSet());
List<BstIvtPackageinfoivt> djqPoints = djqPointList.stream()
.filter(r -> containerNames.contains(r.getContainer_name()))
.collect(Collectors.toList());
//任务组id
String groupId = deviceCode.substring(deviceCode.lastIndexOf("_") + 1);
List<SchBaseTask> schBaseTaskList = new ArrayList<>();
//确定起点,安装装箱组标识加入任务队列
djqPoints.forEach(r -> {
JSONObject jo = new JSONObject();
jo.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("待检区->装箱区"));
jo.put("vehicle_code", r.getContainer_name());
jo.put("point_code1", r.getPoint_code());
jo.put("task_status", TaskStatusEnum.SURE_START.getCode());
//木箱号
jo.put("vehicle_code2", groupId);
//任务组id
//jo.put("car_no", deviceCode);
SchBaseTask task = new SchBaseTask();
task.setTask_id(zxqTask.createTask(jo));
//增加任务到队列
schBaseTaskList.add(task);
});
//taskQueueManager.addTasksToQueue(groupId, schBaseTaskList);
if (CollectionUtils.isNotEmpty(schBaseTaskList)) {
taskQueue.addTasksToQueue(groupId, schBaseTaskList);
}
}
/**
* 待检区->装箱区agv任务
*/
@@ -459,7 +491,6 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl<PdmBiSubpack
.list(new LambdaUpdateWrapper<BstIvtPackageinfoivt>()
.eq(BstIvtPackageinfoivt::getPoint_status, PackageInfoIvtEnum.POINT_STATUS.code("待检区"))
.eq(BstIvtPackageinfoivt::getIs_used, PackageInfoIvtEnum.IS_USED.code("启用"))
//todo 暂时改为合格品
.eq(BstIvtPackageinfoivt::getIvt_status, PackageInfoIvtEnum.IVT_STATUS.code("合格品"))
.orderByAsc(BstIvtPackageinfoivt::getSort_seq));
Set<String> containerNames = packagerelationList.stream()

View File

@@ -90,8 +90,9 @@ public class BstIvtPackageinfoivtServiceImpl extends ServiceImpl<BstIvtPackagein
taskList = bstIvtPackageinfoivtMapper.getTaskList(pointIds, pointIds, pointIds, null);
} else if (pointCode.equals(PackageInfoIvtEnum.TASK_POINT_TYPE.code("放货分配"))) {
taskList = bstIvtPackageinfoivtMapper.getTaskList(pointIds, pointIds, null, pointIds);
} else {
//taskList = bstIvtPackageinfoivtMapper.getTaskList(pointIds, pointIds, pointIds, pointIds)
} else if(pointCode.equals(PackageInfoIvtEnum.TASK_POINT_TYPE.code("取货任务取货分配"))){
taskList = bstIvtPackageinfoivtMapper.getTaskList(pointIds, pointIds, pointIds, pointIds);
}else{
return packageinfoivtList;
}
// 过滤未完成任务的任务

View File

@@ -17,8 +17,10 @@ import org.nl.b_lms.sch.point.dao.SchBasePoint;
import org.nl.b_lms.sch.point.service.IschBasePointService;
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.IMdpbBoxtypeService;
import org.nl.b_lms.storage_manage.database.service.dao.BstIvtBoxinfo;
import org.nl.b_lms.storage_manage.database.service.dao.BstIvtBoxlashbound;
import org.nl.b_lms.storage_manage.database.service.dao.MdpbBoxtype;
import org.nl.b_lms.storage_manage.ios.enums.IOSEnum;
import org.nl.common.utils.SecurityUtils;
import org.nl.modules.common.exception.BadRequestException;
@@ -54,6 +56,12 @@ public class TwoLashTask extends AbstractAcsTask {
@Autowired
private IBstIvtBoxinfoService iBstIvtBoxinfoService;
/**
* 木箱类型信息服务
*/
@Autowired
private IMdpbBoxtypeService iMdpbBoxtypeService;
@Override
public List<AcsTaskDto> addTask() {
/*
@@ -86,15 +94,23 @@ public class TwoLashTask extends AbstractAcsTask {
throw new BadRequestException("未查询到相关木箱信息!");
}
// 查询木箱类型信息
MdpbBoxtype boxTypeDao = iMdpbBoxtypeService.getById(dao.get(0).getMaterial_code());
if (ObjectUtil.isEmpty(boxTypeDao)) {
throw new BadRequestException("木箱类型信息不存在!木箱料号为:"+dao.get(0).getMaterial_code());
}
JSONObject interaction_json = new JSONObject();
interaction_json.put("isLeave", json.getString("is_auto_issue"));
interaction_json.put("length", dao.get(0).getBox_length());
interaction_json.put("weight", dao.get(0).getBox_width());
interaction_json.put("height", dao.get(0).getBox_high());
interaction_json.put("template", dao.get(0).getLash_num());
//第二次捆扎次数
interaction_json.put("bindingTimes", "3");
interaction_json.put("isBinding", IOSEnum.IS_SEND.code(""));
// 捆扎模版
interaction_json.put("template", boxTypeDao.getLash_num());
// 第二次捆扎次数
interaction_json.put("bindingTimes", boxTypeDao.getLash_num_tow());
// 是否二次捆扎
interaction_json.put("isBinding", boxTypeDao.getNeed_lash_two());
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"))

View File

@@ -7,8 +7,15 @@ import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.nl.b_lms.storage_manage.database.service.IBstIvtBoxinfoService;
import org.nl.b_lms.storage_manage.database.service.IMdpbBoxtypeService;
import org.nl.b_lms.storage_manage.database.service.dao.BstIvtBoxinfo;
import org.nl.b_lms.storage_manage.database.service.dao.MdpbBoxtype;
import org.nl.b_lms.storage_manage.database.service.dao.mapper.BstIvtBoxinfoMapper;
import org.nl.b_lms.storage_manage.database.service.dao.mapper.MdpbBoxtypeMapper;
import org.nl.b_lms.storage_manage.ios.enums.IOSEnum;
import org.nl.common.enums.PackageInfoIvtEnum;
import org.nl.common.utils.SecurityUtils;
@@ -21,9 +28,11 @@ import org.nl.wms.sch.AcsTaskDto;
import org.nl.wms.sch.manage.AbstractAcsTask;
import org.nl.wms.sch.manage.TaskStatusEnum;
import org.nl.wms.sch.tasks.CutConveyorTask;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
@@ -35,6 +44,18 @@ import static org.nl.wms.util.TaskUtil.getRoutePlanCode;
public class TwoSendOutTask extends AbstractAcsTask {
private final String THIS_CLASS = TwoSendOutTask.class.getName();
/**
* 木箱信息服务
*/
@Resource
private BstIvtBoxinfoMapper iBstIvtBoxinfoService;
/**
* 木箱类型信息服务
*/
@Resource
private MdpbBoxtypeMapper iMdpbBoxtypeService;
@Override
public List<AcsTaskDto> addTask() {
/*
@@ -43,15 +64,28 @@ public class TwoSendOutTask extends AbstractAcsTask {
WQLObject taskTab = WQLObject.getWQLObject("sch_base_task");
JSONArray arr = WQLObject.getWQLObject("SCH_BASE_Task").query("handle_class = '" + THIS_CLASS + "' and task_status = '" + TaskStatusEnum.START_AND_POINT.getCode() + "' and is_delete ='0'").getResultJSONArray(0);
// 获取系统参数
String expandWidthLength = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("expandWidthLength").getValue();
JSONObject param = new JSONObject();
param.put("expandWidthLength",expandWidthLength);
JSONObject param = new JSONObject();
ArrayList<AcsTaskDto> resultList = new ArrayList<>();
for (int i = 0; i < arr.size(); i++) {
JSONObject json = arr.getJSONObject(i);
// 根据木箱号查询木箱信息
BstIvtBoxinfo boxDao = iBstIvtBoxinfoService.selectOne(
new QueryWrapper<BstIvtBoxinfo>().lambda()
.eq(BstIvtBoxinfo::getBox_no, json.getString("vehicle_code"))
);
if (ObjectUtil.isEmpty(boxDao)) {
throw new BadRequestException("未查询到相关木箱信息!");
}
// 查询木箱类型信息
MdpbBoxtype boxTypeDao = iMdpbBoxtypeService.selectById(boxDao.getMaterial_code());
if (ObjectUtil.isEmpty(boxTypeDao)) {
throw new BadRequestException("木箱类型信息不存在!木箱料号为:"+boxDao.getMaterial_code());
}
param.put("expandWidthLength",boxTypeDao.getExpend_width());
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"))

View File

@@ -26,6 +26,7 @@ import org.nl.modules.common.exception.BadRequestException;
import org.nl.wms.sch.AcsTaskDto;
import org.nl.wms.sch.manage.AbstractAcsTask;
import org.nl.wms.sch.manage.TaskStatusEnum;
import org.nl.wms.util.TaskUtil;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -90,15 +91,7 @@ public class DjqTask extends AbstractAcsTask {
@Transactional(rollbackFor = Exception.class)
public void updateTaskStatus(JSONObject taskObj, String status) {
SchBaseTask schBaseTask = taskService.getOne(new LambdaUpdateWrapper<SchBaseTask>().eq(SchBaseTask::getTask_id, taskObj.getString("task_id")), false);
if (schBaseTask == null) {
throw new BadRequestException("满轴缓存位 -> 待检区完成接口任务号为空!");
}
if (schBaseTask.getTask_status().equals(TaskStatusEnum.FINISHED.getCode())) {
return;
}
if (StringUtils.isBlank(schBaseTask.getVehicle_code())) {
throw new BadRequestException("满轴缓存位 -> 待检区,子卷号不能为空!");
}
if (TaskUtil.checkParams(schBaseTask,THIS_CLASS)) return;
if (TaskStatusEnum.EXECUTING.getCode().equals(status)) {
// 更新任务状态为执行中
schBaseTask.setTask_status(TaskStatusEnum.EXECUTING.getCode());
@@ -109,7 +102,6 @@ public class DjqTask extends AbstractAcsTask {
//2.改变起点点位状态,二次分配,取货完成就改起点库存
//packageinfoivtService.update(new UpdateWrapper<BstIvtPackageinfoivt>().set("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("空")).set("container_name", null).eq("point_code", schBaseTask.getPoint_code1()));
//3更新库存记录
//todo 暂时改为质检合格品
packageinfoivtService.update(new UpdateWrapper<BstIvtPackageinfoivt>().set("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("有子卷")).set("container_name", schBaseTask.getVehicle_code()).eq("point_code", schBaseTask.getPoint_code2()));
//清除首次分配目标点位
schBaseTask.setPoint_code3("");
@@ -134,7 +126,6 @@ public class DjqTask extends AbstractAcsTask {
}
//5搬运装箱区
//sendDjqToZxq(schBaseTask);
}
// 取消
if (status.equals(IOSEnum.IS_NOTANDYES.code(""))) {
@@ -150,6 +141,8 @@ public class DjqTask extends AbstractAcsTask {
taskService.update(schBaseTask);
}
@Override
public String createTask(JSONObject form) {
Assert.notNull(form, "请求参数不能为空");
@@ -220,13 +213,7 @@ public class DjqTask extends AbstractAcsTask {
public void forceFinish(String taskId) {
SchBaseTask schBaseTask = taskService.getOne(new LambdaUpdateWrapper<SchBaseTask>()
.eq(SchBaseTask::getTask_id, taskId), false);
//todo 增加校验,完成状态不执行任何操作
if (schBaseTask == null) {
throw new BadRequestException("满轴缓存位 -> 待检区强制完成接口任务号为空!");
}
if (schBaseTask.getTask_status().equals(TaskStatusEnum.FINISHED.getCode())) {
return;
}
if (TaskUtil.checkParams(schBaseTask,THIS_CLASS)) return;
updateTaskStatus(JSONObject.parseObject(JSON.toJSONString(schBaseTask)), TaskStatusEnum.FINISHED.getCode());
}

View File

@@ -25,6 +25,7 @@ import org.nl.modules.common.exception.BadRequestException;
import org.nl.wms.sch.AcsTaskDto;
import org.nl.wms.sch.manage.AbstractAcsTask;
import org.nl.wms.sch.manage.TaskStatusEnum;
import org.nl.wms.util.TaskUtil;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -90,9 +91,7 @@ public class DjqToKzjhcwTask extends AbstractAcsTask {
@Transactional(rollbackFor = Exception.class)
public void updateTaskStatus(JSONObject taskObj, String status) {
SchBaseTask schBaseTask = taskService.getOne(new LambdaUpdateWrapper<SchBaseTask>().eq(SchBaseTask::getTask_id, taskObj.getString("task_id")), false);
if (schBaseTask == null) {
throw new BadRequestException("待检区->空载具缓存位完成接口任务号为空!");
}
if (TaskUtil.checkParams(schBaseTask,THIS_CLASS)) return;
if (TaskStatusEnum.EXECUTING.getCode().equals(status)) {
// 更新任务状态为执行中
schBaseTask.setTask_status(TaskStatusEnum.EXECUTING.getCode());
@@ -196,9 +195,7 @@ public class DjqToKzjhcwTask extends AbstractAcsTask {
public void forceFinish(String taskId) {
SchBaseTask schBaseTask = taskService.getOne(new LambdaUpdateWrapper<SchBaseTask>()
.eq(SchBaseTask::getTask_id, taskId), false);
if (schBaseTask == null) {
throw new BadRequestException("待检区->空载具缓存位强制完成接口任务号为空!");
}
if (TaskUtil.checkParams(schBaseTask,THIS_CLASS)) return;
updateTaskStatus(JSONObject.parseObject(JSON.toJSONString(schBaseTask)), TaskStatusEnum.FINISHED.getCode());
}

View File

@@ -24,6 +24,7 @@ import org.nl.modules.common.exception.BadRequestException;
import org.nl.wms.sch.AcsTaskDto;
import org.nl.wms.sch.manage.AbstractAcsTask;
import org.nl.wms.sch.manage.TaskStatusEnum;
import org.nl.wms.util.TaskUtil;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -86,9 +87,7 @@ public class GzqTask extends AbstractAcsTask {
@Transactional(rollbackFor = Exception.class)
public void updateTaskStatus(JSONObject taskObj, String status) {
SchBaseTask schBaseTask = taskService.getOne(new LambdaUpdateWrapper<SchBaseTask>().eq(SchBaseTask::getTask_id, taskObj.getString("task_id")), false);
if (schBaseTask == null) {
throw new BadRequestException("满轴缓存位 -> 管制区完成接口任务号为空!");
}
if (TaskUtil.checkParams(schBaseTask,THIS_CLASS)) return;
if (TaskStatusEnum.EXECUTING.getCode().equals(status)) {
// 更新任务状态为执行中
schBaseTask.setTask_status(TaskStatusEnum.EXECUTING.getCode());
@@ -190,9 +189,7 @@ public class GzqTask extends AbstractAcsTask {
public void forceFinish(String taskId) {
SchBaseTask schBaseTask = taskService.getOne(new LambdaUpdateWrapper<SchBaseTask>()
.eq(SchBaseTask::getTask_id, taskId), false);
if (schBaseTask == null) {
throw new BadRequestException("满轴缓存位 -> 管制区强制完成接口任务号为空!");
}
if (TaskUtil.checkParams(schBaseTask,THIS_CLASS)) return;
updateTaskStatus(JSONObject.parseObject(JSON.toJSONString(schBaseTask)), TaskStatusEnum.FINISHED.getCode());
}

View File

@@ -25,6 +25,7 @@ import org.nl.modules.common.exception.BadRequestException;
import org.nl.wms.sch.AcsTaskDto;
import org.nl.wms.sch.manage.AbstractAcsTask;
import org.nl.wms.sch.manage.TaskStatusEnum;
import org.nl.wms.util.TaskUtil;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -90,9 +91,7 @@ public class GzqToKzjhcwTask extends AbstractAcsTask {
@Transactional(rollbackFor = Exception.class)
public void updateTaskStatus(JSONObject taskObj, String status) {
SchBaseTask schBaseTask = taskService.getOne(new LambdaUpdateWrapper<SchBaseTask>().eq(SchBaseTask::getTask_id, taskObj.getString("task_id")), false);
if (schBaseTask == null) {
throw new BadRequestException("管制区->空载具缓存位完成接口任务号为空!");
}
if (TaskUtil.checkParams(schBaseTask,THIS_CLASS)) return;
if (TaskStatusEnum.EXECUTING.getCode().equals(status)) {
// 更新任务状态为执行中
schBaseTask.setTask_status(TaskStatusEnum.EXECUTING.getCode());
@@ -196,9 +195,7 @@ public class GzqToKzjhcwTask extends AbstractAcsTask {
public void forceFinish(String taskId) {
SchBaseTask schBaseTask = taskService.getOne(new LambdaUpdateWrapper<SchBaseTask>()
.eq(SchBaseTask::getTask_id, taskId), false);
if (schBaseTask == null) {
throw new BadRequestException("管制区->空载具缓存位强制完成接口任务号为空!");
}
if (TaskUtil.checkParams(schBaseTask,THIS_CLASS)) return;
updateTaskStatus(JSONObject.parseObject(JSON.toJSONString(schBaseTask)), TaskStatusEnum.FINISHED.getCode());
}

View File

@@ -27,6 +27,7 @@ import org.nl.modules.common.exception.BadRequestException;
import org.nl.wms.sch.AcsTaskDto;
import org.nl.wms.sch.manage.AbstractAcsTask;
import org.nl.wms.sch.manage.TaskStatusEnum;
import org.nl.wms.util.TaskUtil;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -107,9 +108,7 @@ public class MzhcwTask extends AbstractAcsTask {
@Transactional(rollbackFor = Exception.class)
public void updateTaskStatus(JSONObject taskObj, String status) {
SchBaseTask schBaseTask = taskService.getOne(new LambdaUpdateWrapper<SchBaseTask>().eq(SchBaseTask::getTask_id, taskObj.getString("task_id")), false);
if (schBaseTask == null) {
throw new BadRequestException("输送线点位 -> 满轴缓存位完成接口任务号为空!");
}
if (TaskUtil.checkParams(schBaseTask,THIS_CLASS)) return;
// 执行中
if (TaskStatusEnum.EXECUTING.getCode().equals(status)) {
// 更新任务状态为执行中
@@ -346,9 +345,7 @@ public class MzhcwTask extends AbstractAcsTask {
public void forceFinish(String taskId) {
SchBaseTask schBaseTask = taskService.getOne(new LambdaUpdateWrapper<SchBaseTask>()
.eq(SchBaseTask::getTask_id, taskId), false);
if (schBaseTask == null) {
throw new BadRequestException("输送线点位 -> 满轴缓存位强制完成接口任务号为空!");
}
if (TaskUtil.checkParams(schBaseTask,THIS_CLASS)) return;
updateTaskStatus(JSONObject.parseObject(JSON.toJSONString(schBaseTask)), TaskStatusEnum.FINISHED.getCode());
}

View File

@@ -22,6 +22,7 @@ import org.nl.modules.common.exception.BadRequestException;
import org.nl.wms.sch.AcsTaskDto;
import org.nl.wms.sch.manage.AbstractAcsTask;
import org.nl.wms.sch.manage.TaskStatusEnum;
import org.nl.wms.util.TaskUtil;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -80,9 +81,7 @@ public class SendDjqKzjTask extends AbstractAcsTask {
@Transactional(rollbackFor = Exception.class)
public void updateTaskStatus(JSONObject taskObj, String status) {
SchBaseTask schBaseTask = taskService.getOne(new LambdaUpdateWrapper<SchBaseTask>().eq(SchBaseTask::getTask_id, taskObj.getString("task_id")), false);
if (schBaseTask == null) {
throw new BadRequestException("装箱区->待检区送空载具完成接口任务号为空!");
}
if (TaskUtil.checkParams(schBaseTask,THIS_CLASS)) return;
if (TaskStatusEnum.EXECUTING.getCode().equals(status)) {
// 更新任务状态为执行中
schBaseTask.setTask_status(TaskStatusEnum.EXECUTING.getCode());
@@ -166,9 +165,7 @@ public class SendDjqKzjTask extends AbstractAcsTask {
public void forceFinish(String taskId) {
SchBaseTask schBaseTask = taskService.getOne(new LambdaUpdateWrapper<SchBaseTask>()
.eq(SchBaseTask::getTask_id, taskId), false);
if (schBaseTask == null) {
throw new BadRequestException("装箱区->待检区送空载具强制完成接口任务号为空!");
}
if (TaskUtil.checkParams(schBaseTask,THIS_CLASS)) return;
updateTaskStatus(JSONObject.parseObject(JSON.toJSONString(schBaseTask)), TaskStatusEnum.FINISHED.getCode());
}

View File

@@ -22,6 +22,7 @@ import org.nl.modules.common.exception.BadRequestException;
import org.nl.wms.sch.AcsTaskDto;
import org.nl.wms.sch.manage.AbstractAcsTask;
import org.nl.wms.sch.manage.TaskStatusEnum;
import org.nl.wms.util.TaskUtil;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -80,9 +81,7 @@ public class SendGzqKzjTask extends AbstractAcsTask {
@Transactional(rollbackFor = Exception.class)
public void updateTaskStatus(JSONObject taskObj, String status) {
SchBaseTask schBaseTask = taskService.getOne(new LambdaUpdateWrapper<SchBaseTask>().eq(SchBaseTask::getTask_id, taskObj.getString("task_id")), false);
if (schBaseTask == null) {
throw new BadRequestException("装箱区->管制区送空载具完成接口任务号为空!");
}
if (TaskUtil.checkParams(schBaseTask,THIS_CLASS)) return;
if (TaskStatusEnum.EXECUTING.getCode().equals(status)) {
// 更新任务状态为执行中
schBaseTask.setTask_status(TaskStatusEnum.EXECUTING.getCode());
@@ -166,9 +165,7 @@ public class SendGzqKzjTask extends AbstractAcsTask {
public void forceFinish(String taskId) {
SchBaseTask schBaseTask = taskService.getOne(new LambdaUpdateWrapper<SchBaseTask>()
.eq(SchBaseTask::getTask_id, taskId), false);
if (schBaseTask == null) {
throw new BadRequestException("装箱区->管制区送空载具强制完成接口任务号为空!");
}
if (TaskUtil.checkParams(schBaseTask,THIS_CLASS)) return;
updateTaskStatus(JSONObject.parseObject(JSON.toJSONString(schBaseTask)), TaskStatusEnum.FINISHED.getCode());
}

View File

@@ -22,6 +22,7 @@ import org.nl.modules.common.exception.BadRequestException;
import org.nl.wms.sch.AcsTaskDto;
import org.nl.wms.sch.manage.AbstractAcsTask;
import org.nl.wms.sch.manage.TaskStatusEnum;
import org.nl.wms.util.TaskUtil;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -83,9 +84,7 @@ public class SsxDjwTask extends AbstractAcsTask {
@Transactional(rollbackFor = Exception.class)
public void updateTaskStatus(JSONObject taskObj, String status) {
SchBaseTask schBaseTask = taskService.getOne(new LambdaUpdateWrapper<SchBaseTask>().eq(SchBaseTask::getTask_id, taskObj.getString("task_id")), false);
if (schBaseTask == null) {
throw new BadRequestException("空载具缓存位 -> 输送线完成接口任务号为空!");
}
if (TaskUtil.checkParams(schBaseTask,THIS_CLASS)) return;
if (TaskStatusEnum.EXECUTING.getCode().equals(status)) {
// 更新任务状态为执行中
schBaseTask.setTask_status(TaskStatusEnum.EXECUTING.getCode());
@@ -184,9 +183,7 @@ public class SsxDjwTask extends AbstractAcsTask {
public void forceFinish(String taskId) {
SchBaseTask schBaseTask = taskService.getOne(new LambdaUpdateWrapper<SchBaseTask>()
.eq(SchBaseTask::getTask_id, taskId), false);
if (schBaseTask == null) {
throw new BadRequestException("空载具缓存位 -> 输送线强制完成接口任务号为空!");
}
if (TaskUtil.checkParams(schBaseTask,THIS_CLASS)) return;
updateTaskStatus(JSONObject.parseObject(JSON.toJSONString(schBaseTask)), TaskStatusEnum.FINISHED.getCode());
}

View File

@@ -30,6 +30,7 @@ import org.nl.modules.common.exception.BadRequestException;
import org.nl.wms.sch.AcsTaskDto;
import org.nl.wms.sch.manage.AbstractAcsTask;
import org.nl.wms.sch.manage.TaskStatusEnum;
import org.nl.wms.util.TaskUtil;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -101,9 +102,7 @@ public class ZxDjwTask extends AbstractAcsTask {
@Transactional(rollbackFor = Exception.class)
public void updateTaskStatus(JSONObject taskObj, String status) {
SchBaseTask schBaseTask = taskService.getOne(new LambdaUpdateWrapper<SchBaseTask>().eq(SchBaseTask::getTask_id, taskObj.getString("task_id")), false);
if (schBaseTask == null) {
throw new BadRequestException("装箱区 -> 装箱对接位完成接口任务号为空!");
}
if (TaskUtil.checkParams(schBaseTask,THIS_CLASS)) return;
if (TaskStatusEnum.EXECUTING.getCode().equals(status)) {
// 更新任务状态为执行中
schBaseTask.setTask_status(TaskStatusEnum.EXECUTING.getCode());
@@ -129,7 +128,7 @@ public class ZxDjwTask extends AbstractAcsTask {
throw new BadRequestException("子卷包装关系为已装箱或找该任务的木箱号不存在!");
}
//4.更改木箱信息为已装箱:1
bstIvtBoxinfo.setIs_packing("1");
bstIvtBoxinfo.setIs_packing(IOSEnum.IS_NOTANDYES.code(""));
bstIvtBoxinfoMapper.updateById(bstIvtBoxinfo);
}
if (packagerelationList.size() == 1 && packagerelationList.get(0).getContainer_name().equals(schBaseTask.getVehicle_code())) {
@@ -139,7 +138,7 @@ public class ZxDjwTask extends AbstractAcsTask {
//6.改变子卷包装状态为已装箱1
PdmBiSubpackagerelation pdmBiSubpackagerelation = subpackageRelationService
.getOne(new LambdaUpdateWrapper<PdmBiSubpackagerelation>().eq(PdmBiSubpackagerelation::getContainer_name, schBaseTask.getVehicle_code()), false);
pdmBiSubpackagerelation.setStatus("1");
pdmBiSubpackagerelation.setStatus(IOSEnum.IS_NOTANDYES.code(""));
subpackageRelationService.updateById(pdmBiSubpackagerelation);
//创建装箱区->空载具缓存位补空任务
//kzjhcwTask.toKzjHcw(schBaseTask.getPoint_code1());
@@ -218,9 +217,7 @@ public class ZxDjwTask extends AbstractAcsTask {
public void forceFinish(String taskId) {
SchBaseTask schBaseTask = taskService.getOne(new LambdaUpdateWrapper<SchBaseTask>()
.eq(SchBaseTask::getTask_id, taskId), false);
if (schBaseTask == null) {
throw new BadRequestException("装箱区 -> 装箱对接位强制完成接口任务号为空!");
}
if (TaskUtil.checkParams(schBaseTask,THIS_CLASS)) return;
updateTaskStatus(JSONObject.parseObject(JSON.toJSONString(schBaseTask)), TaskStatusEnum.FINISHED.getCode());
}

View File

@@ -31,6 +31,7 @@ import org.nl.system.service.param.ISysParamService;
import org.nl.wms.sch.AcsTaskDto;
import org.nl.wms.sch.manage.AbstractAcsTask;
import org.nl.wms.sch.manage.TaskStatusEnum;
import org.nl.wms.util.TaskUtil;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -113,9 +114,7 @@ public class ZxqTask extends AbstractAcsTask {
@Transactional(rollbackFor = Exception.class)
public void updateTaskStatus(JSONObject taskObj, String status) {
SchBaseTask schBaseTask = taskService.getOne(new LambdaUpdateWrapper<SchBaseTask>().eq(SchBaseTask::getTask_id, taskObj.getString("task_id")), false);
if (schBaseTask == null) {
throw new BadRequestException("待检区 -> 装箱区完成接口任务号为空!");
}
if (TaskUtil.checkParams(schBaseTask,THIS_CLASS)) return;
if (TaskStatusEnum.EXECUTING.getCode().equals(status)) {
// 更新任务状态为执行中
schBaseTask.setTask_status(TaskStatusEnum.EXECUTING.getCode());
@@ -290,9 +289,7 @@ public class ZxqTask extends AbstractAcsTask {
public void forceFinish(String taskId) {
SchBaseTask schBaseTask = taskService.getOne(new LambdaUpdateWrapper<SchBaseTask>()
.eq(SchBaseTask::getTask_id, taskId), false);
if (schBaseTask == null) {
throw new BadRequestException("待检区 -> 装箱区强制完成接口任务号为空!");
}
if (TaskUtil.checkParams(schBaseTask,THIS_CLASS)) return;
updateTaskStatus(JSONObject.parseObject(JSON.toJSONString(schBaseTask)), TaskStatusEnum.FINISHED.getCode());
}

View File

@@ -36,33 +36,12 @@ public class AutoSendToZxq {
this.sendDjqToZxq();
}
/**
* 普通任务
*/
void sendDjqToZxq() {
JSONObject toDjqTask = new JSONObject();
//待检区有子卷且过滤未完成任务
List<BstIvtPackageinfoivt> djqPackageinfoivtList = packageinfoivtService.checkEndPointTask(PackageInfoIvtEnum.POINT_STATUS.code("待检区"), PackageInfoIvtEnum.IVT_STATUS.code("有子卷"), PackageInfoIvtEnum.TASK_POINT_TYPE.code("取货任务"), "", "");
if (CollectionUtils.isEmpty(djqPackageinfoivtList)) {
return;
}
List<BstIvtPackageinfoivt> zxqPackageinfoivtList = packageinfoivtService.checkEndPointTask(PackageInfoIvtEnum.POINT_STATUS.code("装箱区"), PackageInfoIvtEnum.IVT_STATUS.code(""), PackageInfoIvtEnum.TASK_POINT_TYPE.code("放货任务"), "", "");
if (CollectionUtils.isEmpty(zxqPackageinfoivtList)) {
return;
}
toDjqTask.put("vehicle_code", djqPackageinfoivtList.get(0).getContainer_name());
toDjqTask.put("point_code1", djqPackageinfoivtList.get(0).getPoint_code());
toDjqTask.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("待检区->装箱区"));
toDjqTask.put("point_code2", zxqPackageinfoivtList.get(0).getPoint_code());
zxqTask.createTask(toDjqTask);
}
/**
* 二次分配任务
*/
public void sendDjqToZxq1() {
public void sendDjqToZxq() {
//装箱区有空位,去待检区消费合格品子卷
List<BstIvtPackageinfoivt> bstIvtPackageinfoivtList = packageinfoivtService.checkEndPointTask(
PackageInfoIvtEnum.POINT_STATUS.code("装箱区"),

View File

@@ -16,6 +16,7 @@ import org.nl.b_lms.sch.point.service.IbstIvtPackageinfoivtService;
import org.nl.b_lms.sch.tasks.first_floor_area.ZxDjwTask;
import org.nl.b_lms.storage_manage.database.service.dao.BstIvtBoxinfo;
import org.nl.b_lms.storage_manage.database.service.dao.mapper.BstIvtBoxinfoMapper;
import org.nl.b_lms.storage_manage.ios.enums.IOSEnum;
import org.nl.common.enums.PackageInfoIvtEnum;
import org.nl.modules.common.exception.BadRequestException;
import org.nl.system.service.param.ISysParamService;
@@ -25,6 +26,8 @@ import javax.annotation.Resource;
import java.util.List;
import java.util.stream.Collectors;
import static org.nl.wms.util.TaskUtil.getMaxNum;
@Slf4j
@Component
@@ -57,12 +60,12 @@ public class AutoSendZxToDjw {
void sendZxToDjw() {
//装箱位有木箱
List<BstIvtPackageinfoivt> zxwPackageinfoivtList = packageinfoivtService.checkEndPointTask(PackageInfoIvtEnum.POINT_STATUS.code("装箱位"), PackageInfoIvtEnum.IVT_STATUS.code("空载具"), PackageInfoIvtEnum.TASK_POINT_TYPE.code("取货任务取货分配"), PackageInfoIvtEnum.SORT_TYPE.code("升序"), PackageInfoIvtEnum.TASK_TYPE.code("装箱区->装箱对接位"));
List<BstIvtPackageinfoivt> zxwPackageinfoivtList = packageinfoivtService.checkEndPointTask(PackageInfoIvtEnum.POINT_STATUS.code("装箱位"), PackageInfoIvtEnum.IVT_STATUS.code("空载具"), "", PackageInfoIvtEnum.SORT_TYPE.code("升序"), PackageInfoIvtEnum.TASK_TYPE.code("装箱区->装箱对接位"));
if (CollectionUtils.isEmpty(zxwPackageinfoivtList)) {
return;
}
//装箱区有子卷且没有正在进行的装箱任务
List<BstIvtPackageinfoivt> zxqPackageinfoivtList = packageinfoivtService.checkEndPointTask(PackageInfoIvtEnum.POINT_STATUS.code("装箱区"), PackageInfoIvtEnum.IVT_STATUS.code("有子卷"), PackageInfoIvtEnum.TASK_POINT_TYPE.code("取货任务"), "", "");
List<BstIvtPackageinfoivt> zxqPackageinfoivtList = packageinfoivtService.checkEndPointTask(PackageInfoIvtEnum.POINT_STATUS.code("装箱区"), PackageInfoIvtEnum.IVT_STATUS.code("有子卷"),"", "", "");
if (CollectionUtils.isEmpty(zxqPackageinfoivtList)) {
return;
}
@@ -98,21 +101,21 @@ public class AutoSendZxToDjw {
jo.put("point_code2", zxwPackageinfoivtList.get(0).getPoint_code());
jo.put("vehicle_code", containerName);
jo.put("vehicle_code2", boxNo);
jo.put("is_send", "1");
jo.put("is_send", IOSEnum.IS_NOTANDYES.code(""));
//扩展参数
JSONObject param = new JSONObject();
//查询是否为最后一个子卷,相同木箱号且子卷包装状态为生成
List<PdmBiSubpackagerelation> packagerelationList = subpackageRelationService.list(new LambdaQueryWrapper<PdmBiSubpackagerelation>().eq(PdmBiSubpackagerelation::getPackage_box_sn, boxNo).eq(PdmBiSubpackagerelation::getStatus, "0"));
if (packagerelationList.size() == 1 && packagerelationList.get(0).getContainer_name().equals(containerName)) {
//最后子卷
param.put("lastOne", "1");
param.put("lastOne", IOSEnum.IS_NOTANDYES.code(""));
} else {
param.put("lastOne", "0");
param.put("lastOne", IOSEnum.IS_NOTANDYES.code(""));
}
//获取木箱高度等级
param.put("heightLevel", getHeightLevel(bstIvtBoxinfo));
//获取子卷长度
param.put("len", getMaxNum(productionPlanList));
param.put("len", getMaxNum(productionPlanList.get(0),null));
//木箱最大数量
param.put("maxNo", bstIvtBoxinfo.getNum());
//托盘类型 1小托盘 2大托盘
@@ -154,20 +157,7 @@ public class AutoSendZxToDjw {
return height;
}
private static int getMaxNum(List<PdmBiSlittingproductionplan> productionPlanList) {
String containerLength = productionPlanList.get(0).getPaper_tube_or_FRP().equals("1") ? productionPlanList.get(0).getPaper_tube_description() : productionPlanList.get(0).getFRP_description();
int maxNum = 0;
for (String part : containerLength.split("\\|")) {
String numStr = part.replaceAll("\\D+", "");
if (!numStr.isEmpty()) {
int num = Integer.parseInt(numStr);
if (num > maxNum) {
maxNum = num;
}
}
}
return maxNum;
}
// void sendMzqToDjq() {

View File

@@ -0,0 +1,54 @@
package org.nl.b_lms.sch.tasks.first_floor_area.auto;
import com.alibaba.fastjson.JSONObject;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.nl.b_lms.sch.point.dao.BstIvtPackageinfoivt;
import org.nl.b_lms.sch.point.service.IbstIvtPackageinfoivtService;
import org.nl.b_lms.sch.tasks.first_floor_area.ZxqTask;
import org.nl.common.enums.PackageInfoIvtEnum;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.List;
@Slf4j
@Component
@RequiredArgsConstructor
public class ManualSendToZxq {
@Resource
private IbstIvtPackageinfoivtService packageinfoivtService;
@Resource
private ZxqTask zxqTask;
//待检区->装箱区agv手动搬运任务
public void run() {
this.sendDjqToZxq();
}
/**
* 普通任务
*/
void sendDjqToZxq() {
JSONObject toDjqTask = new JSONObject();
//待检区有子卷且过滤未完成任务
List<BstIvtPackageinfoivt> djqPackageinfoivtList = packageinfoivtService.checkEndPointTask(PackageInfoIvtEnum.POINT_STATUS.code("待检区"), PackageInfoIvtEnum.IVT_STATUS.code("合格品"), PackageInfoIvtEnum.TASK_POINT_TYPE.code("取货任务"), "", "");
if (CollectionUtils.isEmpty(djqPackageinfoivtList)) {
return;
}
List<BstIvtPackageinfoivt> zxqPackageinfoivtList = packageinfoivtService.checkEndPointTask(PackageInfoIvtEnum.POINT_STATUS.code("装箱区"), PackageInfoIvtEnum.IVT_STATUS.code(""), PackageInfoIvtEnum.TASK_POINT_TYPE.code("放货任务"), "", "");
if (CollectionUtils.isEmpty(zxqPackageinfoivtList)) {
return;
}
toDjqTask.put("vehicle_code", djqPackageinfoivtList.get(0).getContainer_name());
toDjqTask.put("point_code1", djqPackageinfoivtList.get(0).getPoint_code());
toDjqTask.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("待检区->装箱区"));
toDjqTask.put("point_code2", zxqPackageinfoivtList.get(0).getPoint_code());
zxqTask.createTask(toDjqTask);
}
}

View File

@@ -89,7 +89,7 @@ public class AutoCallAirShaftTask {
// 标箔1锂电2 改大小4代5代
String specification = empty.getQzz_generation();
String location = empty.getPoint_location();
// 2、获取分切计划数据
// 2、获取分切计划数据 校验代数
List<SlitterPlanDistinctDto> plans = slittingproductionplanService.getAllCutPlan();
if (plans.size() == 0) {
// 如果不需要套轴,就只做拔轴
@@ -113,7 +113,7 @@ public class AutoCallAirShaftTask {
makePullShaft(empty, specification);
return;
}
// 从寻查找分切计划并放在plans, 没有考虑区域问题
// 从寻查找分切计划并放在plans, 没有考虑区域问题 里面会考虑代数
plans = slittingproductionplanService.getAllHalfPlan(qzzs);
if (plans.size() == 0) {
// 如果不需要套轴,就只做拔轴

View File

@@ -87,6 +87,9 @@ public class BstIvtBoxinfo implements Serializable {
*/
private String insert_time;
/*
* 木箱重量
*/
private String box_weight;

View File

@@ -16,8 +16,10 @@ import org.nl.b_lms.sch.tasks.TwoLashTask;
import org.nl.b_lms.sch.tasks.TwoOutHeapTask;
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.IMdpbBoxtypeService;
import org.nl.b_lms.storage_manage.database.service.dao.BstIvtBoxinfo;
import org.nl.b_lms.storage_manage.database.service.dao.BstIvtBoxlashbound;
import org.nl.b_lms.storage_manage.database.service.dao.MdpbBoxtype;
import org.nl.b_lms.storage_manage.ios.enums.IOSEnum;
import org.nl.b_lms.storage_manage.ios.service.iostorInv.util.service.LashManageService;
import org.nl.common.utils.IdUtil;
@@ -65,6 +67,11 @@ public class LashManageServiceImpl implements LashManageService {
*/
private final TwoLashTask twoLashTask;
/**
* 木箱类型信息服务
*/
private final IMdpbBoxtypeService iMdpbBoxtypeService;
@Override
@Transactional
public void createLashTask(JSONObject whereJson) {
@@ -245,22 +252,31 @@ public class LashManageServiceImpl implements LashManageService {
.eq(BstIvtBoxinfo::getBox_no, whereJson.getString("vehicle_code"))
);
// 根据木箱料号查询木箱类型信息
MdpbBoxtype boxTypeDao = iMdpbBoxtypeService.getById(boxDao.getMaterial_code());
if (ObjectUtil.isEmpty(boxTypeDao)) {
throw new BadRequestException("木箱类型信息不存在!木箱料号为:"+boxDao.getMaterial_code());
}
// 返回参数
result.put("length", boxDao.getBox_length());
result.put("width", boxDao.getBox_width());
result.put("height", boxDao.getBox_high());
result.put("case", boxDao.getMaterial_code());
result.put("isBinding", IOSEnum.IS_SEND.code(""));
// 是否捆扎
result.put("isBinding", boxTypeDao.getNeed_lash_one());
// TODO 是否贴标
result.put("isLabeling", IOSEnum.IS_SEND.code(""));
// TODO 贴标模版
result.put("labelingTemplate", boxDao.getLash_num());
//捆扎模板
result.put("bindingTemplate", boxDao.getLash_num());
// 捆扎模板
result.put("bindingTemplate", boxTypeDao.getLash_num());
// TODO 打印机
result.put("printDevice", "1");
// TODO 贴标数量
result.put("printQty", "1");
//第一次捆扎次数
result.put("bundleTimes", "3");
// 第一次捆扎次数
result.put("bundleTimes", boxTypeDao.getLash_num_one());
return result;
}

View File

@@ -49,6 +49,11 @@ public class SendOutManageServiceImpl implements SendOutManageService {
*/
private final SchBasePointMapper schBasePointMapper;
/**
* 发货服务
*/
private final TwoSendOutTask twoSendOutTask;
@Override
@Transactional
public void createSendOutTask(JSONObject whereJson) {
@@ -196,8 +201,7 @@ public class SendOutManageServiceImpl implements SendOutManageService {
task_jo.put("point_code2", point_code);
task_jo.put("vehicle_code", vehicleCode);
task_jo.put("task_type", "010708");
TwoSendOutTask taskBean = new TwoSendOutTask();
taskBean.createTask(task_jo);
twoSendOutTask.createTask(task_jo);
// 锁住点位
ischBasePointService.update(
@@ -366,8 +370,7 @@ public class SendOutManageServiceImpl implements SendOutManageService {
task_jo.put("point_code4", point_code);
task_jo.put("vehicle_code", vehicleCode);
task_jo.put("task_type", "010708");
TwoSendOutTask taskBean = new TwoSendOutTask();
taskBean.createTask(task_jo);
twoSendOutTask.createTask(task_jo);
// 锁住点位
ischBasePointService.update(

View File

@@ -26,7 +26,12 @@ public class AsyncLuceneAppender extends AspectLogbackAsyncAppender {
mdcPropertyMap.put("traceId", traceId);
}
}
super.append(event);
try {
super.append(event);
} catch (Exception e) {
System.out.println(e.getMessage());
return;
}
}
}

View File

@@ -207,7 +207,7 @@ public class InbillServiceImpl {
WQLObject.getWQLObject("ST_IVT_IOStorInv").update(mst_jo);
//回传MES
if (StrUtil.equals(mst_jo.getString("bill_type"), "0001")) {
if (StrUtil.equals(mst_jo.getString("bill_type"), "0001") || StrUtil.equals(mst_jo.getString("bill_type"), "0007")) {
InAndOutRetrunServiceImpl bean = SpringContextHolder.getBean(InAndOutRetrunServiceImpl.class);
JSONObject param = new JSONObject();

View File

@@ -173,7 +173,8 @@ public class InAndOutRetrunServiceImpl implements InAndOutReturnService {
String lgort = stor_jo.getString("ext_id");
String is_productstore = stor_jo.getString("is_productstore");
//生产入库
if (StrUtil.equals(bill_type, "0001")) {
if (StrUtil.equals(bill_type, "0001") || StrUtil.equals(bill_type, "0007")) {
//1.回传MES
//查询该入库单下的所有箱子回传
@@ -1014,7 +1015,7 @@ public class InAndOutRetrunServiceImpl implements InAndOutReturnService {
String lgort = stor_jo.getString("ext_id");
String is_productstore = stor_jo.getString("is_productstore");
//生产入库
if (StrUtil.equals(bill_type, "0001")) {
if (StrUtil.equals(bill_type, "0001") || StrUtil.equals(bill_type, "0007")) {
//1.回传MES
//查询该入库单下的所有箱子回传

View File

@@ -1,5 +1,11 @@
package org.nl.wms.util;
import org.apache.commons.lang3.StringUtils;
import org.nl.b_lms.pdm.bi.slittingproductionplan.service.dao.PdmBiSlittingproductionplan;
import org.nl.b_lms.sch.task.dao.SchBaseTask;
import org.nl.modules.common.exception.BadRequestException;
import org.nl.wms.sch.manage.TaskStatusEnum;
public class TaskUtil {
/**
@@ -12,4 +18,38 @@ public class TaskUtil {
return "normal";
}
}
/**
* 任务类参数校验
*/
public static boolean checkParams(SchBaseTask schBaseTask, String taskType) {
if (schBaseTask == null) {
throw new BadRequestException("任务类型为:" + taskType + "完成接口任务号为空!");
}
if (schBaseTask.getTask_status().equals(TaskStatusEnum.FINISHED.getCode())) {
return true;
}
if (StringUtils.isBlank(schBaseTask.getVehicle_code())) {
throw new BadRequestException("任务类型为:" + taskType + "子卷号不能为空!");
}
return false;
}
/**
* 根据分切计划获取子卷长度
*/
public static int getMaxNum(PdmBiSlittingproductionplan productionPlan, String paperDescription) {
String containerLength = productionPlan != null ? productionPlan.getPaper_tube_or_FRP().equals("1") ? productionPlan.getPaper_tube_description() : productionPlan.getFRP_description() : paperDescription;
int maxNum = 0;
for (String part : containerLength.split("\\|")) {
String numStr = part.replaceAll("\\D+", "");
if (!numStr.isEmpty()) {
int num = Integer.parseInt(numStr);
if (num > maxNum) {
maxNum = num;
}
}
}
return maxNum;
}
}