guoyujia 1 gadu atpakaļ
vecāks
revīzija
182f3e005d

+ 52 - 0
src/main/java/cn/ezhizao/project/business/controller/BizOutsourcedOrderDetailController.java

@@ -64,7 +64,59 @@ public class BizOutsourcedOrderDetailController extends BaseController
         List<BizOutsourcedOrderDetail> list = bizOutsourcedOrderDetailService.getList(bizOutsourcedOrderDetail);
         return getDataTable(list);
     }
+    //查询已经报工完成orderDetail
+    @GetMapping("/getFinishedOutsourceDetailList")
+    public TableDataInfo getFinishedOutsourceDetailList(BizOutsourcedOrderDetail bizOutsourcedOrderDetail) throws NoSuchFieldException, IllegalAccessException
+    {
+        if(bizOutsourcedOrderDetail.getStartTime()!=null) {
+            bizOutsourcedOrderDetail.setStartTime(bizOutsourcedOrderDetail.getStartTime()+ " 00:00:00");
+        }
+        if(bizOutsourcedOrderDetail.getEndTime()!=null) {
+            bizOutsourcedOrderDetail.setEndTime(bizOutsourcedOrderDetail.getEndTime()+ " 23:59:59");
+        }
+        setTenantId(bizOutsourcedOrderDetail);
+        startPage();
+        // 获取所有该外协商未完成的 外协明细对应的工序明细
+        List<BizOutsourcedOrderDetailProcess> notFinishedDetail = bizOutsourcedOrderDetailProcessService.query()
+                // 这里的tenantId,存储的是supplier_id
+                .eq("supplier_name", bizOutsourcedOrderDetail.getSupplierName())
+                .eq("status", 0)
+                .list();
+        // 将所有未完成的外协明细的id,存在一个集合中
+        List<Long> outsourcedOrderDetailIds = notFinishedDetail.stream().map(BizOutsourcedOrderDetailProcess::getDetailId).collect(Collectors.toList());
+        bizOutsourcedOrderDetail.setNotFinishedDetailIds(outsourcedOrderDetailIds);
+        List<BizOutsourcedOrderDetail> list = bizOutsourcedOrderDetailService.getFinishedOutsourceDetailList(bizOutsourcedOrderDetail);
+        list.forEach(detail -> {
+            // 将字符串拆分转为对象
+            List<BizCarrier> carriers = new ArrayList<>();
+            // 因为需要显示箱号,所以需要拆分出code重新拼接到NewCarrier
+            List<String> codeList = new ArrayList<>();
+            // 为了减少前段的逻辑,所以需要先将拆分后的id也拼接起来
+            List<Long> carrierIds = new ArrayList<>();
 
+            //使用 StringTokenizer 来分割字符串
+            StringTokenizer tokenizer = new StringTokenizer(detail.getNewCarrier(), ",");
+            while (tokenizer.hasMoreTokens()) {
+                String token = tokenizer.nextToken();
+                // 检查当前 token 是否包含 "|" 字符 如果没有表示不是新箱,则跳过当前 token
+                if (token.contains("|")) {
+                    String[] idCode = token.split("\\|"); // 安全地分割 token
+                    if (idCode.length == 2) {
+                        codeList.add(idCode[1]);
+                        carrierIds.add(Long.parseLong(idCode[0]));
+                        BizCarrier bizCarrier = new BizCarrier();
+                        bizCarrier.setId(Long.parseLong(idCode[0]));
+                        bizCarrier.setCode(idCode[1]);
+                        carriers.add(bizCarrier);
+                    }
+                }
+            }
+            if(codeList.size()>0){
+                detail.setNewCarrier(String.join(",", codeList));
+            }
+        });
+        return getDataTable(list);
+    }
     /**
      * 导出外协单从列表
      */

+ 44 - 0
src/main/java/cn/ezhizao/project/business/controller/BizOutsourcedOrderDetailProcessController.java

@@ -1,9 +1,13 @@
 package cn.ezhizao.project.business.controller;
 
