| src/main/java/com/ruoyi/production/controller/ProductWorkOrderController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/ruoyi/production/dto/ProductWorkOrderDto.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/ruoyi/production/mapper/ProductWorkOrderMapper.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/ruoyi/production/pojo/ProductWorkOrder.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/ruoyi/production/service/ProductWorkOrderService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/ruoyi/production/service/impl/ProductWorkOrderServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/resources/mapper/production/ProductWorkOrderMapper.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/ruoyi/production/controller/ProductWorkOrderController.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,30 @@ package com.ruoyi.production.controller; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.framework.web.domain.R; import com.ruoyi.production.dto.ProductWorkOrderDto; import com.ruoyi.production.service.ProductWorkOrderService; import io.swagger.annotations.ApiOperation; import lombok.AllArgsConstructor; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController @AllArgsConstructor @RequestMapping("/productWorkOrder") public class ProductWorkOrderController { private ProductWorkOrderService productWorkOrderservice; /** * 产åå·¥åå®ä½ç±»å页æ¥è¯¢ */ @ApiOperation("产åå·¥åå®ä½ç±»å页æ¥è¯¢") @GetMapping("/page") public R page(Page<ProductWorkOrderDto> page, ProductWorkOrderDto productWorkOrder) { return R.ok(productWorkOrderservice.listPage(page, productWorkOrder)); } } src/main/java/com/ruoyi/production/dto/ProductWorkOrderDto.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,29 @@ package com.ruoyi.production.dto; import com.ruoyi.production.pojo.ProductWorkOrder; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; @EqualsAndHashCode(callSuper = true) @Data public class ProductWorkOrderDto extends ProductWorkOrder { //产ååç§° @ApiModelProperty(value = "产ååç§°") private String productName; //è§æ ¼ @ApiModelProperty(value = "è§æ ¼") private String model; //å·¥åº @ApiModelProperty(value = "å·¥åº") private String processName; //åä½ @ApiModelProperty(value = "åä½") private String unit; } src/main/java/com/ruoyi/production/mapper/ProductWorkOrderMapper.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,15 @@ package com.ruoyi.production.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.production.dto.ProductWorkOrderDto; import com.ruoyi.production.pojo.ProductWorkOrder; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @Mapper public interface ProductWorkOrderMapper extends BaseMapper<ProductWorkOrder> { IPage<ProductWorkOrderDto> pageProductWorkOrder(Page<ProductWorkOrderDto> page, @Param("c") ProductWorkOrderDto productWorkOrder); } src/main/java/com/ruoyi/production/pojo/ProductWorkOrder.java
@@ -7,12 +7,19 @@ import java.io.Serializable; import java.time.LocalDateTime; /** * 产åå·¥åå®ä½ç±» * å¯¹åºæ°æ®åºè¡¨ï¼product_work_order */ @Data @TableName("product_work_order") public class ProductWorkOrder implements Serializable { private static final long serialVersionUID = 1L; /** * 主é®id */ @TableId(value = "id", type = IdType.AUTO) private Long id; @@ -23,16 +30,30 @@ private Long productProcessRouteItemId; /** * å建æ¶é´ */ @ApiModelProperty(value = "å建æ¶é´") @TableField(fill = FieldFill.INSERT) private LocalDateTime createTime; /** * ä¿®æ¹æ¶é´ */ @ApiModelProperty(value = "ä¿®æ¹æ¶é´") @TableField(fill = FieldFill.UPDATE) private LocalDateTime updateTime; /** * å·¥åç¼å· */ @ApiModelProperty(value = "ç产订åå·") @ApiModelProperty(value = "å·¥åç¼å·") private String workOrderNo; /** * çäº§ç¶æ 1 å¾ ç¡®è®¤ 2 å¾ ç产 3çäº§ä¸ 4å·²ç产 * ç¶æ 1 å¾ ç¡®è®¤ 2 å¾ ç产 3çäº§ä¸ 4å·²ç产 */ @ApiModelProperty(value = "çäº§ç¶æ 1 å¾ ç¡®è®¤ 2 å¾ ç产 3çäº§ä¸ 4å·²ç产") private String status; @ApiModelProperty(value = "ç¶æ 1 å¾ ç¡®è®¤ 2 å¾ ç产 3çäº§ä¸ 4å·²ç产") private Integer status; /** * ç§æ·id @@ -41,14 +62,27 @@ @TableField(fill = FieldFill.INSERT) private Long tenantId; //å建æ¶é´ @ApiModelProperty(value = "å建æ¶é´") @TableField(fill = FieldFill.INSERT) private LocalDateTime createTime; /** * 计åå¼å§æ¶é´ */ @ApiModelProperty(value = "计åå¼å§æ¶é´") private LocalDateTime planStartTime; //ä¿®æ¹æ¶é´ @ApiModelProperty(value = "ä¿®æ¹æ¶é´") @TableField(fill = FieldFill.UPDATE) private LocalDateTime updateTime; /** * 计åç»ææ¶é´ */ @ApiModelProperty(value = "计åç»ææ¶é´") private LocalDateTime planEndTime; } /** * å®é å¼å§æ¶é´ */ @ApiModelProperty(value = "å®é å¼å§æ¶é´") private LocalDateTime actualStartTime; /** * å®é ç»ææ¶é´ */ @ApiModelProperty(value = "å®é ç»ææ¶é´") private LocalDateTime actualEndTime; } src/main/java/com/ruoyi/production/service/ProductWorkOrderService.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,13 @@ package com.ruoyi.production.service; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.production.dto.ProductWorkOrderDto; import com.ruoyi.production.pojo.ProductWorkOrder; public interface ProductWorkOrderService extends IService<ProductWorkOrder>{ IPage<ProductWorkOrderDto> listPage(Page<ProductWorkOrderDto> page, ProductWorkOrderDto productWorkOrder); } src/main/java/com/ruoyi/production/service/impl/ProductWorkOrderServiceImpl.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,27 @@ package com.ruoyi.production.service.impl; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.production.dto.ProductWorkOrderDto; import com.ruoyi.production.mapper.ProductWorkOrderMapper; import com.ruoyi.production.pojo.ProductWorkOrder; import com.ruoyi.production.service.ProductWorkOrderService; import lombok.AllArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @Service @AllArgsConstructor @Transactional(rollbackFor = Exception.class) public class ProductWorkOrderServiceImpl extends ServiceImpl<ProductWorkOrderMapper, ProductWorkOrder> implements ProductWorkOrderService { private ProductWorkOrderMapper productWorkOrdermapper; @Override public IPage<ProductWorkOrderDto> listPage(Page<ProductWorkOrderDto> page, ProductWorkOrderDto productWorkOrder) { return productWorkOrdermapper.pageProductWorkOrder(page, productWorkOrder); } } src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java
@@ -4,33 +4,30 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.production.mapper.ProcessRouteItemMapper; import com.ruoyi.production.mapper.ProcessRouteMapper; import com.ruoyi.production.mapper.ProductOrderMapper; import com.ruoyi.production.mapper.ProductProcessRouteItemMapper; import com.ruoyi.production.pojo.ProcessRoute; import com.ruoyi.production.pojo.ProcessRouteItem; import com.ruoyi.production.pojo.ProductOrder; import com.ruoyi.production.pojo.ProductProcessRouteItem; import com.ruoyi.production.mapper.*; import com.ruoyi.production.pojo.*; import com.ruoyi.purchase.mapper.PurchaseLedgerMapper; import com.ruoyi.purchase.pojo.PurchaseLedger; import com.ruoyi.sales.dto.InvoiceRegistrationProductDto; import com.ruoyi.sales.mapper.InvoiceRegistrationProductMapper; import com.ruoyi.sales.mapper.SalesLedgerMapper; import com.ruoyi.sales.mapper.SalesLedgerProductMapper; import com.ruoyi.sales.pojo.InvoiceRegistrationProduct; import com.ruoyi.sales.pojo.SalesLedger; import com.ruoyi.sales.pojo.SalesLedgerProduct; import com.ruoyi.sales.service.ISalesLedgerProductService; import lombok.AllArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import java.lang.reflect.Field; import java.math.BigDecimal; import java.util.*; import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.util.Arrays; import java.util.List; import java.util.Objects; import java.util.Set; import java.util.function.Function; import java.util.stream.Collectors; @@ -53,11 +50,14 @@ private ProductOrderMapper productOrderMapper; private ProcessRouteItemMapper processRouteItemMapper; private ProductProcessRouteItemMapper productProcessRouteItemMapper; @Autowired private InvoiceRegistrationProductMapper invoiceRegistrationProductMapper; @Autowired private ProcessRouteMapper processRouteMapper; private ProductWorkOrderMapper productWorkOrderMapper; @Override public SalesLedgerProduct selectSalesLedgerProductById(Long id) { @@ -104,10 +104,10 @@ // 1. å æ¥è¯¢è¦å é¤çå表记å½ï¼è·å对åºç salesLedgerId List<SalesLedgerProduct> deletedProducts = salesLedgerProductMapper.selectBatchIds(Arrays.asList(ids)); if (deletedProducts.isEmpty()) { return 0; // 没æå¯å é¤çæ°æ® return 0; } // å¯è½å±äºå¤ä¸ªä¸»è¡¨ï¼ä½é常ä¸ä¸ªæ¥å£åªå¤çä¸ä¸ªä¸»è¡¨ï¼ // å¯è½å±äºå¤ä¸ªä¸»è¡¨ Set<Long> mainIds = deletedProducts.stream() .map(SalesLedgerProduct::getSalesLedgerId) .filter(Objects::nonNull) @@ -116,12 +116,40 @@ // 2. æ§è¡å é¤æä½ int result = salesLedgerProductMapper.deleteBatchIds(Arrays.asList(ids)); //å é¤å¯¹åºçç产订å for (Long id : ids) { ProductOrder productOrder = productOrderMapper.selectOne(new LambdaQueryWrapper<ProductOrder>().eq(ProductOrder::getProductModelId, id)); if (productOrder != null) { productProcessRouteItemMapper.delete(new LambdaQueryWrapper<ProductProcessRouteItem>().eq(ProductProcessRouteItem::getRouteId, productOrder.getId())); productOrderMapper.delete(new LambdaQueryWrapper<ProductOrder>().eq(ProductOrder::getProductModelId, id)); //æ¹éæ¥è¯¢productOrder List<ProductOrder> productOrders = productOrderMapper.selectList( new LambdaQueryWrapper<ProductOrder>() .in(ProductOrder::getProductModelId, ids) ); if (!CollectionUtils.isEmpty(productOrders)) { List<Long> orderIds = productOrders.stream() .map(ProductOrder::getId) .collect(Collectors.toList()); // æ¹éæ¥è¯¢processRouteItems List<ProductProcessRouteItem> allRouteItems = productProcessRouteItemMapper.selectList( new LambdaQueryWrapper<ProductProcessRouteItem>() .in(ProductProcessRouteItem::getRouteId, orderIds) ); if (!CollectionUtils.isEmpty(allRouteItems)) { List<Long> routeItemIds = allRouteItems.stream() .map(ProductProcessRouteItem::getId) .collect(Collectors.toList()); // æ¹éå é¤workOrder productWorkOrderMapper.delete(new LambdaQueryWrapper<ProductWorkOrder>() .in(ProductWorkOrder::getProductProcessRouteItemId, routeItemIds)); } // æ¹éå é¤processRouteItem productProcessRouteItemMapper.delete(new LambdaQueryWrapper<ProductProcessRouteItem>() .in(ProductProcessRouteItem::getRouteId, orderIds)); // æ¹éå é¤productOrder productOrderMapper.delete(new LambdaQueryWrapper<ProductOrder>() .in(ProductOrder::getProductModelId, ids)); } // 3. 对æ¯ä¸ªä¸»è¡¨IDè¿è¡é颿´æ° @@ -161,12 +189,45 @@ ProcessRoute processRoute = processRouteMapper.selectOne(new QueryWrapper<ProcessRoute>().lambda().eq(ProcessRoute::getProductModelId, salesLedgerProduct.getProductModelId())); if (processRoute != null) { List<ProcessRouteItem> processRouteItems = processRouteItemMapper.selectList(new QueryWrapper<ProcessRouteItem>().lambda().eq(ProcessRouteItem::getRouteId, processRoute.getId())); // çæå½åæ¥æçåç¼ï¼å¹´ææ¥ String datePrefix = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd")); for (ProcessRouteItem processRouteItem : processRouteItems) { ProductProcessRouteItem productProcessRouteItem = new ProductProcessRouteItem(); productProcessRouteItem.setProductModelId(productOrder.getProductModelId()); productProcessRouteItem.setProductModelId(processRouteItem.getProductModelId()); productProcessRouteItem.setProcessId(processRouteItem.getProcessId()); productProcessRouteItem.setRouteId(productOrder.getId()); productProcessRouteItemMapper.insert(productProcessRouteItem); int insert = productProcessRouteItemMapper.insert(productProcessRouteItem); if (insert > 0) { // æ¥è¯¢ä»æ¥å·²åå¨çæå¤§å·¥åå· QueryWrapper<ProductWorkOrder> queryWrapper = new QueryWrapper<>(); queryWrapper.likeRight("work_order_no", datePrefix) .orderByDesc("work_order_no") .last("LIMIT 1"); ProductWorkOrder lastWorkOrder = productWorkOrderMapper.selectOne(queryWrapper); int sequenceNumber = 1; // é»è®¤åºå· if (lastWorkOrder != null && lastWorkOrder.getWorkOrderNo() != null) { String lastNo = lastWorkOrder.getWorkOrderNo().toString(); if (lastNo.startsWith(datePrefix)) { String seqStr = lastNo.substring(datePrefix.length()); try { sequenceNumber = Integer.parseInt(seqStr) + 1; } catch (NumberFormatException e) { sequenceNumber = 1; } } } // çæå®æ´çå·¥åå· String workOrderNoStr = String.format("%s%03d", datePrefix, sequenceNumber); ProductWorkOrder productWorkOrder = new ProductWorkOrder(); productWorkOrder.setProductProcessRouteItemId(productProcessRouteItem.getId()); productWorkOrder.setWorkOrderNo(workOrderNoStr); productWorkOrder.setStatus(1); productWorkOrderMapper.insert(productWorkOrder); } } productOrder.setRouteId(processRoute.getId()); productOrderMapper.updateById(productOrder); src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
@@ -9,7 +9,6 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.account.pojo.AccountExpense; import com.ruoyi.account.pojo.AccountIncome; import com.ruoyi.account.service.AccountIncomeService; import com.ruoyi.basic.mapper.CustomerMapper; @@ -99,6 +98,8 @@ private final ProcessRouteItemMapper processRouteItemMapper; private final ProductProcessRouteItemMapper productProcessRouteItemMapper; private final ProductWorkOrderMapper productWorkOrderMapper; @Autowired private SysDeptMapper sysDeptMapper; @@ -371,6 +372,42 @@ productWrapper.in(SalesLedgerProduct::getSalesLedgerId, idList); salesLedgerProductMapper.delete(productWrapper); //æ¹éæ¥è¯¢productOrder List<ProductOrder> productOrders = productOrderMapper.selectList( new LambdaQueryWrapper<ProductOrder>() .in(ProductOrder::getProductModelId, idList) ); if (!org.springframework.util.CollectionUtils.isEmpty(productOrders)) { List<Long> orderIds = productOrders.stream() .map(ProductOrder::getId) .collect(Collectors.toList()); // æ¹éæ¥è¯¢processRouteItems List<ProductProcessRouteItem> allRouteItems = productProcessRouteItemMapper.selectList( new LambdaQueryWrapper<ProductProcessRouteItem>() .in(ProductProcessRouteItem::getRouteId, orderIds) ); if (!org.springframework.util.CollectionUtils.isEmpty(allRouteItems)) { List<Long> routeItemIds = allRouteItems.stream() .map(ProductProcessRouteItem::getId) .collect(Collectors.toList()); // æ¹éå é¤workOrder productWorkOrderMapper.delete(new LambdaQueryWrapper<ProductWorkOrder>() .in(ProductWorkOrder::getProductProcessRouteItemId, routeItemIds)); } // æ¹éå é¤processRouteItem productProcessRouteItemMapper.delete(new LambdaQueryWrapper<ProductProcessRouteItem>() .in(ProductProcessRouteItem::getRouteId, orderIds)); // æ¹éå é¤productOrder productOrderMapper.delete(new LambdaQueryWrapper<ProductOrder>() .in(ProductOrder::getProductModelId, idList)); } LambdaQueryWrapper<InvoiceRegistrationProduct> wrapper = new LambdaQueryWrapper<>(); wrapper.in(InvoiceRegistrationProduct::getSalesLedgerId, idList); List<InvoiceRegistrationProduct> invoiceRegistrationProducts = invoiceRegistrationProductMapper.selectList(wrapper); @@ -596,12 +633,43 @@ ProcessRoute processRoute = processRouteMapper.selectOne(new QueryWrapper<ProcessRoute>().lambda().eq(ProcessRoute::getProductModelId, salesLedgerProduct.getProductModelId())); if (processRoute != null) { List<ProcessRouteItem> processRouteItems = processRouteItemMapper.selectList(new QueryWrapper<ProcessRouteItem>().lambda().eq(ProcessRouteItem::getRouteId, processRoute.getId())); // çæå½åæ¥æçåç¼ï¼å¹´ææ¥ String datePrefix = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd")); for (ProcessRouteItem processRouteItem : processRouteItems) { ProductProcessRouteItem productProcessRouteItem = new ProductProcessRouteItem(); productProcessRouteItem.setProductModelId(productOrder.getProductModelId()); productProcessRouteItem.setProductModelId(processRouteItem.getProductModelId()); productProcessRouteItem.setProcessId(processRouteItem.getProcessId()); productProcessRouteItem.setRouteId(productOrder.getId()); productProcessRouteItemMapper.insert(productProcessRouteItem); int insert = productProcessRouteItemMapper.insert(productProcessRouteItem); if (insert > 0) { // æ¥è¯¢ä»æ¥å·²åå¨çæå¤§å·¥åå· QueryWrapper<ProductWorkOrder> queryWrapper = new QueryWrapper<>(); queryWrapper.likeRight("work_order_no", datePrefix) .orderByDesc("work_order_no") .last("LIMIT 1"); ProductWorkOrder lastWorkOrder = productWorkOrderMapper.selectOne(queryWrapper); int sequenceNumber = 1; // é»è®¤åºå· if (lastWorkOrder != null && lastWorkOrder.getWorkOrderNo() != null) { String lastNo = lastWorkOrder.getWorkOrderNo().toString(); if (lastNo.startsWith(datePrefix)) { String seqStr = lastNo.substring(datePrefix.length()); try { sequenceNumber = Integer.parseInt(seqStr) + 1; } catch (NumberFormatException e) { sequenceNumber = 1; } } } // çæå®æ´çå·¥åå· String workOrderNoStr = String.format("%s%03d", datePrefix, sequenceNumber); ProductWorkOrder productWorkOrder = new ProductWorkOrder(); productWorkOrder.setProductProcessRouteItemId(productProcessRouteItem.getId()); productWorkOrder.setWorkOrderNo(workOrderNoStr); productWorkOrder.setStatus(1); productWorkOrderMapper.insert(productWorkOrder); } } productOrder.setRouteId(processRoute.getId()); productOrderMapper.updateById(productOrder); @@ -659,12 +727,12 @@ return datePart + String.format("%03d", nextSequence); } finally { // 3. éæ¾éï¼ä½¿ç¨Luaèæ¬ä¿è¯ååæ§ï¼é¿å 误å å ¶ä»çº¿ç¨çéï¼ // 3. éæ¾é String luaScript = "if redis.call('GET', KEYS[1]) == ARGV[1] then return redis.call('DEL', KEYS[1]) else return 0 end"; redisTemplate.execute( new DefaultRedisScript<>(luaScript, Long.class), Collections.singletonList(lockKey), lockValue // åªæææç¸åå¼ççº¿ç¨æè½å é¤é lockValue ); } } @@ -673,7 +741,7 @@ if (sequences.isEmpty()) { return 1; } // æåºåæ¥æ¾ç¬¬ä¸ä¸ªç¼ºå¤±çæ£æ´æ°ï¼ä¸åé»è¾ä¸è´ï¼ // æåºåæ¥æ¾ç¬¬ä¸ä¸ªç¼ºå¤±çæ£æ´æ° sequences.sort(Integer::compareTo); int next = 1; for (int seq : sequences) { @@ -703,14 +771,13 @@ .filter(Objects::nonNull) .reduce(BigDecimal.ZERO, BigDecimal::add); // æé ä¸»è¡¨æ´æ°å¯¹è±¡ï¼æ¯æä»»æä¸»è¡¨ç±»åï¼ // æé ä¸»è¡¨æ´æ°å¯¹è±¡ try { S entity = mainEntityClass.getDeclaredConstructor().newInstance(); Field idField = mainEntityClass.getDeclaredField("id"); idField.setAccessible(true); idField.set(entity, mainId); // 设置 contractAmount åæ®µï¼æ³¨æè¿éåè®¾åæ®µå为 "contractAmount" Field amountField = mainEntityClass.getDeclaredField("contractAmount"); amountField.setAccessible(true); amountField.set(entity, totalAmount); src/main/resources/mapper/production/ProductWorkOrderMapper.xml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,40 @@ <?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="com.ruoyi.production.mapper.ProductWorkOrderMapper"> <resultMap id="BaseResultMap" type="com.ruoyi.production.pojo.ProductWorkOrder"> <result column="id" property="id"/> <result column="product_process_route_item_id" property="productProcessRouteItemId"/> <result column="create_time" property="createTime"/> <result column="update_time" property="updateTime"/> <result column="work_order_no" property="workOrderNo"/> <result column="status" property="status"/> <result column="tenant_id" property="tenantId"/> <result column="actual_end_time" property="planStartTime"/> <result column="plan_end_time" property="planEndTime"/> <result column="actual_start_time" property="actualStartTime"/> <result column="actualEndTime" property="actualEndTime"/> </resultMap> <select id="pageProductWorkOrder" resultType="com.ruoyi.production.dto.ProductWorkOrderDto"> SELECT pwo.*, pp.NAME as processName, pm.model, pm.unit, p.product_name AS productName FROM `product_work_order` pwo LEFT JOIN product_process_route_item ppri ON ppri.id = pwo.product_process_route_item_id LEFT JOIN product_process pp ON pp.id = ppri.process_id LEFT JOIN product_model pm ON pm.id = ppri.product_model_id LEFT JOIN product p ON p.id = pm.product_id <where> <if test="c.workOrderNo != null and c.workOrderNo != ''"> pwo.work_order_no like concat('%',#{c.workOrderNo},'%') </if> </where> </select> </mapper>