启动工单修改,删除场景

parent 00077f3b
......@@ -2,7 +2,9 @@ package com.aps.controller;
import com.aps.common.util.R;
import com.aps.entity.Algorithm.Chromosome;
import com.aps.entity.ProdSceneConfig;
import com.aps.service.LanuchService;
import com.aps.service.ProdSceneConfigService;
import com.aps.service.plan.PlanResultService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
......@@ -21,6 +23,9 @@ public class LanuchController {
@Autowired
private PlanResultService planResultService;
@Autowired
private ProdSceneConfigService prodSceneConfigService;
/**
* 启动工单
*
......@@ -30,12 +35,12 @@ public class LanuchController {
*/
@PostMapping("/execute")
public R<String> lanuch(
@RequestParam String sceneName,
@RequestHeader(required = false) String username) {
@RequestParam String sceneName,
@RequestHeader(required = false) String username) {
if (username == null || username.isEmpty()) {
username = "system";
}
return lanuchService.lanuch(sceneName, username);
}
......@@ -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;
import lombok.Data;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
@Data
public class ApsOrder {
private String id;
private LocalDateTime creationtime;
private Long creatoruserid;
private LocalDateTime lastmodificationtime;
private Long lastmodifieruserid;
private Long isdeleted;
private LocalDateTime deletiontime;
private Long deleteruserid;
private String exp1;
private String exp2;
private BigDecimal exp3;
private BigDecimal exp4;
private LocalDateTime exp5;
private LocalDateTime exp6;
private String zone;
private Long customerid;
private String customer;
private String code;
private String mmid;
private String mmcode;
private String mmname;
private String unit;
private double quantity;
private double meetquantity;
private double meetrate;
private double price;
private LocalDateTime deliverytime;
private Long stockid;
private String stock;
private String prioritry;
private String series;
private Long isinsert;
private Long islock;
private Long part;
private Long delay;
private Long settle;
private String remark;
private Long zoneid;
private String id;
private LocalDateTime creationtime;
private Long creatoruserid;
private LocalDateTime lastmodificationtime;
private Long lastmodifieruserid;
private Long isdeleted;
private LocalDateTime deletiontime;
private Long deleteruserid;
private String exp1;
private String exp2;
private BigDecimal exp3;
private BigDecimal exp4;
private LocalDateTime exp5;
private LocalDateTime exp6;
private String zone;
private Long customerid;
private String customer;
private String code;
private String mmid;
private String mmcode;
private String mmname;
private String unit;
private double quantity;
private BigDecimal meetquantity;
private BigDecimal meetrate;
private BigDecimal price;
private LocalDateTime deliverytime;
private Long stockid;
private String stock;
private String prioritry;
private String series;
private Long isinsert;
private Long islock;
private Long part;
private Long delay;
private Long settle;
private String remark;
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;
* </p>
*
* @author MyBatis-Plus
* @since 2025-11-26
* @since 2025-12-10
*/
public interface ApsOrderMapper extends BaseMapper<ApsOrder> {
......
......@@ -9,7 +9,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
* </p>
*
* @author MyBatis-Plus
* @since 2025-11-26
* @since 2025-12-10
*/
public interface ApsOrderService extends IService<ApsOrder> {
......
......@@ -13,4 +13,10 @@ import com.baomidou.mybatisplus.extension.service.IService;
*/
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;
import com.aps.entity.ApsOrder;
import com.aps.entity.EquipCapacityDef;
import com.aps.mapper.ApsOrderMapper;
import com.aps.mapper.EquipCapacityDefMapper;
import com.aps.service.ApsOrderService;
import com.aps.service.EquipCapacityDefService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
* ApsOrderServiceImpl.java
* <p>
* 服务实现类
* </p>
*
* @author jdt
* @description 订单
* @since 2025-11-26
* @author MyBatis-Plus
* @since 2025-12-10
*/
@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 {
prodEquipSpecialCalService.copyFromEquipCapacityDef(sceneId);
// List<ApsOrder> apsOrders = apsOrderService.lambdaQuery()
// .eq(ApsOrder::getIsdeleted, 0)
// .like(ApsOrder::getCode, "佟礼测试数据")
// .list();
List<ApsOrder> apsOrders = apsOrderService.lambdaQuery()
.eq(ApsOrder::getIsdeleted, 0)
.like(ApsOrder::getCode, "佟礼测试数据")
.eq(ApsOrder::getSchedulestatus, 1)
.eq(ApsOrder::getCreatoruserid,"1025")
.list();
if (CollectionUtils.isEmpty(apsOrders)) {
return R.failed("工单列表不能为空");
......@@ -173,7 +181,7 @@ public class LanuchServiceImpl implements LanuchService {
copyProdOrderProcesses(oldScene.getSceneId(), newSceneId);
copyProdEquipments(oldScene.getSceneId(), newSceneId);
copyProdEquipSpecialCals(oldScene.getSceneId(), newSceneId);
// 复制染色体文件(排产结果)
copyChromosomeFile(oldScene.getSceneId(), newSceneId);
......@@ -203,7 +211,7 @@ public class LanuchServiceImpl implements LanuchService {
}
List<Order> prodLanuchList = chromosome.getOrders();
List<MesOrder> mesOrderList = new ArrayList<>();
for (Order prodLaunchOrder : prodLanuchList) {
MesOrder mesOrder = new MesOrder();
......@@ -219,10 +227,10 @@ public class LanuchServiceImpl implements LanuchService {
// mesOrder.setStatus(1L); // Default status
mesOrderList.add(mesOrder);
}
boolean saved = mesOrderService.saveBatch(mesOrderList);
if (saved) {
log.info("插入 {} 条数据到mes_order", mesOrderList.size());
} else {
......@@ -236,7 +244,7 @@ public class LanuchServiceImpl implements LanuchService {
// 遍历GAScheduleResult结果并转换为dispatch
List<Dispatch> dispatches = new ArrayList<>();
for (GAScheduleResult gaResult : chromosome.getResult()) {
......@@ -265,10 +273,10 @@ public class LanuchServiceImpl implements LanuchService {
// 添加到列表中
dispatches.add(dispatch);
}
// 批量保存到数据库
boolean savedDispatch = dispatchService.saveOrUpdateBatch(dispatches);
if (savedDispatch) {
return R.ok("计划下发成功,共处理 " + dispatches.size() + " 条记录");
} else {
......@@ -346,23 +354,24 @@ public class LanuchServiceImpl implements LanuchService {
launchOrder.setMaterialId(order.getMmid());
String mmid = order.getMmid();
// 通过mmid查找对应的工艺
if (mmid != null && !mmid.isEmpty()) {
LambdaQueryWrapper<RoutingHeader> routingWrapper = new LambdaQueryWrapper<>();
routingWrapper.eq(RoutingHeader::getMaterialId, mmid);
routingWrapper.eq(RoutingHeader::getIsDeleted, 0); // 添加判断 is_deleted=0
List<RoutingHeader> routingHeaders = routingHeaderService.list(routingWrapper);
RoutingHeader routingHeader = null;
if (!CollectionUtils.isEmpty(routingHeaders)) {
routingHeader = routingHeaders.get(0);
}
if (routingHeader != null) {
launchOrder.setRoutingId(routingHeader.getId());
launchOrder.setRoutingCode(defaultIfBlank(routingHeader.getCode(), ""));
}
}
// // 通过mmid查找对应的工艺
// if (mmid != null && !mmid.isEmpty()) {
// LambdaQueryWrapper<RoutingHeader> routingWrapper = new LambdaQueryWrapper<>();
// routingWrapper.eq(RoutingHeader::getMaterialId, mmid);
// routingWrapper.eq(RoutingHeader::getIsDeleted, 0); // 添加判断 is_deleted=0
// List<RoutingHeader> routingHeaders = routingHeaderService.list(routingWrapper);
// RoutingHeader routingHeader = null;
// if (!CollectionUtils.isEmpty(routingHeaders)) {
// routingHeader = routingHeaders.get(0);
// }
//
// if (routingHeader != null) {
// launchOrder.setRoutingId(routingHeader.getId());
// launchOrder.setRoutingCode(defaultIfBlank(routingHeader.getCode(), ""));
// }
// }
launchOrder.setRoutingId(order.getRoutingid());
launchOrder.setRoutingCode(order.getRoutingcode());
return launchOrder;
} catch (Exception e) {
log.error("转换订单[{}]失败", order.getId(), e);
......@@ -662,8 +671,8 @@ public class LanuchServiceImpl implements LanuchService {
*/
public void batchInsertProcessExec(ProdLaunchOrder prodOrderMain,
List<RoutingDetail> routingDetails,
String sceneId, List<RoutingDetailEquip> routingDetailEquip) {
List<RoutingDetail> routingDetails,
String sceneId, List<RoutingDetailEquip> routingDetailEquip) {
List<ProdProcessExec> processExecList = routingDetails.stream()
......@@ -700,8 +709,8 @@ public class LanuchServiceImpl implements LanuchService {
*/
public ProdProcessExec createProcessExec(ProdLaunchOrder prodOrderMain,
RoutingDetail detail,
String sceneId) {
RoutingDetail detail,
String sceneId) {
ProdProcessExec prodProcessExec = new ProdProcessExec();
prodProcessExec.setExecId(UUID.randomUUID().toString().replace("-", ""));
prodProcessExec.setOrderId(prodOrderMain.getOrderId());
......@@ -878,9 +887,9 @@ public class LanuchServiceImpl implements LanuchService {
*/
public ProdOrderProcess createProcessRelation(ProdLaunchOrder prodOrderMain,
RoutingDetailConnect connection,
String sceneId,
Map<Long, String> routingDetailIdToExecIdMap) {
RoutingDetailConnect connection,
String sceneId,
Map<Long, String> routingDetailIdToExecIdMap) {
ProdOrderProcess prodOrderProcess = new ProdOrderProcess();
prodOrderProcess.setSceneId(sceneId);
prodOrderProcess.setOrderId(prodOrderMain.getOrderId());
......@@ -1005,7 +1014,7 @@ public class LanuchServiceImpl implements LanuchService {
prodEquipmentService.saveBatch(prodEquipments);
}
return prodEquipments;
return prodEquipments;
}
/**
......
package com.aps.service.impl;
import com.aps.entity.ProdSceneConfig;
import com.aps.entity.*;
import com.aps.mapper.ProdSceneConfigMapper;
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 org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
/**
* <p>
......@@ -17,4 +25,62 @@ import org.springframework.stereotype.Service;
@Service
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 @@
<result column="SETTLE" property="settle" />
<result column="REMARK" property="remark" />
<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>
<!-- 通用查询结果列 -->
<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>
</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