lxzn-boot-base-core/src/main/java/org/jeecg/config/Swagger2Config.java
@@ -178,6 +178,24 @@ .groupName("eam"); } @Bean(value = "defaultApiBoard") public Docket activitiApiBoard() { return new Docket(DocumentationType.SWAGGER_2) .apiInfo(apiInfo()) .select() //æ¤å è·¯å¾ä¸çç±»ï¼æçææ¥å£ææ¡£ .apis(RequestHandlerSelectors.basePackage("org.jeecg.modules.board")) //å äºApiOperation注解çç±»ï¼æçææ¥å£ææ¡£ .apis(RequestHandlerSelectors.withClassAnnotation(RestController.class)) .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class)) .paths(PathSelectors.any()) .build() .securitySchemes(Collections.singletonList(securityScheme())) .securityContexts(securityContexts()) .globalOperationParameters(setHeaderToken()) .groupName("æ°ååªççæ¿"); } /*** * oauth2é ç½® * éè¦å¢å swaggerææåè°å°å lxzn-module-dnc/pom.xml
@@ -58,6 +58,12 @@ <artifactId>fastutil</artifactId> <version>8.5.6</version> </dependency> <dependency> <groupId>org.jeecgframework.boot</groupId> <artifactId>lxzn-module-tms</artifactId> <version>3.4.3</version> <scope>compile</scope> </dependency> </dependencies> </project> lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/controller/CutterController.java
@@ -110,4 +110,17 @@ return service.extractAndSaveFromContent(docId,attributionId,attributionType); } /** * åéåå ·ç³»ç» * @param docId ææ¡£Id * @return */ @AutoLog(value = "åå ·ä¿¡æ¯-åéåå ·ç³»ç»") @ApiOperation(value = "åå ·ä¿¡æ¯-åéåå ·ç³»ç»", notes = "åå ·ä¿¡æ¯-åéåå ·ç³»ç»") @GetMapping("/sendCutterInfo/{docId}/{attributionType}/{attributionId}") public Result<?> sendCutterInfo(@PathVariable("docId") String docId ,@PathVariable("attributionType") Integer attributionType ,@PathVariable("attributionId") String attributionId) { return service.sendToCutterSystem(docId,attributionId,attributionType); } } lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/ICutterService.java
@@ -40,5 +40,9 @@ */ Result<?> extractAndSaveFromContent(String docId,String attributionId,Integer attributionType); /** * åéåå ·å表å°åå ·ç³»ç» * @param docId */ Result<?> sendToCutterSystem(String docId,String attributionId,Integer attributionType); } lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/CutterServiceImpl.java
@@ -10,15 +10,19 @@ import org.jeecg.modules.dnc.entity.Cutter; import org.jeecg.modules.dnc.entity.DocFile; import org.jeecg.modules.dnc.entity.DocInfo; import org.jeecg.modules.dnc.entity.GuideCardBatch; import org.jeecg.modules.dnc.exception.ExceptionCast; import org.jeecg.modules.dnc.mapper.CutterMapper; import org.jeecg.modules.dnc.response.CommonCode; import org.jeecg.modules.dnc.service.ICutterService; import org.jeecg.modules.dnc.service.IDocFileService; import org.jeecg.modules.dnc.service.IDocInfoService; import org.jeecg.modules.dnc.service.IGuideCardBatchService; import org.jeecg.modules.dnc.utils.ValidateUtil; import org.jeecg.modules.dnc.utils.file.FileUtilS; import org.jeecg.modules.system.service.ISysDictService; import org.jeecg.modules.tms.entity.PreparationOrderDetail; import org.jeecg.modules.tms.entity.dto.PreparationOrderAndDetailDto; import org.jeecg.modules.tms.service.IPreparationOrderService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -40,8 +44,10 @@ private IDocFileService docFileService; @Autowired private ISysDictService sysDictService; private IGuideCardBatchService guideCardBatchService; @Autowired private IPreparationOrderService preparationOrderService; /** * æ°å¢åå ·ä¿¡æ¯ * @param cutter @@ -194,13 +200,54 @@ return Result.error("æªåç°åå ·çåæ°ä¿¡æ¯æ³¨éï¼æ æ³æååå ·ä¿¡æ¯"); } this.saveBatch(newCutterList); //TODOåéåå ·ç®¡çæ°æ® return Result.OK("æååå ·ä¿¡æ¯æå"); }else { return Result.error("æªåç°åå ·çåæ°ä¿¡æ¯æ³¨éï¼æ æ³æååå ·ä¿¡æ¯"); } } @Override public Result<?> sendToCutterSystem(String docId,String attributionId,Integer attributionType){ List<Cutter> cutterList = this.list(new QueryWrapper<Cutter>() .eq("doc_id", docId) .eq(StrUtil.isNotEmpty(attributionId),"attribution_id",attributionId) .eq("attribution_type",attributionType)); if (cutterList == null || cutterList.isEmpty()) { return Result.error("æªåç°åå ·ä¿¡æ¯ï¼æ æ³åéå°åå ·ç³»ç»"); } if (cutterList.stream().anyMatch(item -> item.getCutterCode() == null)) { return Result.error("æªåç°åå ·ç¼å·ä¿¡æ¯ï¼æ æ³åéå°åå ·ç³»ç»"); } //è·åææ°æ°æ§ç¨åºå 工确认表 List<GuideCardBatch> guideCardBatchList = guideCardBatchService.list(new QueryWrapper<GuideCardBatch>() .eq("doc_id", docId) .isNotNull("serial_number") .orderByDesc("SUBSTRING(serial_number, LEN(serial_number)-3, 4)")); if (guideCardBatchList == null || guideCardBatchList.isEmpty()) { return Result.error("æªåç°ç¨åºå 工确认表信æ¯ï¼æ æ³åéå°åå ·ç³»ç»"); } GuideCardBatch guideCardBatch = guideCardBatchList.get(0); PreparationOrderAndDetailDto dto = new PreparationOrderAndDetailDto(); dto.setPartDrawingNo(guideCardBatch.getPartsCode()); dto.setPartName(guideCardBatch.getPartsName()); dto.setPartMaterial(guideCardBatch.getMaterielDesp()); dto.setProductionProcessesNo(guideCardBatch.getProcessWorkCode()); dto.setBatchCode(guideCardBatch.getProcessingBatch()); dto.setMachiningCount(guideCardBatch.getProcessingQuantity()); dto.setEquipmentCode(guideCardBatch.getProcessingEquipment()); dto.setNcName(guideCardBatch.getDocName()); List<PreparationOrderDetail> detailList = new ArrayList<>(); cutterList.forEach(item -> { PreparationOrderDetail detail = new PreparationOrderDetail(); detail.setToolCode(item.getCutterCode()); detail.setToolId(item.getToolsId()); detailList.add(detail); }); dto.setPreparationOrderDetailList(detailList); preparationOrderService.addPreparationOrderFromDnc(dto); return Result.OK("åéå°åå ·ç³»ç»æå"); } public List<Cutter> extractToolAfterM6(DocInfo docInfo, List<String> ncLines) { List<Cutter> cutterList = new ArrayList<>(); String currentToolCode = null; // ç¨äºè¿½è¸ªå½åæ¢åæä»¤çåå ·å· lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/entity/MdcEquipment.java
@@ -164,6 +164,12 @@ @ApiModelProperty(value = "æ¯å¦MDC设å¤") private String deviceTypeMdc; /** * 设å¤å¾ç */ @ApiModelProperty(value = "设å¤å¾ç") private String equipmentImage; /**é¨é¨åç§°*/ @Excel(name = "é¨é¨åç§°", width = 15) private transient String orgCodeTxt; lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentMapper.xml
@@ -109,16 +109,31 @@ t1.equipment_id, t2.CollectTime, t1.equipment_name, t2.Oporation, CASE WHEN repair.count > 0 THEN '5' ELSE t2.Oporation END AS Oporation, t1.id, t1.equipment_status, t1.equipment_type equipmentType, t3.equipment_type_pictures t1.equipment_image equipmentTypePictures FROM mdc_equipment t1 LEFT JOIN Equipment t2 ON t1.equipment_id = t2.EquipmentID LEFT JOIN mdc_equipment_type t3 ON t1.equipment_type = t3.equipment_type_name WHERE equipment_id IN LEFT JOIN ( SELECT e1.equipment_code, COUNT(1) COUNT FROM eam_report_repair r1 INNER JOIN eam_equipment e1 ON e1.id = r1.equipment_id WHERE r1.report_status NOT IN ('COMPLETE', 'ABOLISH') GROUP BY e1.equipment_code) repair ON repair.equipment_code = t1.equipment_id WHERE t1.equipment_id IN <foreach collection="equipmentIds" index="index" item="id" open="(" separator="," close=")"> #{id} </foreach> lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentServiceImpl.java
@@ -430,6 +430,9 @@ case 22: mdcEquipmentMonitor.setOporationDict("æ¥è¦"); break; case 5: mdcEquipmentMonitor.setOporationDict("æ é"); break; default: mdcEquipmentMonitor.setOporationDict("å ³æº"); break; lxzn-module-mdc/src/main/java/org/jeecg/modules/board/controller/DtBoardController.java
@@ -92,5 +92,12 @@ return Result.OK(result); } @ApiOperation(value = "æ°ååªççæ¿-设å¤å®ç¯ä¿¡æ¯", notes = "æ°ååªççæ¿-设å¤å®ç¯ä¿¡æ¯") @GetMapping("/equAndonList") public Result<?> equAndonList(@ApiParam(value = "productionId", required = true) String productionId) { List<EquAndon> result = dtBoardService.equAndonList(productionId); return Result.OK(result); } } lxzn-module-mdc/src/main/java/org/jeecg/modules/board/service/IDtBoardService.java
@@ -29,4 +29,7 @@ List<EquAlarm> equAlarmList(String productionId); List<EquRepair> equRepairList(String productionId); List<EquAndon> equAndonList(String productionId); } lxzn-module-mdc/src/main/java/org/jeecg/modules/board/service/impl/DtBoardServiceImpl.java
@@ -16,6 +16,7 @@ import org.jeecg.modules.system.entity.MdcProduction; import org.jeecg.modules.system.service.IMdcProductionService; import org.jeecg.modules.system.service.ISysDictService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.annotation.Resource; @@ -70,6 +71,9 @@ @Resource private DtBoardMapper dtBoardMapper; @Resource private IAndonOrderService andonOrderService; /** * 车é´ä¿¡æ¯ @@ -326,7 +330,7 @@ if (equipmentIdList == null || equipmentIdList.isEmpty()) { return null; } List<EquipmentAlarm> equipmentAlarmList = equipmentAlarmService.list(new LambdaQueryWrapper<EquipmentAlarm>().in(EquipmentAlarm::getEquipmentid, equipmentIdList).orderByDesc(EquipmentAlarm::getCollecttime).isNotNull(EquipmentAlarm::getAlarmNo).last("TOP 15")); List<EquipmentAlarm> equipmentAlarmList = equipmentAlarmService.equAlarmList(equipmentIdList); if (equipmentAlarmList == null || equipmentAlarmList.isEmpty()) { return null; } @@ -346,8 +350,6 @@ /** * è®¾å¤æ é * @param productionId * @return */ @Override public List<EquRepair> equRepairList(String productionId) { @@ -365,4 +367,21 @@ return result; } /** * 设å¤å®ç¯é®é¢ */ @Override public List<EquAndon> equAndonList(String productionId) { List<String> proIds = mdcProductionService.findChildByProId(productionId); if (proIds == null || proIds.isEmpty()) { return null; } List<String> equipmentIdList = mdcEquipmentService.getEquIdsByProIds(proIds); if (equipmentIdList == null || equipmentIdList.isEmpty()) { return null; } List<EquAndon> result = andonOrderService.equAndonList(equipmentIdList); return result; } } lxzn-module-mdc/src/main/java/org/jeecg/modules/board/vo/EquAndon.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,20 @@ package org.jeecg.modules.board.vo; import lombok.Data; /** * @Author: Lius * @CreateTime: 2025-06-12 * @Description: å®ç¯ä¿¡æ¯ */ @Data public class EquAndon { /** * 设å¤ç¼å· */ private String equipmentId; /** * å®ç¯é®é¢ */ private String andonInfo; } lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/AndonOrderMapper.java
@@ -1,7 +1,10 @@ package org.jeecg.modules.mdc.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; import org.jeecg.modules.mdc.entity.AndonOrder; import java.util.List; /** * @Description: andon_order @@ -11,4 +14,5 @@ */ public interface AndonOrderMapper extends BaseMapper<AndonOrder> { List<AndonOrder> equAndonList(@Param("equipmentIdList") List<String> equipmentIdList); } lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/EquipmentAlarmMapper.java
@@ -1,11 +1,15 @@ package org.jeecg.modules.mdc.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; import org.jeecg.modules.mdc.entity.EquipmentAlarm; import java.util.List; /** * @author: LiuS * @create: 2023-04-12 16:39 */ public interface EquipmentAlarmMapper extends BaseMapper<EquipmentAlarm> { List<EquipmentAlarm> equAlarmList(@Param("equipmentIdList") List<String> equipmentIdList); } lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/AndonOrderMapper.xml
@@ -2,4 +2,18 @@ <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="org.jeecg.modules.mdc.mapper.AndonOrderMapper"> <select id="equAndonList" resultType="org.jeecg.modules.mdc.entity.AndonOrder"> SELECT * FROM andon_order WHERE CONVERT ( DATE, create_time ) = CONVERT ( DATE, GETDATE( ) ) AND equipment_id IN <foreach collection="equipmentIdList" index="index" item="id" open="(" separator="," close=")"> #{id} </foreach> ORDER BY create_time </select> </mapper> lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/EquipmentAlarmMapper.xml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,16 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="org.jeecg.modules.mdc.mapper.EquipmentAlarmMapper"> <select id="equAlarmList" resultType="org.jeecg.modules.mdc.entity.EquipmentAlarm"> SELECT TOP 15 * FROM EquipmentAlarm WHERE EquipmentID IN <foreach collection="equipmentIdList" index="index" item="id" open="(" separator="," close=")"> #{id} </foreach> AND alarmNo != '' ORDER BY collecttime DESC </select> </mapper> lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcDowntimeMapper.xml
@@ -44,7 +44,7 @@ <select id="equDowntimeStatistics" resultType="org.jeecg.modules.board.vo.EquDowntimeInfo"> SELECT t2.downtime_description AS shutdown_info, SUM ( DATEDIFF( SECOND, t1.start_date, t1.end_date ) ) / 3600.0 AS duration_hours SUM ( DATEDIFF( SECOND, t1.start_date, t1.end_date ) ) / 3600.0 AS duration FROM mdc_downtime t1 LEFT JOIN mdc_downtime_reason t2 ON t1.reason_id = t2.id @@ -57,7 +57,5 @@ </foreach> GROUP BY t2.downtime_description ORDER BY duration_hours DESC </select> </mapper> lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcWorkshopInfoMapper.xml
@@ -9,8 +9,12 @@ a.EquipmentID equipmentId, me.equipment_name equipmentName, me.equipment_type equipmentType, met.equipment_type_pictures equipmentImage, a.Oporation equipmentStatus, me.equipment_image equipmentImage, CASE WHEN repair.count > 0 THEN '5' ELSE a.Oporation END AS equipmentStatus, mew.coordinate_left coordinateLeft, mew.coordinate_top coordinateTop, mew.vw vw, @@ -24,6 +28,17 @@ INNER JOIN mdc_equipment_type met ON me.equipment_type = met.equipment_type_name AND a.CollectTime= b.maxgdtime AND mew.workshop_id = #{ workshopId } LEFT JOIN ( SELECT e1.equipment_code, COUNT(1) COUNT FROM eam_report_repair r1 INNER JOIN eam_equipment e1 ON e1.id = r1.equipment_id WHERE r1.report_status NOT IN ('COMPLETE', 'ABOLISH') GROUP BY e1.equipment_code) repair ON repair.equipment_code = me.equipment_id </select> <select id="listByUser" resultType="org.jeecg.modules.mdc.entity.MdcWorkshopInfo"> lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IAndonOrderService.java
@@ -1,7 +1,10 @@ package org.jeecg.modules.mdc.service; import com.baomidou.mybatisplus.extension.service.IService; import org.jeecg.modules.board.vo.EquAndon; import org.jeecg.modules.mdc.entity.AndonOrder; import java.util.List; /** * @Description: andon_order @@ -12,4 +15,6 @@ public interface IAndonOrderService extends IService<AndonOrder> { void procedureCall(AndonOrder andonOrder); List<EquAndon> equAndonList(List<String> equipmentIdList); } lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IEquipmentAlarmService.java
@@ -12,4 +12,6 @@ */ public interface IEquipmentAlarmService extends IService<EquipmentAlarm> { List<EquipmentAlarm> findEquipmentAlarmByDate(String equipmentId, Date startTime, Date endTime); List<EquipmentAlarm> equAlarmList(List<String> equipmentIdList); } lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/AndonOrderServiceImpl.java
@@ -2,14 +2,19 @@ import cn.hutool.core.date.DatePattern; import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.parser.Feature; import com.baomidou.mybatisplus.core.toolkit.StringPool; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.commons.compress.utils.Lists; import org.apache.commons.lang3.StringUtils; import org.apache.shiro.SecurityUtils; import org.jeecg.common.constant.WebsocketConst; import org.jeecg.common.exception.JeecgBootException; import org.jeecg.common.system.vo.LoginUser; import org.jeecg.common.util.TranslateDictTextUtils; import org.jeecg.modules.board.vo.EquAndon; import org.jeecg.modules.mdc.dto.MdcEquProDto; import org.jeecg.modules.mdc.entity.AndonOrder; import org.jeecg.modules.mdc.mapper.AndonOrderMapper; @@ -18,7 +23,9 @@ import org.jeecg.modules.mdc.util.DateUtils; import org.jeecg.modules.mdc.vo.AndonOrderWebSocketVo; import org.jeecg.modules.message.websocket.WebSocket; import org.jeecg.modules.system.service.ISysDictService; import org.jeecg.modules.system.service.ISysUserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.annotation.Resource; @@ -40,6 +47,9 @@ private WebSocket webSocket; @Resource private ISysUserService userService; @Resource private ISysDictService sysDictService; @Override public void procedureCall(AndonOrder andonOrder) { if (StringUtils.isBlank(andonOrder.getEquipmentId())) { @@ -76,6 +86,8 @@ andonOrderWebSocketVo.setCallReason(order.getCallReason()); andonOrderWebSocketVo.setAndonType("ç¨åºå¼å«"); andonOrderWebSocketVo.setPersonResponsible(user.getRealname()); andonOrderWebSocketVo.setRepairTime(StringPool.EMPTY); andonOrderWebSocketVo.setFaultInfo(StringPool.EMPTY); andonOrderWebSocketVo.setPlantName(equipmentIdToProductionIdMap != null && equipmentIdToProductionIdMap.containsKey(order.getEquipmentId()) ? equipmentIdToProductionIdMap.get(order.getEquipmentId()).getProductionName() : null); andonOrderWebSocketVoList.add(andonOrderWebSocketVo); } @@ -87,4 +99,27 @@ webSocket.sendMessage(jsonObject.toJSONString()); } } /** * å®ç¯é®é¢å表 */ @Override public List<EquAndon> equAndonList(List<String> equipmentIdList) { List<EquAndon> result = new ArrayList<>(); List<AndonOrder> andonOrderList = this.baseMapper.equAndonList(equipmentIdList); if (andonOrderList != null && !andonOrderList.isEmpty()) { andonOrderList.forEach(andonOrder -> { EquAndon equAndon = new EquAndon(); equAndon.setEquipmentId(andonOrder.getEquipmentId()); StringBuilder infoBuilder = new StringBuilder(); infoBuilder.append("å®ç¯ç±»å: ").append(sysDictService.queryDictTextByKey("andon_type",andonOrder.getAndonType())).append("\n"); infoBuilder.append("å®ç¯äºº: ").append(sysDictService.queryTableDictTextByKey("sys_user", "realname", "id", andonOrder.getOperator())).append("\n"); infoBuilder.append("å®ç¯æ¶é´: ").append(DateUtils.format(andonOrder.getOperateTime(), DateUtils.STR_DATE_TIME_SMALL)).append("\n"); infoBuilder.append("å®ç¯ç¶æ: ").append(sysDictService.queryDictTextByKey("order_status",andonOrder.getOrderStatus())).append("\n"); equAndon.setAndonInfo(infoBuilder.toString()); result.add(equAndon); }); } return result; } } lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/EquipmentAlarmServiceImpl.java
@@ -7,6 +7,7 @@ import org.jeecg.modules.mdc.service.IEquipmentAlarmService; import org.springframework.stereotype.Service; import java.util.Collections; import java.util.Date; import java.util.List; @@ -22,4 +23,9 @@ .ge(EquipmentAlarm::getCollecttime, startTime).le(EquipmentAlarm::getCollecttime, endTime) .eq(EquipmentAlarm::getEquipmentid, equipmentId).orderByDesc(EquipmentAlarm::getCollecttime)); } @Override public List<EquipmentAlarm> equAlarmList(List<String> equipmentIdList) { return this.baseMapper.equAlarmList(equipmentIdList); } } lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/PreparationOrderController.java
@@ -94,6 +94,15 @@ return Result.OK("æ·»å æåï¼"); } @AutoLog(value = "åå ·åå¤å-ä»DNCç³»ç»åå ¥åå ·åå¤ååæç»") @ApiOperation(value="åå ·åå¤å-ä»DNCç³»ç»åå ¥åå ·åå¤ååæç»", notes="åå ·åå¤å-ä»DNCç³»ç»åå ¥åå ·åå¤ååæç»") //@RequiresPermissions("org.jeecg.modules:tms_preparation_order:add") @PostMapping(value = "/addPreparationOrderFromDnc") public Result<String> addPreparationOrderFromDnc(@RequestBody PreparationOrderAndDetailDto preparationOrderAndDetailDto) { preparationOrderService.addPreparationOrderFromDnc(preparationOrderAndDetailDto); return Result.OK("æ·»å æåï¼"); } /** * ç¼è¾ * @param preparationOrder lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/PreparationOrderDetail.java
@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; import com.fasterxml.jackson.annotation.JsonFormat; import lombok.experimental.Accessors; import org.jeecg.common.aspect.annotation.Dict; import org.springframework.format.annotation.DateTimeFormat; import org.jeecgframework.poi.excel.annotation.Excel; @@ -21,6 +22,7 @@ * @Version: V1.0 */ @Data @Accessors(chain = true) @TableName("tms_preparation_order_detail") @ApiModel(value="tms_preparation_order_detail对象", description="åå ·åå¤åæç»") public class PreparationOrderDetail implements Serializable { lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IPreparationOrderService.java
@@ -40,4 +40,6 @@ List<String> convertToOutboundOrder(List<String> preparationOrderIds); IPage<PreparationOrder> queryPageList(Page<PreparationOrder> page, Map<String, String[]> parameterMap); void addPreparationOrderFromDnc(PreparationOrderAndDetailDto preparationOrderAndDetailDto); } lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/PreparationOrderServiceImpl.java
@@ -220,6 +220,22 @@ return this.baseMapper.queryPageList(page, queryWrapper); } @Override @Transactional(rollbackFor = Exception.class) public void addPreparationOrderFromDnc(PreparationOrderAndDetailDto preparationOrderAndDetailDto) { PreparationOrder preparationOrder = preparationOrderConvert.convert(preparationOrderAndDetailDto); preparationOrder .setId(null) .setPreparationOrderNum(businessCodeRuleService.generateBusinessCodeSeq("ToolPreparationOrder")) .setOrderStatus(PreparationOrderStatus.PENDING_AUDIT.getValue()); save(preparationOrder); List<PreparationOrderDetail> preparationOrderDetailList = preparationOrderAndDetailDto.getPreparationOrderDetailList(); preparationOrderDetailList.forEach(item -> { item.setId(null).setPreparationOrderId(preparationOrder.getId()); }); preparationOrderDetailService.saveBatch(preparationOrderDetailList); } private LoginUser getCurrentUser() { // è·åå½å认è¯çç»å½ç¨æ·ä¿¡æ¯ Subject currentUser = SecurityUtils.getSubject();