启动工单修改,删除场景

parent 00077f3b
...@@ -2,7 +2,9 @@ package com.aps.controller; ...@@ -2,7 +2,9 @@ package com.aps.controller;
import com.aps.common.util.R; import com.aps.common.util.R;
import com.aps.entity.Algorithm.Chromosome; import com.aps.entity.Algorithm.Chromosome;
import com.aps.entity.ProdSceneConfig;
import com.aps.service.LanuchService; import com.aps.service.LanuchService;
import com.aps.service.ProdSceneConfigService;
import com.aps.service.plan.PlanResultService; import com.aps.service.plan.PlanResultService;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
...@@ -21,6 +23,9 @@ public class LanuchController { ...@@ -21,6 +23,9 @@ public class LanuchController {
@Autowired @Autowired
private PlanResultService planResultService; private PlanResultService planResultService;
@Autowired
private ProdSceneConfigService prodSceneConfigService;
/** /**
* 启动工单 * 启动工单
* *
...@@ -30,12 +35,12 @@ public class LanuchController { ...@@ -30,12 +35,12 @@ public class LanuchController {
*/ */
@PostMapping("/execute") @PostMapping("/execute")
public R<String> lanuch( public R<String> lanuch(
@RequestParam String sceneName, @RequestParam String sceneName,
@RequestHeader(required = false) String username) { @RequestHeader(required = false) String username) {
if (username == null || username.isEmpty()) { if (username == null || username.isEmpty()) {
username = "system"; username = "system";
} }
return lanuchService.lanuch(sceneName, username); return lanuchService.lanuch(sceneName, username);
} }
...@@ -68,5 +73,14 @@ public class LanuchController { ...@@ -68,5 +73,14 @@ public class LanuchController {
} }
@GetMapping("/deleteScene")
public R<Boolean> deleteScene(@RequestParam String sceneID) {
// 调用 PlanResultService 获取 ScheduleChromosome 列表
return R.ok(prodSceneConfigService.deleteSceneById(sceneID));
}
} }
\ No newline at end of file
package com.aps.entity; package com.aps.entity;
import lombok.Data; import lombok.Data;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDateTime; import java.time.LocalDateTime;
@Data @Data
public class ApsOrder { public class ApsOrder {
private String id; private String id;
private LocalDateTime creationtime; private LocalDateTime creationtime;
private Long creatoruserid; private Long creatoruserid;
private LocalDateTime lastmodificationtime; private LocalDateTime lastmodificationtime;
private Long lastmodifieruserid; private Long lastmodifieruserid;
private Long isdeleted; private Long isdeleted;
private LocalDateTime deletiontime; private LocalDateTime deletiontime;
private Long deleteruserid; private Long deleteruserid;
private String exp1; private String exp1;
private String exp2; private String exp2;
private BigDecimal exp3; private BigDecimal exp3;
private BigDecimal exp4; private BigDecimal exp4;
private LocalDateTime exp5; private LocalDateTime exp5;
private LocalDateTime exp6; private LocalDateTime exp6;
private String zone; private String zone;
private Long customerid; private Long customerid;
private String customer; private String customer;
private String code; private String code;
private String mmid; private String mmid;
private String mmcode; private String mmcode;
private String mmname; private String mmname;
private String unit; private String unit;
private double quantity; private double quantity;
private double meetquantity; private BigDecimal meetquantity;
private double meetrate; private BigDecimal meetrate;
private double price; private BigDecimal price;
private LocalDateTime deliverytime; private LocalDateTime deliverytime;
private Long stockid; private Long stockid;
private String stock; private String stock;
private String prioritry; private String prioritry;
private String series; private String series;
private Long isinsert; private Long isinsert;
private Long islock; private Long islock;
private Long part; private Long part;
private Long delay; private Long delay;
private Long settle; private Long settle;
private String remark; private String remark;
private Long zoneid; private Long zoneid;
private Long unitid;
private LocalDateTime begintime;
private Integer routingid;
private String routingname;
private Long status;
private Long routingstatus;
private String routingcode;
private LocalDateTime endtime;
private Long schedulestatus;
} }
\ No newline at end of file
...@@ -9,7 +9,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; ...@@ -9,7 +9,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
* </p> * </p>
* *
* @author MyBatis-Plus * @author MyBatis-Plus
* @since 2025-11-26 * @since 2025-12-10
*/ */
public interface ApsOrderMapper extends BaseMapper<ApsOrder> { public interface ApsOrderMapper extends BaseMapper<ApsOrder> {
......
...@@ -9,7 +9,7 @@ import com.baomidou.mybatisplus.extension.service.IService; ...@@ -9,7 +9,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
* </p> * </p>
* *
* @author MyBatis-Plus * @author MyBatis-Plus
* @since 2025-11-26 * @since 2025-12-10
*/ */
public interface ApsOrderService extends IService<ApsOrder> { public interface ApsOrderService extends IService<ApsOrder> {
......
...@@ -13,4 +13,10 @@ import com.baomidou.mybatisplus.extension.service.IService; ...@@ -13,4 +13,10 @@ import com.baomidou.mybatisplus.extension.service.IService;
*/ */
public interface ProdSceneConfigService extends IService<ProdSceneConfig> { public interface ProdSceneConfigService extends IService<ProdSceneConfig> {
} /**
* 根据场景ID删除场景及其相关数据
* @param sceneId 场景ID
* @return 是否删除成功
*/
boolean deleteSceneById(String sceneId);
}
\ No newline at end of file
package com.aps.service.impl; package com.aps.service.impl;
import com.aps.entity.ApsOrder; import com.aps.entity.ApsOrder;
import com.aps.entity.EquipCapacityDef;
import com.aps.mapper.ApsOrderMapper; import com.aps.mapper.ApsOrderMapper;
import com.aps.mapper.EquipCapacityDefMapper;
import com.aps.service.ApsOrderService; import com.aps.service.ApsOrderService;
import com.aps.service.EquipCapacityDefService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
/** /**
* ApsOrderServiceImpl.java * <p>
* 服务实现类
* </p>
* *
* @author jdt * @author MyBatis-Plus
* @description 订单 * @since 2025-12-10
* @since 2025-11-26
*/ */
@Service
public class ApsOrderServiceImpl extends ServiceImpl<ApsOrderMapper, ApsOrder> implements ApsOrderService {
}
@Service
public class ApsOrderServiceImpl extends ServiceImpl<ApsOrderMapper, ApsOrder> implements ApsOrderService {
}
...@@ -106,9 +106,17 @@ public class LanuchServiceImpl implements LanuchService { ...@@ -106,9 +106,17 @@ public class LanuchServiceImpl implements LanuchService {
prodEquipSpecialCalService.copyFromEquipCapacityDef(sceneId); prodEquipSpecialCalService.copyFromEquipCapacityDef(sceneId);
// List<ApsOrder> apsOrders = apsOrderService.lambdaQuery()
// .eq(ApsOrder::getIsdeleted, 0)
// .like(ApsOrder::getCode, "佟礼测试数据")
// .list();
List<ApsOrder> apsOrders = apsOrderService.lambdaQuery() List<ApsOrder> apsOrders = apsOrderService.lambdaQuery()
.eq(ApsOrder::getIsdeleted, 0) .eq(ApsOrder::getIsdeleted, 0)
.like(ApsOrder::getCode, "佟礼测试数据") .eq(ApsOrder::getSchedulestatus, 1)
.eq(ApsOrder::getCreatoruserid,"1025")
.list(); .list();
if (CollectionUtils.isEmpty(apsOrders)) { if (CollectionUtils.isEmpty(apsOrders)) {
return R.failed("工单列表不能为空"); return R.failed("工单列表不能为空");
...@@ -173,7 +181,7 @@ public class LanuchServiceImpl implements LanuchService { ...@@ -173,7 +181,7 @@ public class LanuchServiceImpl implements LanuchService {
copyProdOrderProcesses(oldScene.getSceneId(), newSceneId); copyProdOrderProcesses(oldScene.getSceneId(), newSceneId);
copyProdEquipments(oldScene.getSceneId(), newSceneId); copyProdEquipments(oldScene.getSceneId(), newSceneId);
copyProdEquipSpecialCals(oldScene.getSceneId(), newSceneId); copyProdEquipSpecialCals(oldScene.getSceneId(), newSceneId);
// 复制染色体文件(排产结果) // 复制染色体文件(排产结果)
copyChromosomeFile(oldScene.getSceneId(), newSceneId); copyChromosomeFile(oldScene.getSceneId(), newSceneId);
...@@ -203,7 +211,7 @@ public class LanuchServiceImpl implements LanuchService { ...@@ -203,7 +211,7 @@ public class LanuchServiceImpl implements LanuchService {
} }
List<Order> prodLanuchList = chromosome.getOrders(); List<Order> prodLanuchList = chromosome.getOrders();
List<MesOrder> mesOrderList = new ArrayList<>(); List<MesOrder> mesOrderList = new ArrayList<>();
for (Order prodLaunchOrder : prodLanuchList) { for (Order prodLaunchOrder : prodLanuchList) {
MesOrder mesOrder = new MesOrder(); MesOrder mesOrder = new MesOrder();
...@@ -219,10 +227,10 @@ public class LanuchServiceImpl implements LanuchService { ...@@ -219,10 +227,10 @@ public class LanuchServiceImpl implements LanuchService {
// mesOrder.setStatus(1L); // Default status // mesOrder.setStatus(1L); // Default status
mesOrderList.add(mesOrder); mesOrderList.add(mesOrder);
} }
boolean saved = mesOrderService.saveBatch(mesOrderList); boolean saved = mesOrderService.saveBatch(mesOrderList);
if (saved) { if (saved) {
log.info("插入 {} 条数据到mes_order", mesOrderList.size()); log.info("插入 {} 条数据到mes_order", mesOrderList.size());
} else { } else {
...@@ -236,7 +244,7 @@ public class LanuchServiceImpl implements LanuchService { ...@@ -236,7 +244,7 @@ public class LanuchServiceImpl implements LanuchService {
// 遍历GAScheduleResult结果并转换为dispatch // 遍历GAScheduleResult结果并转换为dispatch
List<Dispatch> dispatches = new ArrayList<>(); List<Dispatch> dispatches = new ArrayList<>();
for (GAScheduleResult gaResult : chromosome.getResult()) { for (GAScheduleResult gaResult : chromosome.getResult()) {
...@@ -265,10 +273,10 @@ public class LanuchServiceImpl implements LanuchService { ...@@ -265,10 +273,10 @@ public class LanuchServiceImpl implements LanuchService {
// 添加到列表中 // 添加到列表中
dispatches.add(dispatch); dispatches.add(dispatch);
} }
// 批量保存到数据库 // 批量保存到数据库
boolean savedDispatch = dispatchService.saveOrUpdateBatch(dispatches); boolean savedDispatch = dispatchService.saveOrUpdateBatch(dispatches);
if (savedDispatch) { if (savedDispatch) {
return R.ok("计划下发成功,共处理 " + dispatches.size() + " 条记录"); return R.ok("计划下发成功,共处理 " + dispatches.size() + " 条记录");
} else { } else {
...@@ -346,23 +354,24 @@ public class LanuchServiceImpl implements LanuchService { ...@@ -346,23 +354,24 @@ public class LanuchServiceImpl implements LanuchService {
launchOrder.setMaterialId(order.getMmid()); launchOrder.setMaterialId(order.getMmid());
String mmid = order.getMmid(); String mmid = order.getMmid();
// 通过mmid查找对应的工艺 // // 通过mmid查找对应的工艺
if (mmid != null && !mmid.isEmpty()) { // if (mmid != null && !mmid.isEmpty()) {
LambdaQueryWrapper<RoutingHeader> routingWrapper = new LambdaQueryWrapper<>(); // LambdaQueryWrapper<RoutingHeader> routingWrapper = new LambdaQueryWrapper<>();
routingWrapper.eq(RoutingHeader::getMaterialId, mmid); // routingWrapper.eq(RoutingHeader::getMaterialId, mmid);
routingWrapper.eq(RoutingHeader::getIsDeleted, 0); // 添加判断 is_deleted=0 // routingWrapper.eq(RoutingHeader::getIsDeleted, 0); // 添加判断 is_deleted=0
List<RoutingHeader> routingHeaders = routingHeaderService.list(routingWrapper); // List<RoutingHeader> routingHeaders = routingHeaderService.list(routingWrapper);
RoutingHeader routingHeader = null; // RoutingHeader routingHeader = null;
if (!CollectionUtils.isEmpty(routingHeaders)) { // if (!CollectionUtils.isEmpty(routingHeaders)) {
routingHeader = routingHeaders.get(0); // routingHeader = routingHeaders.get(0);
} // }
//
if (routingHeader != null) { // if (routingHeader != null) {
launchOrder.setRoutingId(routingHeader.getId()); // launchOrder.setRoutingId(routingHeader.getId());
launchOrder.setRoutingCode(defaultIfBlank(routingHeader.getCode(), "")); // launchOrder.setRoutingCode(defaultIfBlank(routingHeader.getCode(), ""));
} // }
} // }
launchOrder.setRoutingId(order.getRoutingid());
launchOrder.setRoutingCode(order.getRoutingcode());
return launchOrder; return launchOrder;
} catch (Exception e) { } catch (Exception e) {
log.error("转换订单[{}]失败", order.getId(), e); log.error("转换订单[{}]失败", order.getId(), e);
...@@ -662,8 +671,8 @@ public class LanuchServiceImpl implements LanuchService { ...@@ -662,8 +671,8 @@ public class LanuchServiceImpl implements LanuchService {
*/ */
public void batchInsertProcessExec(ProdLaunchOrder prodOrderMain, public void batchInsertProcessExec(ProdLaunchOrder prodOrderMain,
List<RoutingDetail> routingDetails, List<RoutingDetail> routingDetails,
String sceneId, List<RoutingDetailEquip> routingDetailEquip) { String sceneId, List<RoutingDetailEquip> routingDetailEquip) {
List<ProdProcessExec> processExecList = routingDetails.stream() List<ProdProcessExec> processExecList = routingDetails.stream()
...@@ -700,8 +709,8 @@ public class LanuchServiceImpl implements LanuchService { ...@@ -700,8 +709,8 @@ public class LanuchServiceImpl implements LanuchService {
*/ */
public ProdProcessExec createProcessExec(ProdLaunchOrder prodOrderMain, public ProdProcessExec createProcessExec(ProdLaunchOrder prodOrderMain,
RoutingDetail detail, RoutingDetail detail,
String sceneId) { String sceneId) {
ProdProcessExec prodProcessExec = new ProdProcessExec(); ProdProcessExec prodProcessExec = new ProdProcessExec();
prodProcessExec.setExecId(UUID.randomUUID().toString().replace("-", "")); prodProcessExec.setExecId(UUID.randomUUID().toString().replace("-", ""));
prodProcessExec.setOrderId(prodOrderMain.getOrderId()); prodProcessExec.setOrderId(prodOrderMain.getOrderId());
...@@ -878,9 +887,9 @@ public class LanuchServiceImpl implements LanuchService { ...@@ -878,9 +887,9 @@ public class LanuchServiceImpl implements LanuchService {
*/ */
public ProdOrderProcess createProcessRelation(ProdLaunchOrder prodOrderMain, public ProdOrderProcess createProcessRelation(ProdLaunchOrder prodOrderMain,
RoutingDetailConnect connection, RoutingDetailConnect connection,
String sceneId, String sceneId,
Map<Long, String> routingDetailIdToExecIdMap) { Map<Long, String> routingDetailIdToExecIdMap) {
ProdOrderProcess prodOrderProcess = new ProdOrderProcess(); ProdOrderProcess prodOrderProcess = new ProdOrderProcess();
prodOrderProcess.setSceneId(sceneId); prodOrderProcess.setSceneId(sceneId);
prodOrderProcess.setOrderId(prodOrderMain.getOrderId()); prodOrderProcess.setOrderId(prodOrderMain.getOrderId());
...@@ -1005,7 +1014,7 @@ public class LanuchServiceImpl implements LanuchService { ...@@ -1005,7 +1014,7 @@ public class LanuchServiceImpl implements LanuchService {
prodEquipmentService.saveBatch(prodEquipments); prodEquipmentService.saveBatch(prodEquipments);
} }
return prodEquipments; return prodEquipments;
} }
/** /**
......
package com.aps.service.impl; package com.aps.service.impl;
import com.aps.entity.ProdSceneConfig; import com.aps.entity.*;
import com.aps.mapper.ProdSceneConfigMapper; import com.aps.mapper.ProdSceneConfigMapper;
import com.aps.service.ProdSceneConfigService; import com.aps.service.ProdSceneConfigService;
import com.aps.service.ProdLaunchOrderService;
import com.aps.service.ProdProcessExecService;
import com.aps.service.ProdEquipmentService;
import com.aps.service.ProdEquipSpecialCalService;
import com.aps.service.ProdOrderProcessService;
import com.aps.service.plan.SceneService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
/** /**
* <p> * <p>
...@@ -17,4 +25,62 @@ import org.springframework.stereotype.Service; ...@@ -17,4 +25,62 @@ import org.springframework.stereotype.Service;
@Service @Service
public class ProdSceneConfigServiceImpl extends ServiceImpl<ProdSceneConfigMapper, ProdSceneConfig> implements ProdSceneConfigService { public class ProdSceneConfigServiceImpl extends ServiceImpl<ProdSceneConfigMapper, ProdSceneConfig> implements ProdSceneConfigService {
} @Autowired
private ProdLaunchOrderService prodLaunchOrderService;
@Autowired
private ProdProcessExecService prodProcessExecService;
@Autowired
private ProdEquipmentService prodEquipmentService;
@Autowired
private ProdEquipSpecialCalService prodEquipSpecialCalService;
@Autowired
private ProdOrderProcessService prodOrderProcessService;
@Autowired
private SceneService sceneService;
/**
* 根据场景ID删除场景及其相关数据
* @param sceneId 场景ID
* @return 是否删除成功
*/
@Override
@Transactional(rollbackFor = Exception.class)
public boolean deleteSceneById(String sceneId) {
// 1. 删除场景相关表数据
// 删除工单数据
prodLaunchOrderService.lambdaUpdate()
.eq(ProdLaunchOrder::getSceneId, sceneId)
.remove();
// 删除工序执行数据
prodProcessExecService.lambdaUpdate()
.eq(ProdProcessExec::getSceneId, sceneId)
.remove();
// 删除设备数据
prodEquipmentService.lambdaUpdate()
.eq(ProdEquipment::getSceneId, sceneId)
.remove();
// 删除设备特殊日历数据
prodEquipSpecialCalService.lambdaUpdate()
.eq(ProdEquipSpecialCal::getSceneId, sceneId)
.remove();
// 删除工序关系数据
prodOrderProcessService.lambdaUpdate()
.eq(ProdOrderProcess::getSceneId, sceneId)
.remove();
// 删除场景对应的染色体文件
sceneService.deleteChromosomeFile(sceneId);
// 2. 删除场景配置本身
return this.removeById(sceneId);
}
}
\ No newline at end of file
...@@ -42,11 +42,20 @@ ...@@ -42,11 +42,20 @@
<result column="SETTLE" property="settle" /> <result column="SETTLE" property="settle" />
<result column="REMARK" property="remark" /> <result column="REMARK" property="remark" />
<result column="ZONEID" property="zoneid" /> <result column="ZONEID" property="zoneid" />
<result column="UNITID" property="unitid" />
<result column="BEGINTIME" property="begintime" />
<result column="ROUTINGID" property="routingid" />
<result column="ROUTINGNAME" property="routingname" />
<result column="STATUS" property="status" />
<result column="ROUTINGSTATUS" property="routingstatus" />
<result column="ROUTINGCODE" property="routingcode" />
<result column="ENDTIME" property="endtime" />
<result column="SCHEDULESTATUS" property="schedulestatus" />
</resultMap> </resultMap>
<!-- 通用查询结果列 --> <!-- 通用查询结果列 -->
<sql id="Base_Column_List"> <sql id="Base_Column_List">
ID, CREATIONTIME, CREATORUSERID, LASTMODIFICATIONTIME, LASTMODIFIERUSERID, ISDELETED, DELETIONTIME, DELETERUSERID, EXP1, EXP2, EXP3, EXP4, EXP5, EXP6, ZONE, CUSTOMERID, CUSTOMER, CODE, MMID, MMCODE, MMNAME, UNIT, QUANTITY, MEETQUANTITY, MEETRATE, PRICE, DELIVERYTIME, STOCKID, STOCK, PRIORITRY, SERIES, ISINSERT, ISLOCK, PART, DELAY, SETTLE, REMARK, ZONEID ID, CREATIONTIME, CREATORUSERID, LASTMODIFICATIONTIME, LASTMODIFIERUSERID, ISDELETED, DELETIONTIME, DELETERUSERID, EXP1, EXP2, EXP3, EXP4, EXP5, EXP6, ZONE, CUSTOMERID, CUSTOMER, CODE, MMID, MMCODE, MMNAME, UNIT, QUANTITY, MEETQUANTITY, MEETRATE, PRICE, DELIVERYTIME, STOCKID, STOCK, PRIORITRY, SERIES, ISINSERT, ISLOCK, PART, DELAY, SETTLE, REMARK, ZONEID, UNITID, BEGINTIME, ROUTINGID, ROUTINGNAME, STATUS, ROUTINGSTATUS, ROUTINGCODE, ENDTIME, SCHEDULESTATUS
</sql> </sql>
</mapper> </mapper>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment