fix: 人工呼叫套轴

This commit is contained in:
2025-07-11 14:33:13 +08:00
parent 4a1b8ac17a
commit f6cbfb876f
7 changed files with 133 additions and 13 deletions

View File

@@ -255,5 +255,17 @@ public class SlitterPdaController {
public ResponseEntity<Object> cutCacheInventory(@RequestBody JSONObject param) {
return new ResponseEntity<>(slitterService.cutCacheInventory(param), HttpStatus.OK);
}
@PostMapping("/doCallTubeShaftShow")
@Log("呼叫套轴")
@SaIgnore
public ResponseEntity<Object> doCallTubeShaftShow(@RequestBody JSONObject param) {
return new ResponseEntity<>(slitterService.doCallTubeShaftShow(param), HttpStatus.OK);
}
@PostMapping("/doCallTubeShaft")
@Log("呼叫套轴")
@SaIgnore
public ResponseEntity<Object> doCallTubeShaft(@RequestBody JSONObject param) {
return new ResponseEntity<>(slitterService.doCallTubeShaft(param), HttpStatus.OK);
}
}

View File

@@ -18,12 +18,13 @@
p.up_or_down,
p.qzz_size,
p.qzz_generation,
MIN(p.start_time) AS start_time,
MIN(p.call_time) AS start_time,
MAX(p.manufacture_sort) AS manufacture_sort
FROM `pdm_bi_slittingproductionplan` p
WHERE p.`status` = '01'
AND p.is_child_tz_ok = '0'
AND p.is_paper_ok = '1'
AND p.is_call = '1'
AND p.is_delete = '0'
AND IFNULL(p.up_or_down, '') <![CDATA[ <> ]]> ''
AND IFNULL(p.left_or_right, '') <![CDATA[ <> ]]> ''
@@ -46,12 +47,13 @@
p.up_or_down,
p.qzz_size,
p.qzz_generation,
MIN(p.start_time) AS start_time,
MIN(p.call_time) AS start_time,
MAX(p.manufacture_sort) AS manufacture_sort
FROM `pdm_bi_slittingproductionplan` p
WHERE p.`status` = '01'
AND p.is_child_tz_ok = '0'
AND p.is_paper_ok = '1'
AND p.is_call = '1'
AND p.is_delete = '0'
AND IFNULL(p.up_or_down, '') <![CDATA[ <> ]]> ''
AND IFNULL(p.left_or_right, '') <![CDATA[ <> ]]> ''

View File

@@ -119,8 +119,6 @@ public class SlitterDownTrussTask extends AbstractAcsTask {
log.info("即将下卷的上下轴的子卷号数据1{}", downCons);
List<PdmBiSlittingproductionplan> downPlans = slittingproductionplanService.getByContainerNames(downCons);
log.info("即将下卷的上下轴的子卷号数据2{}", downPlans);
// SlitterTaskUtil.setPaperWeightStr(point1.getRemark(), downPlans);
// log.info("即将下卷的上下轴的子卷号数据3{}", downPlans);
// 下来的卷的集合
List<PdmBiSlittingproductionplan> needUpdates = new ArrayList<>();
// 绑定气胀轴编码(可能没有气胀轴编码)
@@ -159,13 +157,7 @@ public class SlitterDownTrussTask extends AbstractAcsTask {
}
}
// downPlans.forEach(downPlan -> {
// downPlan.setStatus("09");
// downPlan.setEnd_time(DateUtil.now());
// TaskUtils.updateOptMessageBySlitterPlan(downPlan);
// });
log.info("即将下卷的上下轴的子卷号数据4-需要更新的新数组:{}", needUpdates);
// slittingproductionplanService.updateBatchById(downPlans);
for (int i = 0; i < needUpdates.size(); i++) {
boolean flag = slittingproductionplanService.updateById(needUpdates.get(i));
log.info(flag+"即将下卷的上下轴的子卷号数据5{}", needUpdates);
@@ -201,7 +193,6 @@ public class SlitterDownTrussTask extends AbstractAcsTask {
p1.setUpdate_optname(SecurityUtils.getCurrentNickName());
p1.setUpdate_optid(SecurityUtils.getCurrentUserId());
});
// slittingproductionplanService.updateBatchById(plans);
for (int i = 0; i < plans.size(); i++) {
slittingproductionplanService.updateById(plans.get(i));
}

View File

@@ -64,4 +64,6 @@ public interface SlitterMapper {
List<CallPlanViewVO> showManualView();
List<CallPlanViewVO> showManualViewNoXn();
List<CallPlanViewVO> showManualCall(Integer days);
}

View File

