ezhizao_zx hace 5 meses
padre
commit
48baec3fbe

+ 49 - 27
src/main/java/cn/ezhizao/project/business/controller/BizOutsourcedOrderDetailProcessController.java

@@ -9,17 +9,12 @@ import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
-import cn.ezhizao.project.business.domain.BizCarrier;
-import cn.ezhizao.project.business.domain.BizOutsourcedOrderDetail;
-import cn.ezhizao.project.business.domain.BizReturnReceiptDetail;
-import cn.ezhizao.project.business.service.IBizOutsourcedOrderDetailService;
-import cn.ezhizao.project.business.service.IBizReturnReceiptDetailService;
+import cn.ezhizao.project.business.domain.*;
+import cn.ezhizao.project.business.service.*;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
 import cn.ezhizao.framework.aspectj.lang.annotation.Log;
 import cn.ezhizao.framework.aspectj.lang.enums.BusinessType;
-import cn.ezhizao.project.business.domain.BizOutsourcedOrderDetailProcess;
-import cn.ezhizao.project.business.service.IBizOutsourcedOrderDetailProcessService;
 import cn.ezhizao.framework.web.controller.BaseController;
 import cn.ezhizao.framework.web.domain.AjaxResult;
 import cn.ezhizao.common.utils.poi.ExcelUtil;
@@ -42,6 +37,10 @@ public class BizOutsourcedOrderDetailProcessController extends BaseController
     @Resource
     private IBizOutsourcedOrderDetailService bizOutsourcedOrderDetailService;
     @Resource
