feat(productWorkOrder): 新增产品工单相关模块及工单流转卡导出功能
- 新增 ProductWorkOrderController,实现产品工单分页查询、更新、ID查询及工单流转卡下载接口
- 新增 ProductWorkOrderMapper,定义分页查询及相关查询方法
- 新增 ProductWorkOrderService 接口,定义核心业务方法
- 新增 ProductWorkOrderServiceImpl,实现分页查询、更新和流转卡导出功能,支持二维码生成和多图片附件渲染
- 在 StockInventoryMapper.xml 中完善库存导出查询,支持递归查询产品根节点及按根节点过滤
- 支持导出流转卡为 Word 文档,包含二维码和相关附件图像,增强工单可视化展示能力
| | |
| | | @ApiOperation("pda根据二维码的工单id查询数据") |
| | | @GetMapping("/getProductWorkOrderById") |
| | | public R getProductWorkOrderById(Long id) { |
| | | return R.ok(productWorkOrderservice.getById(id)); |
| | | return R.ok(productWorkOrderservice.getProductWorkOrderById(id)); |
| | | } |
| | | |
| | | /** |
| | |
| | | package com.ruoyi.production.mapper; |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | |
| | | import org.apache.ibatis.annotations.Param; |
| | | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | @Mapper |
| | | public interface ProductWorkOrderMapper extends BaseMapper<ProductWorkOrder> { |
| | |
| | | import com.ruoyi.production.pojo.ProductWorkOrder; |
| | | |
| | | import javax.servlet.http.HttpServletResponse; |
| | | import javax.validation.constraints.NotNull; |
| | | |
| | | public interface ProductWorkOrderService extends IService<ProductWorkOrder>{ |
| | | |
| | |
| | | int updateProductWorkOrder(ProductWorkOrderDto productWorkOrderDto); |
| | | |
| | | void down(HttpServletResponse response, ProductWorkOrder productWorkOrder); |
| | | |
| | | ProductWorkOrderDto getProductWorkOrderById(@NotNull Long id); |
| | | } |
| | |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.deepoove.poi.XWPFTemplate; |
| | | import com.deepoove.poi.config.Configure; |
| | | import com.deepoove.poi.data.PictureRenderData; |
| | | import com.deepoove.poi.data.Pictures; |
| | | import com.ruoyi.common.utils.HackLoopTableRenderPolicy; |
| | | import com.ruoyi.common.utils.MatrixToImageWriter; |
| | | import com.ruoyi.production.dto.ProductWorkOrderDto; |
| | | import com.ruoyi.production.mapper.ProductWorkOrderFileMapper; |
| | |
| | | import com.ruoyi.production.pojo.ProductWorkOrder; |
| | | import com.ruoyi.production.pojo.ProductWorkOrderFile; |
| | | import com.ruoyi.production.service.ProductWorkOrderService; |
| | | import com.ruoyi.quality.pojo.QualityInspectParam; |
| | | import lombok.AllArgsConstructor; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | import org.springframework.stereotype.Service; |
| | |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public ProductWorkOrderDto getProductWorkOrderById(Long id) { |
| | | return productWorkOrdermapper.getProductWorkOrderFlowCard(id); |
| | | } |
| | | |
| | | |
| | | } |
| | |
| | | </if> |
| | | </select> |
| | | <select id="listStockInventoryExportData" resultType="com.ruoyi.stock.execl.StockInventoryExportData"> |
| | | WITH RECURSIVE cte AS ( |
| | | SELECT id, product_name, parent_id, id AS current_id |
| | | FROM product |
| | | |
| | | UNION ALL |
| | | |
| | | SELECT c.id, c.product_name, p.parent_id, p.id |
| | | FROM cte c |
| | | JOIN product p ON c.parent_id = p.id |
| | | ), |
| | | root_map AS ( |
| | | SELECT |
| | | c.id, |
| | | p.id AS root_id, |
| | | p.product_name AS root_name |
| | | FROM cte c |
| | | JOIN product p ON c.current_id = p.id |
| | | WHERE p.parent_id IS NULL |
| | | ) |
| | | select si.qualitity, |
| | | pm.model, |
| | | pm.unit, |
| | |
| | | coalesce(si.warn_num, 0) as warn_num, |
| | | coalesce(si.locked_quantity, 0) as locked_quantity, |
| | | si.remark, |
| | | si.update_time |
| | | si.update_time, |
| | | si.warehouse_code, |
| | | si.warehouse_name, |
| | | pm.sub_unit, |
| | | si.sub_qualitity, |
| | | si.product_code |
| | | from stock_inventory si |
| | | left join product_model pm on si.product_model_id = pm.id |
| | | left join product p on pm.product_id = p.id |
| | | left join root_map rm ON pm.product_id = rm.id |
| | | where 1 = 1 |
| | | <if test="ew.productName != null and ew.productName !=''"> |
| | | and p.product_name like concat('%',#{ew.productName},'%') |
| | | </if> |
| | | <if test="ew.rootName != null and ew.rootName != '' "> |
| | | and rm.root_name = #{ew.rootName} |
| | | </if> |
| | | </select> |
| | | <select id="stockInventoryPage" resultType="com.ruoyi.stock.dto.StockInRecordDto"> |
| | | select sir.*,si.qualitity as current_stock, |