@@ -198,7 +198,7 @@
p.qzz_size,
p.qzz_generation,
p.is_paper_ok,
MIN(p.start_time) AS start_time,
MIN(p.call_time) AS start_time,
IF(p.paper_tube_or_FRP = '1', p.paper_tube_description, p.FRP_description) AS tube,
MIN(p.`status`) AS `status`,
MAX(p.qzzno) AS qzzno,
@@ -206,6 +206,7 @@
FROM `pdm_bi_slittingproductionplan` p
WHERE p.`status` <![CDATA[ < ]]> '09'
AND p.is_delete = '0'
AND p.is_call = '1'
AND IFNULL(p.up_or_down, '') <![CDATA[ <> ]]> ''
AND IFNULL(p.left_or_right, '') <![CDATA[ <> ]]> ''
AND DATE (p.start_time) >= DATE_SUB(CURDATE()
@@ -232,4 +233,53 @@
manufacture_sort desc,
start_time
</select>
<select id="showManualCall" resultType="org.nl.b_lms.sch.tasks.slitter.mapper.dto.CallPlanViewVO">
SELECT p.workorder_id,
p.resource_name,
CASE
WHEN LENGTH(p.parent_container_name) > 0 THEN
p.parent_container_name
ELSE p.restruct_container_name
END AS parent_container_name,
p.container_name,
p.split_group,
p.up_or_down,
p.qzz_size,
p.qzz_generation,
p.is_paper_ok,
MIN(p.call_time) AS start_time,
IF(p.paper_tube_or_FRP = '1', p.paper_tube_description, p.FRP_description) AS tube,
MIN(p.is_call) AS `status`,
MAX(p.qzzno) AS qzzno,
MAX(p.manufacture_sort) AS manufacture_sort
FROM `pdm_bi_slittingproductionplan` p
WHERE p.`status` = '01'
AND p.is_delete = '0'
AND p.is_paper_ok = '1'
AND IFNULL(p.up_or_down, '') <![CDATA[ <> ]]> ''
AND IFNULL(p.left_or_right, '') <![CDATA[ <> ]]> ''
AND DATE (p.start_time) >= DATE_SUB(CURDATE()
, INTERVAL #{days} DAY)
AND '1' = (SELECT c.is_used FROM st_ivt_cutpointivt c WHERE c.ext_code = p.resource_name AND c.product_area IN ('B1', 'B2'))
GROUP BY
p.workorder_id,
p.resource_name,
p.parent_container_name,
p.restruct_container_name,
p.split_group,
p.up_or_down,
p.qzz_size,
p.is_paper_ok,
p.manufacture_sort,
p.start_time,
p.qzz_generation,
p.paper_tube_or_FRP,
p.paper_tube_description,
p.FRP_description,
p.container_name
ORDER BY
is_call,
manufacture_sort desc,
start_time
</select>
</mapper>

View File

@@ -380,4 +380,16 @@ public interface SlitterService {
JSONObject tzTaskINfo(JSONObject entity);
void recover(JSONObject param);
/**
* 呼叫套轴
* @param param
*/
JSONObject doCallTubeShaft(JSONObject param);
/**
* 呼叫套轴展示
* @param param
*/
List<CallPlanViewVO> doCallTubeShaftShow(JSONObject param);
}

View File

@@ -66,6 +66,7 @@ import java.util.Arrays;
import java.util.List;
import java.util.Objects;
import java.util.concurrent.TimeUnit;
import java.util.function.Consumer;
import java.util.stream.Collectors;
import java.util.stream.Stream;
@@ -80,8 +81,12 @@ import static org.nl.b_lms.sch.tasks.slitter.util.SlitterTaskUtil.getPointLocati
@Slf4j
@Service
public class SlitterServiceImpl implements SlitterService {
/** 是否使用虚拟卷 */
public final static String USE_XN = "USE_XN";
/** 套轴期限 */
public final static String TZ_DAY = "TZ_DAY";
/** 套轴区域 */
public final static String PARAM_CODE_PLAN_AREA = "PARAM_CODE_PLAN_AREA";
@Autowired
private BstIvtStockingivtMapper bstIvtStockingivtMapper;
@Autowired
@@ -2938,6 +2943,52 @@ public class SlitterServiceImpl implements SlitterService {
slittingproductionplanService.update(lam);
}
@Override
@Transactional(rollbackFor = Exception.class)
public JSONObject doCallTubeShaft(JSONObject param) {
// param: device_code、row
String deviceCode = param.getString("device_code");
JSONObject row = param.getJSONObject("row");
String parentContainerName = row.getString("parent_container_name");
String splitGroup = row.getString("split_group");
LambdaQueryWrapper<PdmBiSlittingproductionplan> lam = new LambdaQueryWrapper<>();
lam.eq(PdmBiSlittingproductionplan::getSplit_group, splitGroup)
.eq(PdmBiSlittingproductionplan::getResource_name, deviceCode)
.and(la -> la.eq(PdmBiSlittingproductionplan::getParent_container_name, parentContainerName)
.or()
.eq(PdmBiSlittingproductionplan::getRestruct_container_name, parentContainerName));
List<PdmBiSlittingproductionplan> plans = slittingproductionplanService.list(lam);
for (PdmBiSlittingproductionplan plan : plans) {
plan.setIs_call("1");
plan.setCall_time(DateUtil.now());
plan.setUpdate_optid(SecurityUtils.getCurrentUserId());
plan.setUpdate_optname(SecurityUtils.getCurrentNickName());
plan.setUpdate_time(DateUtil.now());
}
slittingproductionplanService.updateBatchById(plans);
JSONObject res = new JSONObject();
res.put("status", HttpStatus.HTTP_OK);
res.put("message", "呼叫套轴成功!");
return res;
}
@Override
public List<CallPlanViewVO> doCallTubeShaftShow(JSONObject param) {
// param: device_code
String deviceCode = param.getString("device_code");
Param tzDay = paramService.findByCode(TZ_DAY);
Integer days = Integer.valueOf(ObjectUtil.isEmpty(tzDay.getValue()) ? "0" : tzDay.getValue());
// 区域固定B1、B2
// Param paramObj = paramService.findByCode(PARAM_CODE_PLAN_AREA);
// String value = paramObj.getValue();
// List<String> area = Arrays.asList(value.split("[,]"));
List<CallPlanViewVO> callPlanViewVOS = slitterMapper.showManualCall(days);
if (callPlanViewVOS.size() == 0) {
return null;
}
return callPlanViewVOS.stream().filter(p -> p.getResource_name().equals(deviceCode)).collect(Collectors.toList());
}
public List<String> getRedisListValue(String key) {
List<String> stepTipLogs = (List<String>) redisUtils.get(key);
if (CollectionUtil.isEmpty(stepTipLogs)) {