zss
2 天以前 0a73b4d40662ea554bdf80b22966901da1abb424
生产工单流转卡
已修改9个文件
92 ■■■■■ 文件已修改
src/main/java/com/ruoyi/production/controller/ProductOrderController.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/production/controller/ProductWorkOrderController.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/production/dto/ProductWorkOrderDto.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/production/mapper/ProductWorkOrderMapper.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/production/service/ProductOrderService.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/production/service/ProductWorkOrderService.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/production/service/impl/ProductOrderServiceImpl.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/production/service/impl/ProductWorkOrderServiceImpl.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/production/ProductWorkOrderMapper.xml 26 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/production/controller/ProductOrderController.java
@@ -64,4 +64,14 @@
    }
    /**
     * 生产订单流转卡显示内容
     */
    @ApiOperation("生产订单流转卡显示内容")
    @GetMapping("/getProductOrderFlowCard")
    public R getProductOrderFlowCard(Long orderId) {
        return R.ok(productOrderService.getProductOrderFlowCard(orderId));
    }
}
src/main/java/com/ruoyi/production/controller/ProductWorkOrderController.java
@@ -43,4 +43,13 @@
        return R.ok(productWorkOrderservice.getById(id));
    }
    /**
     * 生产工单流转卡显示内容
     */
    @ApiOperation("生产工单流转卡显示内容")
    @GetMapping("/getProductWorkOrderFlowCard")
    public R getProductWorkOrderFlowCard(Long id) {
        return R.ok(productWorkOrderservice.getProductWorkOrderFlowCard(id));
    }
}
src/main/java/com/ruoyi/production/dto/ProductWorkOrderDto.java
@@ -2,11 +2,13 @@
import com.ruoyi.framework.aspectj.lang.annotation.Excel;
import com.ruoyi.production.pojo.ProductWorkOrder;
import com.ruoyi.production.pojo.ProductWorkOrderFile;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.math.BigDecimal;
import java.util.List;
@EqualsAndHashCode(callSuper = true)
@Data
@@ -35,4 +37,7 @@
    @ApiModelProperty(value = "完成进度")
    private BigDecimal completionStatus;
    @ApiModelProperty(value = "附件详情")
    private List<ProductWorkOrderFile> productWorkOrderFiles;
}
src/main/java/com/ruoyi/production/mapper/ProductWorkOrderMapper.java
@@ -17,4 +17,5 @@
    IPage<ProductWorkOrderDto> pageProductWorkOrder(Page<ProductWorkOrderDto> page, @Param("c") ProductWorkOrderDto productWorkOrder);
    ProductWorkOrderDto getProductWorkOrderFlowCard(@Param("id") Long id);
}
src/main/java/com/ruoyi/production/service/ProductOrderService.java
@@ -6,6 +6,7 @@
import com.ruoyi.production.dto.ProductBomDto;
import com.ruoyi.production.dto.ProductOrderDto;
import com.ruoyi.production.dto.ProductStructureDto;
import com.ruoyi.production.dto.ProductWorkOrderDto;
import com.ruoyi.production.pojo.ProcessRoute;
import com.ruoyi.production.pojo.ProductOrder;
@@ -21,4 +22,6 @@
    List<ProcessRoute> listProcessRoute(Long productModelId);
    List<ProductStructureDto> listProcessBom(Long orderId);
    List<ProductWorkOrderDto> getProductOrderFlowCard(Long orderId);
}
src/main/java/com/ruoyi/production/service/ProductWorkOrderService.java
@@ -12,4 +12,5 @@
    int updateProductWorkOrder(ProductWorkOrderDto productWorkOrderDto);
    ProductWorkOrderDto getProductWorkOrderFlowCard(Long id);
}
src/main/java/com/ruoyi/production/service/impl/ProductOrderServiceImpl.java
@@ -2,11 +2,13 @@
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
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.production.dto.ProductBomDto;
import com.ruoyi.production.dto.ProductOrderDto;
import com.ruoyi.production.dto.ProductStructureDto;
import com.ruoyi.production.dto.ProductWorkOrderDto;
import com.ruoyi.production.mapper.*;
import com.ruoyi.production.pojo.*;
import com.ruoyi.production.service.ProcessRouteService;
@@ -17,6 +19,7 @@
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.List;
import java.util.stream.Collectors;
@Service
public class ProductOrderServiceImpl extends ServiceImpl<ProductOrderMapper, ProductOrder> implements ProductOrderService {
@@ -38,6 +41,9 @@
    @Autowired
    private ProductWorkOrderMapper productWorkOrderMapper;
    @Autowired
    private ProductWorkOrderFileMapper productWorkOrderFileMapper;
    @Override
@@ -110,4 +116,21 @@
    public List<ProductStructureDto> listProcessBom(Long orderId) {
        return productOrderMapper.listProcessBom(orderId);
    }
    @Override
    public List<ProductWorkOrderDto> getProductOrderFlowCard(Long orderId) {
        //查询订单下的所有工单并按照工序的顺序
        List<ProductWorkOrder> productWorkOrders = productWorkOrderMapper.selectList(Wrappers.<ProductWorkOrder>lambdaQuery()
                .eq(ProductWorkOrder::getProductOrderId, orderId));
        if (productWorkOrders.size()==0){
            return null;
        }
        List<ProductWorkOrderDto> productWorkOrderDtos = productWorkOrders.stream().map(productWorkOrder -> {
            ProductWorkOrderDto productWorkOrderFlowCard = productWorkOrderMapper.getProductWorkOrderFlowCard(productWorkOrder.getId());
            List<ProductWorkOrderFile> productWorkOrderFiles = productWorkOrderFileMapper.selectList(Wrappers.<ProductWorkOrderFile>lambdaQuery().eq(ProductWorkOrderFile::getWorkOrderId, productWorkOrder.getId()));
            productWorkOrderFlowCard.setProductWorkOrderFiles(productWorkOrderFiles);
            return productWorkOrderFlowCard;
        }).collect(Collectors.toList());
        return productWorkOrderDtos;
    }
}
src/main/java/com/ruoyi/production/service/impl/ProductWorkOrderServiceImpl.java
@@ -2,15 +2,20 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
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.production.dto.ProductWorkOrderDto;
import com.ruoyi.production.mapper.ProductWorkOrderFileMapper;
import com.ruoyi.production.mapper.ProductWorkOrderMapper;
import com.ruoyi.production.pojo.ProductWorkOrder;
import com.ruoyi.production.pojo.ProductWorkOrderFile;
import com.ruoyi.production.service.ProductWorkOrderService;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
@Service
@AllArgsConstructor
@@ -18,6 +23,7 @@
public class ProductWorkOrderServiceImpl extends ServiceImpl<ProductWorkOrderMapper, ProductWorkOrder> implements ProductWorkOrderService {
    private ProductWorkOrderMapper productWorkOrdermapper;
    private ProductWorkOrderFileMapper productWorkOrderFileMapper;
    @Override
    public IPage<ProductWorkOrderDto> listPage(Page<ProductWorkOrderDto> page, ProductWorkOrderDto productWorkOrder) {
@@ -29,4 +35,12 @@
        return productWorkOrdermapper.updateById(productWorkOrderDto);
    }
    @Override
    public ProductWorkOrderDto getProductWorkOrderFlowCard(Long id) {
        ProductWorkOrderDto productWorkOrderFlowCard = productWorkOrdermapper.getProductWorkOrderFlowCard(id);
        List<ProductWorkOrderFile> productWorkOrderFiles = productWorkOrderFileMapper.selectList(Wrappers.<ProductWorkOrderFile>lambdaQuery().eq(ProductWorkOrderFile::getWorkOrderId, id));
        productWorkOrderFlowCard.setProductWorkOrderFiles(productWorkOrderFiles);
        return productWorkOrderFlowCard;
    }
}
src/main/resources/mapper/production/ProductWorkOrderMapper.xml
@@ -34,13 +34,33 @@
        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>
        where 1=1
            <if test="c.workOrderNo != null and c.workOrderNo != ''">
                pwo.work_order_no like concat('%',#{c.workOrderNo},'%')
               and pwo.work_order_no like concat('%',#{c.workOrderNo},'%')
            </if>
            <if test="c.planStartTime != null and c.planEndTime != null">
                and DATE(pwo.create_time) between #{c.planStartTime} and #{c.planEndTime}
            </if>
        </where>
            <if test="c.orderId != null and c.orderId != ''">
               and pwo.product_order_id = #{c.orderId}
            </if>
    </select>
    <select id="getProductWorkOrderFlowCard" resultType="com.ruoyi.production.dto.ProductWorkOrderDto">
        SELECT
        pwo.*,
        pp.NAME as processName,
        pm.model,
        pm.unit,
        p.product_name AS productName,
        po.nps_no AS productOrderNpsNo,
        ROUND(pwo.complete_quantity / pwo.plan_quantity * 100, 2) AS completionStatus
        FROM
        product_work_order pwo
        LEFT JOIN product_process_route_item ppri ON ppri.id = pwo.product_process_route_item_id
        LEFT JOIN product_order po ON po.id = pwo.product_order_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 pwo.id = #{id}
    </select>
</mapper>