Browse Source

Merge branch '12.31内部外协分支'

# Conflicts:
#	src/main/java/cn/ezhizao/project/business/controller/BizReturnReceiptController.java
ezhizao_zx 5 months ago
parent
commit
b14d6d90ab

+ 63 - 23
src/main/java/cn/ezhizao/project/business/controller/BizOutsourcedOrderDetailController.java

@@ -36,8 +36,7 @@ import cn.ezhizao.framework.web.page.TableDataInfo;
  */
 @RestController
 @RequestMapping("/business/outsourceDetail")
-public class BizOutsourcedOrderDetailController extends BaseController
-{
+public class BizOutsourcedOrderDetailController extends BaseController {
     @Resource
     private IBizOutsourcedOrderDetailService bizOutsourcedOrderDetailService;
     @Resource
@@ -46,35 +45,35 @@ public class BizOutsourcedOrderDetailController extends BaseController
     private IBizReturnReceiptDetailService bizReturnReceiptDetailService;
     @Resource
     private HttpServletRequest request;
+
     /**
      * 查询外协单从列表
      */
     @PreAuthorize("@ss.hasPermi('business:outsourceDetail:list')")
     @Log(title = "外协单明细查询", businessType = BusinessType.SELECT)
     @GetMapping("/list")
-    public TableDataInfo list(BizOutsourcedOrderDetail bizOutsourcedOrderDetail) throws NoSuchFieldException, IllegalAccessException
-    {
-        if(bizOutsourcedOrderDetail.getStartTime()!=null) {
-            bizOutsourcedOrderDetail.setStartTime(bizOutsourcedOrderDetail.getStartTime()+ " 00:00:00");
+    public TableDataInfo list(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");
+        if (bizOutsourcedOrderDetail.getEndTime() != null) {
+            bizOutsourcedOrderDetail.setEndTime(bizOutsourcedOrderDetail.getEndTime() + " 23:59:59");
         }
         setTenantId(bizOutsourcedOrderDetail);
         startPage();
         List<BizOutsourcedOrderDetail> list = bizOutsourcedOrderDetailService.getList(bizOutsourcedOrderDetail);
         return getDataTable(list);
     }
+
     //查询已经报工完成orderDetail
     @Log(title = "外协查询已经报公完成的明细", businessType = BusinessType.SELECT)
     @GetMapping("/getFinishedOutsourceDetailList")
-    public TableDataInfo getFinishedOutsourceDetailList(BizOutsourcedOrderDetail bizOutsourcedOrderDetail) throws NoSuchFieldException, IllegalAccessException
-    {
-        if(bizOutsourcedOrderDetail.getStartTime()!=null) {
-            bizOutsourcedOrderDetail.setStartTime(bizOutsourcedOrderDetail.getStartTime()+ " 00:00:00");
+    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");
+        if (bizOutsourcedOrderDetail.getEndTime() != null) {
+            bizOutsourcedOrderDetail.setEndTime(bizOutsourcedOrderDetail.getEndTime() + " 23:59:59");
         }
         setTenantId(bizOutsourcedOrderDetail);
         startPage();
@@ -113,19 +112,19 @@ public class BizOutsourcedOrderDetailController extends BaseController
                     }
                 }
             }
-            if(codeList.size()>0){
+            if (codeList.size() > 0) {
                 detail.setNewCarrier(String.join(",", codeList));
             }
         });
         return getDataTable(list);
     }
+
     /**
      * 导出外协单从列表
      */
     @Log(title = "外协单明细导出", businessType = BusinessType.EXPORT)
     @PostMapping("/export")
-    public void export(HttpServletResponse response, BizOutsourcedOrderDetail bizOutsourcedOrderDetail) throws NoSuchFieldException, IllegalAccessException
-    {
+    public void export(HttpServletResponse response, BizOutsourcedOrderDetail bizOutsourcedOrderDetail) throws NoSuchFieldException, IllegalAccessException {
         setTenantId(bizOutsourcedOrderDetail);
         List<BizOutsourcedOrderDetail> list = bizOutsourcedOrderDetailService.getList(bizOutsourcedOrderDetail);
         ExcelUtil<BizOutsourcedOrderDetail> util = new ExcelUtil<>(BizOutsourcedOrderDetail.class);
@@ -138,19 +137,17 @@ public class BizOutsourcedOrderDetailController extends BaseController
     @PreAuthorize("@ss.hasPermi('business:outsourceDetail:query')")
     @Log(title = "外协单明细查询详细信息", businessType = BusinessType.EXPORT)
     @GetMapping(value = "/{id}")
-    public AjaxResult getInfo(@PathVariable("id") Long id)
-    {
+    public AjaxResult getInfo(@PathVariable("id") Long id) {
         return success(bizOutsourcedOrderDetailService.getById(id));
     }
 
     /**
-     * 查询外协单从列表
+     * 查询默认外协发出单从列表
      */
     @PreAuthorize("@ss.hasPermi('business:outsourceDetail:list')")
     @Log(title = "外协收回选择收回的发出明细", businessType = BusinessType.EXPORT)
     @GetMapping("/listDetailForReceipt")
-    public TableDataInfo listDetailForReceipt(BizOutsourcedOrderDetail bizOutsourcedOrderDetail) throws NoSuchFieldException, IllegalAccessException
-    {
+    public TableDataInfo listDetailForReceipt(BizOutsourcedOrderDetail bizOutsourcedOrderDetail) throws NoSuchFieldException, IllegalAccessException {
 //        setTenantId(bizOutsourcedOrderDetail);
         String tenantId = request.getHeader("tenantId");
         bizOutsourcedOrderDetail.setSupplierId(Long.valueOf(tenantId));
@@ -175,6 +172,7 @@ public class BizOutsourcedOrderDetailController extends BaseController
          2、把已经报工完成的外协明细列出来
          */
         bizOutsourcedOrderDetail.setSupplierId(Long.valueOf(tenantId));
+        bizOutsourcedOrderDetail.setIsInnerOutsource(0);
         startPage();
         List<BizOutsourcedOrderDetail> list = bizOutsourcedOrderDetailService.getListForReceipt(bizOutsourcedOrderDetail);
         //因为新箱子保存的时候,是用“id|code,id|code”的字符串形式存储的所以查询的时候需要进行拆分
@@ -203,11 +201,53 @@ public class BizOutsourcedOrderDetailController extends BaseController
                     }
                 }
             }
-            if(codeList.size()>0){
+            if (codeList.size() > 0) {
                 detail.setNewCarrier(String.join(",", codeList));
             }
 
         });
         return getDataTable(list);
     }
+
+    /**
+     * 查询内部外协发出单明细
+     */
+    @PreAuthorize("@ss.hasPermi('business:outsourceDetail:list')")
+    @GetMapping("/listDetailForInterReceipt")
+    public TableDataInfo listDetailForInterReceipt(BizOutsourcedOrderDetail bizOutsourcedOrderDetail) throws NoSuchFieldException, IllegalAccessException {
+//        setTenantId(bizOutsourcedOrderDetail);
+        String tenantId = request.getHeader("tenantId");
+        bizOutsourcedOrderDetail.setSupplierId(Long.valueOf(tenantId));
+        bizOutsourcedOrderDetail.setIsInnerOutsource(1);
+        // 获取所有该外协商未完成的 外协明细对应的工序明细
+        List<BizOutsourcedOrderDetailProcess> notFinishedDetail = bizOutsourcedOrderDetailProcessService.query()
+                // 这里的tenantId,存储的是supplier_id
+                .eq("supplier_id", bizOutsourcedOrderDetail.getSupplierId())
+                .eq("production_num", 0)
+                .eq("qualified_num", 0)
+                .list();
+        // 将所有未完成的外协明细的id,存在一个集合中
+//        List<Long> outsourcedOrderDetailIds = notFinishedDetail.stream().map(BizOutsourcedOrderDetailProcess::getDetailId).distinct().collect(Collectors.toList());
+        List<Long> outsourcedOrderDetailIds = bizOutsourcedOrderDetailService.getIdsForInterReturn(bizOutsourcedOrderDetail);
+        bizOutsourcedOrderDetail.setNotFinishedDetailIds(outsourcedOrderDetailIds);
+        //将已添加的外协明细的id,存在一个集合中
+        List<BizReturnReceiptDetail> alreadyAddedDetailList = bizReturnReceiptDetailService.query()
+                .eq("supplier_id", bizOutsourcedOrderDetail.getSupplierId())
+                .list();
+        List<Long> alreadyAddedDetailIds = alreadyAddedDetailList.stream().map(BizReturnReceiptDetail::getOutsourceDetailId).distinct().collect(Collectors.toList());
+        bizOutsourcedOrderDetail.setAlreadyAddedDetailIds(alreadyAddedDetailIds);
+        /*
+         1、把未做收回的外协明细列出
+         2、把已经报工完成的外协明细列出来
+         */
+        bizOutsourcedOrderDetail.setSupplierId(Long.valueOf(tenantId));
+        startPage();
+        List<BizOutsourcedOrderDetail> list = bizOutsourcedOrderDetailService.getListForReceipt(bizOutsourcedOrderDetail);
+        //因为新箱子保存的时候,是用“id|code,id|code”的字符串形式存储的所以查询的时候需要进行拆分
+        //如果保存的时候没有选择新箱子则会把旧箱号复制到新箱号中,所有不会有“|”所以下方需要进行判断
+        list.forEach(detail -> {
+            detail.setNewCarrier(detail.getCurrentCarriers());
+        });
+        return getDataTable(list);
+    }
 }