+import java.util.ArrayList;
 import java.util.List;
+import java.util.StringTokenizer;
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+
+import cn.ezhizao.project.business.domain.BizCarrier;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
 import cn.ezhizao.framework.aspectj.lang.annotation.Log;
@@ -69,8 +73,48 @@ public class BizOutsourcedOrderDetailProcessController extends BaseController
     @PostMapping(value = "/editOutsourcedOrderDetailProcess")
     public AjaxResult editOutsourcedOrderDetailProcess(@RequestBody BizOutsourcedOrderDetailProcess bizOutsourcedOrderDetailProcess)
     {
+        //保存时添加状态
+        bizOutsourcedOrderDetailProcess.setStatus(1);
         return success(bizOutsourcedOrderDetailProcessService.updateById(bizOutsourcedOrderDetailProcess));
     }
+    /**
+     * 查询收回单明细
+     */
+    @PostMapping(value = "/getOrderDetailProcess")
+    public AjaxResult getOrderDetailProcess(@RequestBody BizOutsourcedOrderDetailProcess bizOutsourcedOrderDetailProcess)
+    {
+        List<BizOutsourcedOrderDetailProcess> list = bizOutsourcedOrderDetailProcessService.getDetailList(bizOutsourcedOrderDetailProcess);
+        list.forEach(detail -> {
+            // 将字符串拆分转为对象
+            List<BizCarrier> carriers = new ArrayList<>();
+            // 因为需要显示箱号,所以需要拆分出code重新拼接到NewCarrier
+            List<String> codeList = new ArrayList<>();
+            // 为了减少前段的逻辑,所以需要先将拆分后的id也拼接起来
+            List<Long> carrierIds = new ArrayList<>();
+
+            //使用 StringTokenizer 来分割字符串
+            StringTokenizer tokenizer = new StringTokenizer(detail.getNewCarrier(), ",");
+            while (tokenizer.hasMoreTokens()) {
+                String token = tokenizer.nextToken();
+                // 检查当前 token 是否包含 "|" 字符 如果没有表示不是新箱,则跳过当前 token
+                if (token.contains("|")) {
+                    String[] idCode = token.split("\\|"); // 安全地分割 token
+                    if (idCode.length == 2) {
+                        codeList.add(idCode[1]);
+                        carrierIds.add(Long.parseLong(idCode[0]));
+                        BizCarrier bizCarrier = new BizCarrier();
+                        bizCarrier.setId(Long.parseLong(idCode[0]));
+                        bizCarrier.setCode(idCode[1]);
+                        carriers.add(bizCarrier);
+                    }
+                }
+            }
+            if(codeList.size()>0){
+                detail.setNewCarrier(String.join(",", codeList));
+            }
+        });
+        return success(list);
+    }
 
     /**
      * 获取外协单从对应的外协工序的从详细信息

+ 20 - 0
src/main/java/cn/ezhizao/project/business/controller/BizReturnReceiptDetailController.java

@@ -16,6 +16,7 @@ import org.springframework.web.bind.annotation.*;
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletResponse;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * 外协单从Controller
@@ -55,6 +56,14 @@ public class BizReturnReceiptDetailController extends BaseController
         ExcelUtil<BizReturnReceiptDetail> util = new ExcelUtil<>(BizReturnReceiptDetail.class);
         util.exportExcel(response, list, "外协单从数据");
     }
+    //新增收回单明细
+    @PostMapping
+    public AjaxResult save(@RequestBody List<BizReturnReceiptDetail> bizReturnReceiptDetail)
+    {
+        List<BizReturnReceiptDetail> oldList = bizReturnReceiptDetailService.query().eq("outsource_detail_id", bizReturnReceiptDetail.get(0).getOutsourceDetailId()).list();
+        saveOrUpdateBatch(bizReturnReceiptDetailService, bizReturnReceiptDetail, oldList);
+        return success();
+    }
 
     /**
      * 获取外协单从详细信息
@@ -65,4 +74,15 @@ public class BizReturnReceiptDetailController extends BaseController
     {
         return success(bizReturnReceiptDetailService.getById(id));
     }
+    @GetMapping("/getReturnReceiptDetail")
+    public AjaxResult getReturnReceiptDetail(BizOutsourcedOrderDetail bizOutsourcedOrderDetail)
+    {
+        return success(bizReturnReceiptDetailService.query().eq("outsource_detail_id", bizOutsourcedOrderDetail.getId()).list());
+    }
+    @DeleteMapping("/{id}")
+    public AjaxResult remove(@PathVariable Long id)
+    {
+        List<BizReturnReceiptDetail> list = bizReturnReceiptDetailService.query().eq("outsource_detail_id", id).list();
+        return toAjax(bizReturnReceiptDetailService.removeBatchByIds(list));
+    }
 }

+ 2 - 0
src/main/java/cn/ezhizao/project/business/domain/BizOutsourcedOrderDetail.java

@@ -147,4 +147,6 @@ public class BizOutsourcedOrderDetail extends BaseEntity
 
     @TableField(exist = false)
     private List<BizOutsourcedOrderDetailProcess> outsourcedOrderDetailProcessList;
+    @TableField(exist = false)
+    private List<BizReturnReceiptDetail> returnReceiptDetailList;
 }

+ 7 - 0
src/main/java/cn/ezhizao/project/business/domain/BizOutsourcedOrderDetailProcess.java

@@ -145,4 +145,11 @@ public class BizOutsourcedOrderDetailProcess extends BaseEntity
     private String endTime;
     private String processCode;
     private Long technologicalProcessDetailId;
+    private Integer status;
+    @TableField(exist = false)
+    private String newCarrier;
+    @TableField(exist = false)
+    private String originalCarrier;
+    @TableField(exist = false)
+    private Integer receiptNum;
 }

+ 2 - 0
src/main/java/cn/ezhizao/project/business/mapper/BizOutsourcedOrderDetailMapper.java

@@ -22,6 +22,8 @@ public interface BizOutsourcedOrderDetailMapper extends BaseMapper<BizOutsourced
      */
     public List<BizOutsourcedOrderDetail> getList(BizOutsourcedOrderDetail bizOutsourcedOrderDetail);
 