+    private IBizSupplierService bizSupplierService;
+    @Resource
+    private IBizDayworkCarrierService bizDayworkCarrierService;
+    @Resource
     private HttpServletRequest request;
 
     /**
@@ -64,6 +63,11 @@ public class BizOutsourcedOrderDetailProcessController extends BaseController
         bizOutsourcedOrderDetailProcess.setSupplierId(Long.valueOf(request.getHeader("tenantId")));
         List<BizOutsourcedOrderDetailProcess> list = bizOutsourcedOrderDetailProcessService.getList(bizOutsourcedOrderDetailProcess);
         List<BizOutsourcedOrderDetail> details = bizOutsourcedOrderDetailService.query().in("id", list.isEmpty() ? Collections.singletonList(0L) : list.stream().map(BizOutsourcedOrderDetailProcess::getDetailId).collect(Collectors.toList())).list();
+        BizSupplier supplier = bizSupplierService.getById(Long.valueOf(request.getHeader("tenantId")));
+        List<BizDayworkCarrier> currentCarriers = new ArrayList<>();
+        if(supplier.getIsInnerOutsource().equals(1) && !details.isEmpty()) {
+            currentCarriers.addAll(bizDayworkCarrierService.query().eq("is_changed", 0).in("daywork_id", details.stream().map(BizOutsourcedOrderDetail::getDayworkId).collect(Collectors.toList())).list());
+        }
         //收回状态
         list.forEach(item ->{
             item.setReturnStatus(0);
@@ -72,29 +76,47 @@ public class BizOutsourcedOrderDetailProcessController extends BaseController
             }
             BizOutsourcedOrderDetail detail = details.stream().filter(v -> v.getId().equals(item.getDetailId())).findFirst().orElse(null);
             if(detail != null) {
-                // 将字符串拆分转为对象
-                List<BizCarrier> carriers = 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) {
-                            carrierIds.add(Long.parseLong(idCode[0]));
-                            BizCarrier bizCarrier = new BizCarrier();
-                            bizCarrier.setId(Long.parseLong(idCode[0]));
-                            bizCarrier.setCode(idCode[1]);
-                            carriers.add(bizCarrier);
+                if(supplier.getIsInnerOutsource().equals(1)) {
+                    // 将字符串拆分转为对象
+                    List<BizCarrier> carriers = new ArrayList<>();
+                    // 为了减少前段的逻辑,所以需要先将拆分后的id也拼接起来
+                    List<Long> carrierIds = new ArrayList<>();
+                    currentCarriers.stream().filter(v -> v.getDayworkId().equals(detail.getDayworkId())).forEach(l -> {
+                        BizCarrier carrier = new BizCarrier();
+                        carrierIds.add(l.getCarrierId());
+                        carrier.setCode(l.getCarrierCode());
+                        carrier.setId(l.getCarrierId());
+                        carriers.add(carrier);
+                    });
+                    item.setNewCarriers(carriers);
+                    item.setCarrierIds(carrierIds);
+                    item.setCarriers(carriers);
+                    item.setNewCarrierName(carriers.stream().map(BizCarrier::getCode).collect(Collectors.joining()));
+                } else {
+                    // 将字符串拆分转为对象
+                    List<BizCarrier> carriers = 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) {
+                                carrierIds.add(Long.parseLong(idCode[0]));
+                                BizCarrier bizCarrier = new BizCarrier();
+                                bizCarrier.setId(Long.parseLong(idCode[0]));
+                                bizCarrier.setCode(idCode[1]);
+                                carriers.add(bizCarrier);
+                            }
                         }
                     }
+                    item.setNewCarriers(carriers);
+                    item.setCarrierIds(carrierIds);
+                    item.setCarriers(carriers);
                 }
-                item.setNewCarriers(carriers);
-                item.setCarrierIds(carrierIds);
-                item.setCarriers(carriers);
             }
         });
         return getDataTable(list);

+ 5 - 1
src/main/resources/mybatis/business/BizOutsourcedOrderDetailMapper.xml

@@ -106,6 +106,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         case when (select count(1) from biz_daywork_carrier bdc where daywork_id = t1.daywork_id and bdc.deleted = 0 and bdc.is_changed = 0) > 0 then 0 else 1 end as unbind,
         (select group_concat(carrier_code) from biz_daywork_carrier bdc where daywork_id = t1.daywork_id and bdc.deleted = 0 and bdc.is_changed = 0) current_carriers
         FROM biz_outsourced_order_detail t1 left join biz_outsourced_order t2 on t1.master_id = t2.id
+        left join biz_supplier t3 on t3.id = t2.supplier_id
         <trim prefix=" WHERE" suffix="" suffixOverrides="AND">
             t1.deleted = 0 and t2.deleted = 0 and t2.is_submit = 1
             <if test="existingOutsourceDetailIds != null and existingOutsourceDetailIds.size > 0">
@@ -128,7 +129,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             </if>
             <if test="productDescription != null  and productDescription != ''"> AND t1.product_description LIKE CONCAT('%', #{productDescription}, '%')</if>
             <if test="originalCarrier != null "> AND t1.original_carrier LIKE CONCAT('%', #{originalCarrier}, '%')</if>
-            <if test="newCarrier != null "> AND t1.new_carrier_name LIKE CONCAT('%', #{newCarrier}, '%')</if>
+            <if test="newCarrier != null "> AND
+<!--                t3.t1.new_carrier_name LIKE CONCAT('%', #{newCarrier}, '%')-->
+                exists (select 1 from biz_daywork_carrier bdc where daywork_id = t1.daywork_id and bdc.deleted = 0 and bdc.is_changed = 0 and bdc.carrier_code like concat('%',#{newCarrier}, '%'))
+            </if>
             <if test="startTime != null ">AND form_date &gt; #{startTime}</if>
             <if test="endTime != null ">AND form_date &lt; #{endTime}</if>
             <if test="supplierId != null "> AND t1.supplier_id = #{supplierId}</if>

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

@@ -20,6 +20,7 @@
         =biz_outsourced_order_detail.id and biz_outsourced_order_detail.deleted = 0 ) as newCarrierName
         , t2.is_first_process FROM biz_outsourced_order_detail_process t1
         right join biz_outsourced_order t2 on t1.master_id = t2.id
+        left join biz_supplier t3 on t3.id = t2.supplier_id
         <trim prefix=" WHERE" suffix="" suffixOverrides="AND">
             t1.deleted = 0 and t2.is_submit = 1 and t2.deleted = 0
             <if test="formCode != null  and formCode != ''">AND t1.form_code like concat('%', #{formCode}, '%')</if>
@@ -41,11 +42,14 @@
                 #{technologyVersion}
             </if>
             <if test="processAlias != null  and processAlias != ''">AND t1.process_alias = #{processAlias}</if>
-            <if test="newCarrierName != null">AND exists (select 1
+            <if test="newCarrierName != null">AND case when t3.is_inner_outsource = 1 then
+                (exists (select 1 from biz_daywork_carrier t where t.daywork_id = t1.daywork_id and t.is_changed = 0 and t.carrier_code like concat('%', #{newCarrierName}, '%')))
+                else
+                (exists (select 1
                 FROM
                 biz_outsourced_order_detail where t1.detail_id =biz_outsourced_order_detail.id
                 and new_carrier_name like concat('%',#{newCarrierName},'%')
-                )
+                )) end
             </if>
             <if test="status != null  ">AND t1.status = #{status}</if>
             <if test="returnStatus ==0">AND t1.detail_id not in