+ 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;
 
     /**
@@ -65,6 +64,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);
@@ -73,29 +77,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);

+ 112 - 40
src/main/java/cn/ezhizao/project/business/controller/BizReturnReceiptController.java

@@ -38,8 +38,7 @@ import java.util.stream.Collectors;
  */
 @RestController
 @RequestMapping("/business/returnReceipt")
-public class BizReturnReceiptController extends BaseController
-{
+public class BizReturnReceiptController extends BaseController {
     @Resource
     private IBizReturnReceiptService bizReturnReceiptService;
     @Resource
@@ -54,25 +53,27 @@ public class BizReturnReceiptController extends BaseController
     private RedisCache redisCache;
     @Resource
     HttpServletRequest request;
+    @Resource
+    private IBizDayworkCarrierService bizDayworkCarrierService;
 
     /**
      * 生成pdf
      */
     @Autowired
     private FreeMarkerConfigurer freeMarkerConfigurer;
+
     /**
      * 查询收回单主
      */
     @PreAuthorize("@ss.hasPermi('business:returnReceipt:list')")
     @Log(title = "外协收回单查询", businessType = BusinessType.SELECT)
     @GetMapping("/list")
-    public TableDataInfo list(BizReturnReceipt bizReturnReceipt) throws NoSuchFieldException, IllegalAccessException
-    {
-        if(bizReturnReceipt.getStartTime()!=null) {
-            bizReturnReceipt.setStartTime(bizReturnReceipt.getStartTime()+ " 00:00:00");
+    public TableDataInfo list(BizReturnReceipt bizReturnReceipt) throws NoSuchFieldException, IllegalAccessException {
+        if (bizReturnReceipt.getStartTime() != null) {
+            bizReturnReceipt.setStartTime(bizReturnReceipt.getStartTime() + " 00:00:00");
         }
-        if(bizReturnReceipt.getEndTime()!=null) {
-            bizReturnReceipt.setEndTime(bizReturnReceipt.getEndTime()+ " 23:59:59");
+        if (bizReturnReceipt.getEndTime() != null) {
+            bizReturnReceipt.setEndTime(bizReturnReceipt.getEndTime() + " 23:59:59");
         }
         final String supplierId = request.getHeader("tenantId");
         bizReturnReceipt.setSupplierId(Long.parseLong(supplierId));
@@ -83,16 +84,16 @@ public class BizReturnReceiptController extends BaseController
 
     /**
      * 导出收回单主
-带箱方式,是整单的。如果换新箱子,明细中,都需要更换箱子列表
+     * 带箱方式,是整单的。如果换新箱子,明细中,都需要更换箱子列表
      */
     @PreAuthorize("@ss.hasPermi('business:returnReceipt:export')")
-    @Log(title = "外协收回单导出", businessType = BusinessType.EXPORT)
+    @Log(title = "收回单主带箱方式,是整单的。如果换新箱子,明细中,都需要更换箱子", businessType = BusinessType.EXPORT)
     @PostMapping("/export")
     public void export(HttpServletResponse response, BizReturnReceipt bizReturnReceipt) throws NoSuchFieldException, IllegalAccessException, IOException {
         bizReturnReceipt = bizReturnReceiptService.getById(bizReturnReceipt);
         BizSupplier supplier = bizSupplierService.query().eq("id", bizReturnReceipt.getSupplierId()).list().get(0);
         bizReturnReceipt.setSupplierCode(supplier.getCode());
-        List<BizReturnReceiptDetail> returnReceiptDetailList = bizReturnReceiptDetailService.query().eq("master_id",bizReturnReceipt.getId()).orderByAsc("process_step_number").list();
+        List<BizReturnReceiptDetail> returnReceiptDetailList = bizReturnReceiptDetailService.query().eq("master_id", bizReturnReceipt.getId()).orderByAsc("process_step_number").list();
         //按照批次分组,一个批次合并成一条
         List<String> lotCodeList = returnReceiptDetailList.stream()
                 .map(BizReturnReceiptDetail::getLotCode)
@@ -113,7 +114,7 @@ public class BizReturnReceiptController extends BaseController
             info.setProductDescription(detailList.get(0).getProductDescription());
             info.setOutsourceDetailId(detailList.get(0).getOutsourceDetailId());
             info.setLotCode(lotCode);
-            info.setReceiptNum(detailList.get(detailList.size() -1).getReceiptNum());
+            info.setReceiptNum(detailList.get(detailList.size() - 1).getReceiptNum());
             info.setNewCarrier(detailList.get(0).getNewCarrier());
             info.setNewCarrierCount(detailList.get(0).getNewCarrierCount());
             info.setRemark(detailList.get(0).getRemark());
@@ -124,8 +125,7 @@ public class BizReturnReceiptController extends BaseController
     }
     @Log(title = "修改外协收回单提交状态", businessType = BusinessType.UPDATE)
     @PutMapping("/updateReceiptSubmitStatus")
-    public AjaxResult updateReceiptSubmitStatus(@RequestBody BizReturnReceipt bizReturnReceipt)
-    {
+    public AjaxResult updateReceiptSubmitStatus(@RequestBody BizReturnReceipt bizReturnReceipt) {
         BizReturnReceipt returnReceipt = bizReturnReceiptService.query().eq("id", bizReturnReceipt.getId()).one();
         returnReceipt.setIsSubmit(0);
         bizReturnReceiptService.updateById(returnReceipt);
@@ -134,14 +134,13 @@ public class BizReturnReceiptController extends BaseController
 
     /**
      * 新增外协单主
-     带箱方式,是整单的。如果换新箱子,明细中,都需要更换箱子
+     * 带箱方式,是整单的。如果换新箱子,明细中,都需要更换箱子
      */
     @PreAuthorize("@ss.hasPermi('business:returnReceipt:add')")
     @Log(title = "外协收回单新增", businessType = BusinessType.UPDATE)
     @Transactional
     @PostMapping
-    public AjaxResult addReceipt(@RequestBody BizReturnReceipt bizReturnReceipt)
-    {
+    public AjaxResult addReceipt(@RequestBody BizReturnReceipt bizReturnReceipt) {
         final String supplierId = request.getHeader("tenantId");
         bizReturnReceipt.setSupplierId(Long.parseLong(supplierId));
         //若有id,则说将之前的明细删除不生成新的单号
@@ -154,18 +153,18 @@ public class BizReturnReceiptController extends BaseController
             String codeValue;
             String codeType = "returnReceiveCode";
             //查询redis中外协单号的值
-            String previous = redisCache.hasKey(codeType) ? redisCache.getCacheObject(codeType) :"";
+            String previous = redisCache.hasKey(codeType) ? redisCache.getCacheObject(codeType) : "";
             //若不存在,则直接存入
             if (previous.isEmpty()) {
                 List<BizReturnReceipt> returnReceiptList = bizReturnReceiptService.getAllList();
-                if(!returnReceiptList.isEmpty()){
-                    codeValue=returnReceiptList.get(0).getFormCode();
+                if (!returnReceiptList.isEmpty()) {
+                    codeValue = returnReceiptList.get(0).getFormCode();
                     int lastFourDigits = Integer.parseInt(codeValue.substring(5, 10));
                     lastFourDigits += 1; // 加1
                     codeValue = codeValue.substring(0, 5) + String.format("%05d", lastFourDigits);
-                    previous=codeValue;
-                }else {
-                    previous = ("SHD" + formattedDate + "00001");
+                    previous = codeValue;
+                } else {
+                    previous = ("SHD" + formattedDate + "000001");
                 }
             } else {
                 codeValue = previous;
@@ -206,20 +205,20 @@ public class BizReturnReceiptController extends BaseController
 //        return success(bizReturnReceiptDetailService.saveBatch(bizReturnReceipt.getDetails()));
         return success(bizReturnReceiptDetailService.saveBatch(bizReturnReceipt.getDetailInfo()));
     }
+
     /**
      * 修改外协单主
-     带箱方式,是整单的。如果换新箱子,明细中,都需要更换箱子
+     * 带箱方式,是整单的。如果换新箱子,明细中,都需要更换箱子
      */
     @PreAuthorize("@ss.hasPermi('business:returnReceipt:edit')")
     @Log(title = "外协收回单修改", businessType = BusinessType.UPDATE)
     @Transactional
     @PutMapping
-    public AjaxResult updateReceipt(@RequestBody BizReturnReceipt bizReturnReceipt)
-    {
+    public AjaxResult updateReceipt(@RequestBody BizReturnReceipt bizReturnReceipt) {
         //向收回单主表存
         bizReturnReceiptService.updateById(bizReturnReceipt);
         //向收回单明细表存
-        List<BizReturnReceiptDetail> oldList = bizReturnReceiptDetailService.query().eq("master_id",bizReturnReceipt.getId()).list();
+        List<BizReturnReceiptDetail> oldList = bizReturnReceiptDetailService.query().eq("master_id", bizReturnReceipt.getId()).list();
         bizReturnReceipt.getDetailInfo().stream()
                 .forEach(bizReturnReceiptDetail -> {
                     bizReturnReceiptDetail.setMasterId(bizReturnReceipt.getId());
@@ -228,7 +227,7 @@ public class BizReturnReceiptController extends BaseController
                     bizReturnReceiptDetail.setSupplierName(bizReturnReceipt.getSupplierName());
                     bizReturnReceiptDetail.setFormDate(bizReturnReceipt.getFormDate());
                 });
-        saveOrUpdateBatch(bizReturnReceiptDetailService,bizReturnReceipt.getDetailInfo(),oldList);
+        saveOrUpdateBatch(bizReturnReceiptDetailService, bizReturnReceipt.getDetailInfo(), oldList);
 //        bizReturnReceipt.getDetails().stream()
 //                .forEach(bizReturnReceiptDetail -> {
 //                    bizReturnReceiptDetail.setMasterId(bizReturnReceipt.getId());
@@ -240,14 +239,14 @@ public class BizReturnReceiptController extends BaseController
 //        saveOrUpdateBatch(bizReturnReceiptDetailService,bizReturnReceipt.getDetails(),oldList);
         return success();
     }
+
     /**
      * 获取收回单主 带箱方式,是整单的。如果换新箱子,明细中,都需要更换箱子详细信息
      */
     @PreAuthorize("@ss.hasPermi('business:returnReceipt:query')")
     @Log(title = "外协收回单查询详细信息", businessType = BusinessType.SELECT)
     @GetMapping(value = "/{id}")
-    public AjaxResult getInfo(@PathVariable("id") Long id)
-    {
+    public AjaxResult getInfo(@PathVariable("id") Long id) {
         // 根据 id 获取到收回订单
         BizReturnReceipt returnReceipt = bizReturnReceiptService.getById(id);
 
@@ -255,6 +254,10 @@ public class BizReturnReceiptController extends BaseController
         List<BizReturnReceiptDetail> returnReceiptDetails = bizReturnReceiptDetailService.query()
                 .eq("master_id", id)
                 .list();
+        List<BizDayworkCarrier> carriers = bizDayworkCarrierService.query().eq("is_changed", 0).in("daywork_id", returnReceiptDetails.stream().map(BizReturnReceiptDetail::getDayworkId).collect(Collectors.toList())).list();
+        returnReceiptDetails.forEach(item -> {
+            item.setUnbind(carriers.stream().anyMatch(t -> t.getDayworkId().equals(item.getDayworkId())) ? 0 : 1);
+        });
 
         // 将得到的收回明细的id,组合成一个集合,用于查询这个订单下的,所有收回出来的工序,
         // 这里得到的工序清单,是混合的,并没有根据各自对应的明细,进行分组,仅仅是获取全部,为后续分组做准备
@@ -274,7 +277,7 @@ public class BizReturnReceiptController extends BaseController
         for (String lotCode : lotCodeList) {
             groupedByLotCode.put(lotCode, returnReceiptDetails.stream()
                     .filter(record -> record.getLotCode().equals(lotCode))
-                            .sorted(Comparator.comparing(BizReturnReceiptDetail::getProcessStepNumber))
+                    .sorted(Comparator.comparing(BizReturnReceiptDetail::getProcessStepNumber))
                     .collect(Collectors.toList()));
         }
         List<BizReturnReceiptDetail> details = new ArrayList<>();
@@ -286,9 +289,10 @@ public class BizReturnReceiptController extends BaseController
             info.setOutsourceDetailId(detailList.get(0).getOutsourceDetailId());
             info.setLotCode(lotCode);
             info.setProductNum(detailList.get(0).getProductNum());
-            info.setReceiptNum(detailList.get(detailList.size() -1).getReceiptNum());
+            info.setReceiptNum(detailList.get(detailList.size() - 1).getReceiptNum());
             info.setNewCarrier(detailList.get(0).getNewCarrier());
             info.setRemark(detailList.get(0).getRemark());
+            info.setUnbind(detailList.get(0).getUnbind());
             info.setProcessAlias(detailProcesses.stream()
                     .filter(dp -> dp.getDetailId().equals(detailList.get(0).getOutsourceDetailId()))
                     .sorted(Comparator.comparing((BizOutsourcedOrderDetailProcess::getProcessStepNumber)))
@@ -315,16 +319,16 @@ public class BizReturnReceiptController extends BaseController
 
         return success(returnReceipt);
     }
+
     /**
      * 删除外协单主
-     带箱方式,是整单的。如果换新箱子,明细中,都需要更换箱子
+     * 带箱方式,是整单的。如果换新箱子,明细中,都需要更换箱子
      */
     @PreAuthorize("@ss.hasPermi('business:returnReceipt:remove')")
     @Log(title = "外协收回单删除", businessType = BusinessType.DELETE)
     @Transactional
     @DeleteMapping("/{ids}")
-    public AjaxResult remove(@PathVariable List<Long> ids)
-    {
+    public AjaxResult remove(@PathVariable List<Long> ids) {
         bizReturnReceiptService.removeBatchByIds(ids);
         List<BizReturnReceiptDetail> bizReturnReceiptDetailList = bizReturnReceiptDetailService.query().in("master_id", ids).list();
         List<Long> bizReturnReceiptDetailIds = bizReturnReceiptDetailList.stream().map(BizReturnReceiptDetail::getId).collect(Collectors.toList());
@@ -338,7 +342,7 @@ public class BizReturnReceiptController extends BaseController
 
         /** 正常打印 **/
         //查询回收单数据
-        bizReturnReceipt=bizReturnReceiptService.getById(bizReturnReceipt);
+        bizReturnReceipt = bizReturnReceiptService.getById(bizReturnReceipt);
         BizSupplier supplier = bizSupplierService.query().eq("id", bizReturnReceipt.getSupplierId()).list().get(0);
         bizReturnReceipt.setSupplierCode(supplier.getCode());
         //查询回收单明细
@@ -408,8 +412,6 @@ public class BizReturnReceiptController extends BaseController
                         ));
 
 
-
-
         //因为新箱子保存的时候,是用“id|code,id|code”的字符串形式存储的所以查询的时候需要进行拆分
         //如果保存的时候没有选择新箱子则会把旧箱号复制到新箱号中,所有不会有“|”所以下方需要进行判断
         allDetailsStream.forEach(detail -> {
@@ -553,7 +555,7 @@ public class BizReturnReceiptController extends BaseController
 
 
         Map<String, Object> paramMap = new HashMap<>();
-        paramMap.put("returnReceipt" , bizReturnReceipt);
+        paramMap.put("returnReceipt", bizReturnReceipt);
         Writer out = new StringWriter();
         //获取模板地址
         Template template = freeMarkerConfigurer.getConfiguration().getTemplate("returnReceiptPdf.html");
@@ -563,7 +565,7 @@ public class BizReturnReceiptController extends BaseController
         String templateContent = out.toString();
         response.setCharacterEncoding("UTF-8");
         response.setContentType("application/pdf");
-        String fileName ="外协收回明细";
+        String fileName = "外协收回明细";
         response.setHeader("Content-Disposition", "filename=" + new String(fileName.getBytes()));
         byte[] resources = PdfUtil.html2Pdf(templateContent);
         ServletOutputStream outputStream = response.getOutputStream();
@@ -602,4 +604,74 @@ public class BizReturnReceiptController extends BaseController
             return AjaxResult.success(message.get(), false);
         }
     }
+
+    @Log(title = "获取内部外协详情")
+    @PreAuthorize("@ss.hasPermi('business:returnReceipt:query')")
+    @GetMapping(value = "/interReceipt/{id}")
+    public AjaxResult getInterInfo(@PathVariable("id") Long id) {
+        // 根据 id 获取到收回订单
+        BizReturnReceipt returnReceipt = bizReturnReceiptService.getById(id);
+
+        // 根据收回订单id,获取到该收回订单的所有明细
+        List<BizReturnReceiptDetail> returnReceiptDetails = bizReturnReceiptDetailService.getListByReceiptId(id);
+
+        // 将得到的收回明细的id,组合成一个集合,用于查询这个订单下的,所有收回出来的工序,
+        // 这里得到的工序清单,是混合的,并没有根据各自对应的明细,进行分组,仅仅是获取全部,为后续分组做准备
+        List<Long> detailIds = returnReceiptDetails.stream()
+                .map(BizReturnReceiptDetail::getOutsourceDetailId)
+                .collect(Collectors.toList());
+        List<BizOutsourcedOrderDetailProcess> detailProcesses = bizOutsourcedOrderDetailProcessService.query()
+                .in("detail_id", detailIds)
+                .orderByAsc(Arrays.asList("detail_id", "process_step_number"))
+                .list();
+        //按照批次分组,一个批次合并成一条
+        List<String> lotCodeList = returnReceiptDetails.stream()
+                .map(BizReturnReceiptDetail::getLotCode)
+                .distinct()
+                .collect(Collectors.toList());
+        Map<String, List<BizReturnReceiptDetail>> groupedByLotCode = new LinkedHashMap<>();
+        for (String lotCode : lotCodeList) {
+            groupedByLotCode.put(lotCode, returnReceiptDetails.stream()
+                    .filter(record -> record.getLotCode().equals(lotCode))
+                    .sorted(Comparator.comparing(BizReturnReceiptDetail::getProcessStepNumber))
+                    .collect(Collectors.toList()));
+        }
+        List<BizReturnReceiptDetail> details = new ArrayList<>();
+        for (Map.Entry<String, List<BizReturnReceiptDetail>> entry : groupedByLotCode.entrySet()) {
+            BizReturnReceiptDetail info = new BizReturnReceiptDetail();
+            String lotCode = entry.getKey();
+            List<BizReturnReceiptDetail> detailList = entry.getValue();
+            info.setProductDescription(detailList.get(0).getProductDescription());
+            info.setOutsourceDetailId(detailList.get(0).getOutsourceDetailId());
+            info.setLotCode(lotCode);
+            info.setProductNum(detailList.get(0).getProductNum());
+            info.setReceiptNum(detailList.get(detailList.size() - 1).getReceiptNum());
+            info.setNewCarrier(detailList.get(0).getNewCarrier());
+            info.setRemark(detailList.get(0).getRemark());
+            info.setProcessAlias(detailProcesses.stream()
+                    .filter(dp -> dp.getDetailId().equals(detailList.get(0).getOutsourceDetailId()))
+                    .sorted(Comparator.comparing((BizOutsourcedOrderDetailProcess::getProcessStepNumber)))
+                    .map(BizOutsourcedOrderDetailProcess::getProcessAlias)
+                    .collect(Collectors.joining(",")));
+            details.add(info);
+        }
+//        // 遍历明细,将对应的工序,与订单明细进行匹配
+//        returnReceiptDetails.forEach(item -> {
+//            // 根据明细的id,获取到该明细对应的收回工序,并将得到的工序,组成中文逗号分割的字符串
+//            String processNames = detailProcesses.stream()
+//                    .filter(dp -> dp.getDetailId().equals(item.getOutsourceDetailId()))
+//                    .sorted(Comparator.comparing((BizOutsourcedOrderDetailProcess::getProcessStepNumber)))
+//                    .map(BizOutsourcedOrderDetailProcess::getProcessAlias)
+//                    .collect(Collectors.joining(","));
+//
+//            item.setProcessNames(processNames);
+//        });
+
+        // 将收回明细赋值给收回订单
+        returnReceipt.setDetailInfo(returnReceiptDetails);
+        returnReceipt.setDetails(details);
+
+
+        return success(returnReceipt);
+    }
 }

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

@@ -164,4 +164,11 @@ public class BizOutsourcedOrderDetail extends BaseEntity
 
     @TableField(exist = false)
     private String furnaceNumber;
+    @TableField(exist = false)
+    private Integer isInnerOutsource;
+    @TableField(exist = false)
+    @ApiModelProperty("是否解绑")
+    private Integer unbind;
+    @TableField(exist = false)
+    private String currentCarriers;
 }

+ 3 - 1
src/main/java/cn/ezhizao/project/business/domain/BizReturnReceipt.java

@@ -50,7 +50,9 @@ public class BizReturnReceipt extends BaseEntity
     @Excel(name = "外协商名称")
     @ApiModelProperty(value = "外协商名称")
     private String supplierName;
-
+    /** 收回类型 */
+    @ApiModelProperty(value = "收回类型 0 - 默认 1 - 内部外协收回")
+    private Integer category;
     /** 对应的收回明细 **/
     @TableField(exist = false)
     private List<BizReturnReceiptDetail> details;

+ 3 - 0
src/main/java/cn/ezhizao/project/business/domain/BizReturnReceiptDetail.java

@@ -139,5 +139,8 @@ public class BizReturnReceiptDetail extends BaseEntity
     //发出总数量 只在打印时用到
     @TableField(exist = false)
     private Integer sum;
+    @ApiModelProperty("是否解绑")
+    @TableField(exist = false)
+    private Integer unbind;
 
 }

+ 3 - 0
src/main/java/cn/ezhizao/project/business/domain/BizSupplier.java

@@ -59,4 +59,7 @@ public class BizSupplier extends BaseEntity {
     @Excel(name = "备注")
     @ApiModelProperty(value = "备注")
     private String remark;
+
+    @ApiModelProperty("内部外协")
+    private Integer isInnerOutsource;
 }

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

@@ -22,6 +22,7 @@ public interface BizOutsourcedOrderDetailMapper extends BaseMapper<BizOutsourced
      */
     public List<BizOutsourcedOrderDetail> getList(BizOutsourcedOrderDetail bizOutsourcedOrderDetail);
 
+
     public List<BizOutsourcedOrderDetail> getFinishedOutsourceDetailList(BizOutsourcedOrderDetail bizOutsourcedOrderDetail);
 
     /**
@@ -38,4 +39,6 @@ public interface BizOutsourcedOrderDetailMapper extends BaseMapper<BizOutsourced
      * @return 删除结果
     */
     public int physicalDelete(BizOutsourcedOrderDetail bizOutsourcedOrderDetail);
+
+    public List<Long> getIdsForInterReturn(BizOutsourcedOrderDetail bizOutsourcedOrderDetail);
 }

+ 6 - 2
src/main/java/cn/ezhizao/project/business/service/IBizOutsourcedOrderDetailService.java

@@ -1,6 +1,7 @@
 package cn.ezhizao.project.business.service;
 
 import java.util.List;
+
 import com.baomidou.mybatisplus.extension.service.IService;
 import cn.ezhizao.project.business.domain.BizOutsourcedOrderDetail;
 
@@ -10,8 +11,7 @@ import cn.ezhizao.project.business.domain.BizOutsourcedOrderDetail;
  * @author 庄德政
  * date    2024-04-26
  */
-public interface IBizOutsourcedOrderDetailService extends IService<BizOutsourcedOrderDetail>
-{
+public interface IBizOutsourcedOrderDetailService extends IService<BizOutsourcedOrderDetail> {
     /**
      * 查询外协单从列表
      *
@@ -19,6 +19,7 @@ public interface IBizOutsourcedOrderDetailService extends IService<BizOutsourced
      * @return 外协单从集合
      */
     List<BizOutsourcedOrderDetail> getList(BizOutsourcedOrderDetail bizOutsourcedOrderDetail);
+
     List<BizOutsourcedOrderDetail> getFinishedOutsourceDetailList(BizOutsourcedOrderDetail bizOutsourcedOrderDetail);
 
     /**
@@ -29,8 +30,11 @@ public interface IBizOutsourcedOrderDetailService extends IService<BizOutsourced
      */
     List<BizOutsourcedOrderDetail> getListForReceipt(BizOutsourcedOrderDetail bizOutsourcedOrderDetail);
 
+    List<Long> getIdsForInterReturn(BizOutsourcedOrderDetail bizOutsourcedOrderDetail);
+
     /**
      * 物理删除
+     *
      * @param bizOutsourcedOrderDetail 待删除
      * @return 删除结果
      */

+ 22 - 9
src/main/java/cn/ezhizao/project/business/service/impl/BizOutsourcedOrderDetailServiceImpl.java

@@ -2,6 +2,7 @@ package cn.ezhizao.project.business.service.impl;
 
 import java.util.List;
 import javax.annotation.Resource;
+
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.stereotype.Service;
 import cn.ezhizao.project.business.mapper.BizOutsourcedOrderDetailMapper;
@@ -15,8 +16,7 @@ import cn.ezhizao.project.business.service.IBizOutsourcedOrderDetailService;
  * @date 2024-04-26
  */
 @Service
-public class BizOutsourcedOrderDetailServiceImpl  extends ServiceImpl<BizOutsourcedOrderDetailMapper, BizOutsourcedOrderDetail> implements IBizOutsourcedOrderDetailService
-{
+public class BizOutsourcedOrderDetailServiceImpl extends ServiceImpl<BizOutsourcedOrderDetailMapper, BizOutsourcedOrderDetail> implements IBizOutsourcedOrderDetailService {
     @Resource
     private BizOutsourcedOrderDetailMapper bizOutsourcedOrderDetailMapper;
 
@@ -27,13 +27,12 @@ public class BizOutsourcedOrderDetailServiceImpl  extends ServiceImpl<BizOutsour
      * @return 外协单从
      */
     @Override
-    public List<BizOutsourcedOrderDetail> getList(BizOutsourcedOrderDetail bizOutsourcedOrderDetail)
-    {
+    public List<BizOutsourcedOrderDetail> getList(BizOutsourcedOrderDetail bizOutsourcedOrderDetail) {
         return bizOutsourcedOrderDetailMapper.getList(bizOutsourcedOrderDetail);
     }
+
     @Override
-    public List<BizOutsourcedOrderDetail> getFinishedOutsourceDetailList(BizOutsourcedOrderDetail bizOutsourcedOrderDetail)
-    {
+    public List<BizOutsourcedOrderDetail> getFinishedOutsourceDetailList(BizOutsourcedOrderDetail bizOutsourcedOrderDetail) {
         return bizOutsourcedOrderDetailMapper.getFinishedOutsourceDetailList(bizOutsourcedOrderDetail);
     }
 
@@ -44,17 +43,31 @@ public class BizOutsourcedOrderDetailServiceImpl  extends ServiceImpl<BizOutsour
      * @return 外协单从
      */
     @Override
-    public List<BizOutsourcedOrderDetail> getListForReceipt(BizOutsourcedOrderDetail bizOutsourcedOrderDetail)
-    {
+    public List<BizOutsourcedOrderDetail> getListForReceipt(BizOutsourcedOrderDetail bizOutsourcedOrderDetail) {
         return bizOutsourcedOrderDetailMapper.getListForReceipt(bizOutsourcedOrderDetail);
     }
 
+    /**
+     * 获取内部报工未完成的外协明细id 所有未完成最后一道外协工序的内部报工都是未完成的外协
+     * @param bizOutsourcedOrderDetail
+     * @return
+     */
+    @Override
+    public List<Long> getIdsForInterReturn(BizOutsourcedOrderDetail bizOutsourcedOrderDetail) {
+        return bizOutsourcedOrderDetailMapper.getIdsForInterReturn(bizOutsourcedOrderDetail);
+    }
+
     /**
      * 物理删除
+     *
      * @param bizOutsourcedOrderDetail 待删除
      * @return 删除结果
      */
     @Override
-    public int physicalDelete(BizOutsourcedOrderDetail bizOutsourcedOrderDetail){ return bizOutsourcedOrderDetailMapper.physicalDelete(bizOutsourcedOrderDetail); };
+    public int physicalDelete(BizOutsourcedOrderDetail bizOutsourcedOrderDetail) {
+        return bizOutsourcedOrderDetailMapper.physicalDelete(bizOutsourcedOrderDetail);
+    }
+
+    ;
 
 }

+ 2 - 0
src/main/java/cn/ezhizao/project/system/controller/SysLoginController.java

@@ -106,8 +106,10 @@ public class SysLoginController extends BaseController
         Set<String> roles = new HashSet<>();
         // 权限集合
         Set<String> permissions = permissionService.getMenuPermission(user);
+        BizSupplier supplier = bizSupplierService.getById(user.getSupplierId());
         AjaxResult ajax = AjaxResult.success();
         ajax.put("user", user);
+        ajax.put("supplier", supplier);
         ajax.put("roles", roles);
         ajax.put("permissions", permissions);
         return ajax;

+ 20 - 3
src/main/resources/mybatis/business/BizOutsourcedOrderDetailMapper.xml

@@ -32,7 +32,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </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
+        (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,
+        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
         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
@@ -101,8 +102,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </select>
     <select id="getListForReceipt" parameterType="BizOutsourcedOrderDetail" resultMap="BizOutsourcedOrderDetailResult">
         SELECT
-            t1.*
+            t1.*,
+        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">
@@ -125,10 +129,14 @@ 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>
+            <if test="isInnerOutsource != null "> AND t2.is_inner_outsource = #{isInnerOutsource}</if>
         </trim>
     </select>
 
@@ -141,4 +149,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        <!-- 删除条件为其他外键可以在这里加 -->
         </trim>
     </delete>
+
+    <select id="getIdsForInterReturn" resultType="java.lang.Long" parameterType="cn.ezhizao.project.business.domain.BizOutsourcedOrderDetail">
+        select t1.id from biz_outsourced_order_detail t1 left join biz_outsourced_order t2 on t1.master_id = t2.id
+        <trim prefix=" WHERE" suffix="" suffixOverrides="AND">
+            t1.deleted = 0 and t2.deleted = 0 and t2.is_submit = 1 and not exists (select 1 from biz_daywork_item di where di.deleted = 0 and di.daywork_id = t1.daywork_id and process_step_number = (select process_step_number from biz_outsourced_order_detail_process t3 where t3.detail_id = t1.id and t3.deleted = 0 order by process_step_number desc limit 1) and di.status = 3)
+            <if test="isInnerOutsource != null"> and t2.is_inner_outsource = #{isInnerOutsource}</if>
+            <if test="supplierId != null "> AND t1.supplier_id = #{supplierId}</if>
+        </trim>
+    </select>
 </mapper>

+ 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

+ 3 - 1
src/main/resources/mybatis/business/BizReturnReceiptDetailMapper.xml

@@ -28,7 +28,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </select>
 
     <select id="getListByReceiptId" parameterType="BizReturnReceiptDetail" resultMap="BizReturnReceiptDetailResult">
-        SELECT r.*,f.furnace_number as furnaceNumber  FROM biz_return_receipt_detail r
+        SELECT r.*,f.furnace_number as furnaceNumber,
+        case when (select count(1) from biz_daywork_carrier bdc where daywork_id = r.daywork_id and bdc.deleted = 0 and bdc.is_changed = 0) > 0 then 0 else 1 end as unbind
+        FROM biz_return_receipt_detail r
         LEFT JOIN  biz_furnace_no_info f ON r.daywork_id=f.daywork_id
         <trim prefix=" WHERE" suffix="" suffixOverrides="AND">
             r.deleted = 0

+ 1 - 0
src/main/resources/mybatis/business/BizReturnReceiptMapper.xml

@@ -16,6 +16,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="formCode != null and formCode != ''"> AND t1.form_code LIKE CONCAT('%', #{formCode}, '%')</if>
             <if test="startTime != null ">AND t1.form_date &gt;= #{startTime}</if>
             <if test="endTime != null ">AND t1.form_date &lt;= #{endTime}</if>
+            <if test="category != null ">AND t1.category = #{category}</if>
         </trim>
         order by t1.create_time desc
     </select>