+    public List<BizOutsourcedOrderDetail> getFinishedOutsourceDetailList(BizOutsourcedOrderDetail bizOutsourcedOrderDetail);
+
     /**
      * 查询外协单从列表
      *

+ 1 - 0
src/main/java/cn/ezhizao/project/business/mapper/BizOutsourcedOrderDetailProcessMapper.java

@@ -19,6 +19,7 @@ public interface BizOutsourcedOrderDetailProcessMapper extends BaseMapper<BizOut
      * @return 外协单从对应的外协工序的从集合
      */
     public List<BizOutsourcedOrderDetailProcess> getList(BizOutsourcedOrderDetailProcess bizOutsourcedOrderDetailProcess);
+    public List<BizOutsourcedOrderDetailProcess> getDetailList(BizOutsourcedOrderDetailProcess bizOutsourcedOrderDetailProcess);
 
     /**
      * 物理删除

+ 1 - 0
src/main/java/cn/ezhizao/project/business/service/IBizOutsourcedOrderDetailProcessService.java

@@ -19,6 +19,7 @@ public interface IBizOutsourcedOrderDetailProcessService extends IService<BizOut
      * @return 外协单从对应的外协工序的从集合
      */
     List<BizOutsourcedOrderDetailProcess> getList(BizOutsourcedOrderDetailProcess bizOutsourcedOrderDetailProcess);
+    List<BizOutsourcedOrderDetailProcess> getDetailList(BizOutsourcedOrderDetailProcess bizOutsourcedOrderDetailProcess);
 
     /**
      * 物理删除

+ 1 - 0
src/main/java/cn/ezhizao/project/business/service/IBizOutsourcedOrderDetailService.java

@@ -19,6 +19,7 @@ public interface IBizOutsourcedOrderDetailService extends IService<BizOutsourced
      * @return 外协单从集合
      */
     List<BizOutsourcedOrderDetail> getList(BizOutsourcedOrderDetail bizOutsourcedOrderDetail);
+    List<BizOutsourcedOrderDetail> getFinishedOutsourceDetailList(BizOutsourcedOrderDetail bizOutsourcedOrderDetail);
 
     /**
      * 查询外协单从列表

+ 5 - 0
src/main/java/cn/ezhizao/project/business/service/impl/BizOutsourcedOrderDetailProcessServiceImpl.java

@@ -31,6 +31,11 @@ public class BizOutsourcedOrderDetailProcessServiceImpl  extends ServiceImpl<Biz
     {
         return bizOutsourcedOrderDetailProcessMapper.getList(bizOutsourcedOrderDetailProcess);
     }
+    @Override
+    public List<BizOutsourcedOrderDetailProcess> getDetailList(BizOutsourcedOrderDetailProcess bizOutsourcedOrderDetailProcess)
+    {
+        return bizOutsourcedOrderDetailProcessMapper.getDetailList(bizOutsourcedOrderDetailProcess);
+    }
 
     /**
      * 物理删除

+ 5 - 0
src/main/java/cn/ezhizao/project/business/service/impl/BizOutsourcedOrderDetailServiceImpl.java

@@ -31,6 +31,11 @@ public class BizOutsourcedOrderDetailServiceImpl  extends ServiceImpl<BizOutsour
     {
         return bizOutsourcedOrderDetailMapper.getList(bizOutsourcedOrderDetail);
     }
+    @Override
+    public List<BizOutsourcedOrderDetail> getFinishedOutsourceDetailList(BizOutsourcedOrderDetail bizOutsourcedOrderDetail)
+    {
+        return bizOutsourcedOrderDetailMapper.getFinishedOutsourceDetailList(bizOutsourcedOrderDetail);
+    }
 
     /**
      * 查询外协单从列表

+ 51 - 0
src/main/resources/mybatis/business/BizOutsourcedOrderDetailMapper.xml

@@ -9,6 +9,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <association property="processNames" column="id" select="getProcessNames"/>
         <association property="receiptNum" column="id" select="getReceiptNum"/>
         <collection property="outsourcedOrderDetailProcessList" column="id" ofType="cn.ezhizao.project.business.domain.BizOutsourcedOrderDetailProcess" select="getOutsourcedOrderDetailProcessList"/>
+        <collection property="returnReceiptDetailList" column="id" ofType="cn.ezhizao.project.business.domain.BizReturnReceiptDetail" select="getReturnReceiptDetailList"/>
     </resultMap>
 
     <select id="getList" parameterType="BizOutsourcedOrderDetail" resultMap="BizOutsourcedOrderDetailResult">
@@ -29,6 +30,47 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="newCarrierCount != null "> AND new_carrier_count = #{newCarrierCount}</if>
         </trim>
     </select>
+    <select id="getFinishedOutsourceDetailList" parameterType="BizOutsourcedOrderDetail" resultMap="BizOutsourcedOrderDetailResult">
+        SELECT distinct t1.id,t1.lot_code,t1.product_description,t1.original_carrier,t1.new_carrier,
+        (select form_date from biz_return_receipt_detail where biz_return_receipt_detail.outsource_detail_id = t1.id and biz_return_receipt_detail.deleted = 0 and t1.deleted = 0 limit 1) as form_date
+        FROM biz_outsourced_order_detail t1 left join biz_outsourced_order_detail_process t2 on t1.id = t2.detail_id
+        <trim prefix=" WHERE" suffix="" suffixOverrides="AND">
+            t1.deleted = 0 and t2.status = 1
+            <if test="formCode != null  and formCode != ''"> AND t1.form_code = #{formCode}</if>
+            <if test="startTime != null "> AND (
+                SELECT brrd.form_date
+                FROM biz_return_receipt_detail brrd
+                WHERE brrd.outsource_detail_id = t1.id
+                AND brrd.deleted = 0
+                AND t1.deleted = 0
+                LIMIT 1
+                ) > #{startTime}</if>
+            <if test="endTime != null "> AND (
+                SELECT brrd.form_date
+                FROM biz_return_receipt_detail brrd
+                WHERE brrd.outsource_detail_id = t1.id
+                AND brrd.deleted = 0
+                AND t1.deleted = 0
+                LIMIT 1
+                ) &lt; #{endTime}</if>
+            <if test="notFinishedDetailIds != null and notFinishedDetailIds.size > 0">
+                AND t1.id NOT IN
+                <foreach collection="notFinishedDetailIds" index="index" item="id" separator="," open="(" close=")">
+                    #{id,jdbcType=BIGINT}
+                </foreach>
+            </if>
+            <if test="supplierName != null  and supplierName != ''"> AND t1.supplier_name like concat('%', #{supplierName}, '%')</if>
+            <if test="deliveryMethod != null "> AND t1.delivery_method = #{deliveryMethod}</if>
+            <if test="packagingMethod != null  and packagingMethod != ''"> AND t1.packaging_method = #{packagingMethod}</if>
+            <if test="productDescription != null  and productDescription != ''"> AND t1.product_description = #{productDescription}</if>
+            <if test="technologyVersion != null  and technologyVersion != ''"> AND t1.technology_version = #{technologyVersion}</if>
+            <if test="originalCarrier != null  and originalCarrier != ''"> AND t1.original_carrier = #{originalCarrier}</if>
+            <if test="originalCarrierCount != null "> AND t1.original_carrier_count = #{originalCarrierCount}</if>
+            <if test="newCarrier != null  and newCarrier != ''"> AND t1.new_carrier = #{newCarrier}</if>
+            <if test="newCarrierCount != null "> AND t1.new_carrier_count = #{newCarrierCount}</if>
+        </trim>
+        order by t1.create_time desc
+    </select>
     <select id="getOutsourcedOrderDetailProcessList" resultType="cn.ezhizao.project.business.domain.BizOutsourcedOrderDetailProcess">
         select * from biz_outsourced_order_detail_process
         <trim prefix=" WHERE" suffix="" suffixOverrides="AND">
@@ -37,6 +79,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </trim>
         order by process_step_number
     </select>
+    <select id="getReturnReceiptDetailList" resultType="cn.ezhizao.project.business.domain.BizReturnReceiptDetail">
+        select * from biz_return_receipt_detail
+        <trim prefix=" WHERE" suffix="" suffixOverrides="AND">
+            deleted = 0
+            <if test="id != null"> AND outsource_detail_id = #{id}</if>
+        </trim>
+        order by process_step_number
+    </select>
+
     <select id="getProcessNames" resultType="String">
         SELECT
             GROUP_CONCAT(t.process_alias)

+ 6 - 0
src/main/resources/mybatis/business/BizOutsourcedOrderDetailProcessMapper.xml

@@ -28,6 +28,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         </trim>
         order by t1.create_time desc ,t1.process_step_number
     </select>
+    <select id="getDetailList" resultMap="BizOutsourcedOrderDetailProcessResult">
+        select t1.*,t2.original_carrier,t2.new_carrier,t1.qualified_num as receipt_num,t2.original_carrier_count,t2.new_carrier_count  from biz_outsourced_order_detail_process t1
+        left join biz_outsourced_order_detail t2 on t1.detail_id = t2.id
+        where t1.deleted = 0 and t2.deleted = 0 and t1.detail_id = #{id} order by t1.process_step_number
+
+    </select>
     <select id="getReturnReceiptDetailAuditNum" resultType="Integer">
         SELECT t2.audit_num FROM biz_outsourced_order_detail_process t1 left join biz_return_receipt_detail t2 on t1.detail_id = t2.outsource_detail_id and t1.lot_id = t2.lot_id
         WHERE t1.process_step_number = #{processStepNumber} AND  t1.lot_id = #{lotId} and t2.process_step_number = #{processStepNumber} AND  t2.lot_id = #{lotId} and t1.deleted = 0 and t2.deleted = 0