ezhizao_zx 1 год назад
Родитель
Сommit
4d74e6d668

+ 98 - 0
src/main/java/cn/ezhizao/project/business/switchDept/controller/SwitchController.java

@@ -0,0 +1,98 @@
+package cn.ezhizao.project.business.switchDept.controller;
+
+import cn.ezhizao.framework.web.controller.BaseController;
+import cn.ezhizao.framework.web.domain.AjaxResult;
+import cn.ezhizao.project.business.product.domain.*;
+import cn.ezhizao.project.business.product.service.*;
+import cn.ezhizao.project.business.technologicalProcessDetail.domain.BizTechnologicalProcessDetail;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * 临时周转controller
+ *
+ * @author zhuangdezheng
+ * @date 2024-04-20
+ */
+@RestController
+@RequestMapping("/business/switch")
+public class SwitchController extends BaseController {
+    @Resource
+    IBizDayworkService dayworkService;
+    @Resource
+    IBizDayworkItemService dayworkItemService;
+    @Resource
+    IBizDayworkCarrierService dayworkCarrierService;
+    @Resource
+    IBizProductionPlanDetailService productionPlanDetailService;
+    @Resource
+    IBizLotTechnologicalProcessDetailService lotTechnologicalProcessDetailService;
+
+    @PostMapping("/getDayworkByCarrierCode")
+    public AjaxResult getDayworkByCarrierCode(@RequestBody BizDayworkItem bizDayworkItem) {
+        List<BizDayworkCarrier> bizDayworkCarriers = dayworkCarrierService.query().eq("carrier_id", bizDayworkItem.getCarrierId()).eq("is_changed", 0).list();
+        if (bizDayworkCarriers.isEmpty()) {
+            throw new RuntimeException("该载具未绑定任何批次!");
+        }
+        List<BizDaywork> bizDayworks = dayworkService.query().in("id", bizDayworkCarriers.isEmpty()
+                        ?
+                        Collections.singletonList(0L)
+                        :
+                        bizDayworkCarriers.stream()
+                                .map(BizDayworkCarrier::getDayworkId)
+                                .collect(Collectors.toList())
+                )
+                .list();
+        // 判断是否是在当前工段
+        bizDayworks = bizDayworks.stream().filter(v -> v.getDeptId().equals(bizDayworkItem.getDeptId())).collect(Collectors.toList());
+        List<BizDayworkItem> allBizDayworkItem = dayworkItemService.query().in("daywork_id", bizDayworks.isEmpty() ? Collections.singletonList(0L) : bizDayworks.stream().map(BizDaywork::getId).collect(Collectors.toList())).orderByDesc("create_time").list();
+        bizDayworks.forEach(l -> l.setDayworkItemList(allBizDayworkItem.stream().filter(v -> v.getDayworkId().equals(l.getId())).collect(Collectors.toList())));
+        bizDayworks.forEach(l -> l.setDayworkItemList(allBizDayworkItem.stream().filter(v -> v.getDayworkId().equals(l.getId())).collect(Collectors.toList())));
+        List<BizDayworkItem> turnoverItems = new ArrayList<>();
+        for (BizDaywork bizDaywork : bizDayworks) {
+            if (bizDaywork.getDayworkItemList().get(0).getStatus().equals("4")
+                    || bizDaywork.getDayworkItemList().get(0).getStatus().equals("5")
+                    || bizDaywork.getDayworkItemList().get(0).getStatus().equals("7")) {
+                turnoverItems.add(bizDaywork.getDayworkItemList().get(0));
+            }
+        }
+        if (turnoverItems.isEmpty()) {
+            return success(turnoverItems);
+        } else {
+            BizDayworkItem conditions = new BizDayworkItem();
+            conditions.setIds(turnoverItems.stream().map(BizDayworkItem::getId).collect(Collectors.toList()));
+            List<BizDayworkItem> items = dayworkItemService.getList(conditions);
+            //拿到生产计划id
+            List<Long> productionPlanDetailIds = items.stream().map(BizDayworkItem::getProductionPlanDetailId).collect(Collectors.toList());
+            List<BizProductionPlanDetail> bizProductionPlanDetails = productionPlanDetailService.query().in("id", productionPlanDetailIds.isEmpty() ? Collections.singletonList(0L) : productionPlanDetailIds).list();
+            //查找批次id
+            List<Long> LotTechnologicalProcessesIds = items.stream().filter(v -> v.getDaywork().getIsAmend().equals(1) || v.getDaywork().getIsWasteRecycling().equals(1)).map(BizDayworkItem::getTechnologicalProcessId).collect(Collectors.toList());
+            List<BizLotTechnologicalProcessDetail> bizLotTechnologicalProcessDetails = lotTechnologicalProcessDetailService.query().in("lot_technological_process_id", LotTechnologicalProcessesIds.isEmpty() ? Collections.singletonList(0L) : LotTechnologicalProcessesIds).list();
+            for (BizDayworkItem item : items) {
+                //添加产品描述
+                item.setProductDescription(bizProductionPlanDetails.stream().filter(v -> v.getId().equals(item.getProductionPlanDetailId())).collect(Collectors.toList()).get(0).getProductDescription());
+                //如果不是正常批次,则工艺重新取
+                if (item.getDaywork().getIsAmend().equals(1) || item.getDaywork().getIsWasteRecycling().equals(1)) {
+                    List<BizLotTechnologicalProcessDetail> processDetail = bizLotTechnologicalProcessDetails.stream().filter(v -> v.getLotId().equals(item.getLotId())).collect(Collectors.toList());
+                    BizLotTechnologicalProcessDetail process = processDetail.stream().filter(v -> v.getProcessStepNumber().equals(item.getProcessStepNumber())).findFirst().orElse(null);
+                    BizTechnologicalProcessDetail technologicalProcessDetail = new BizTechnologicalProcessDetail();
+                    technologicalProcessDetail.setProcessAlias(process.getProcessAlias());
+                    technologicalProcessDetail.setProcessCode(process.getProcessCode());
+                    technologicalProcessDetail.setProductDescription(process.getProductDescription());
+                    technologicalProcessDetail.setProcessStepNumber(process.getProcessStepNumber());
+                    item.setTechnologicalProcessDetail(technologicalProcessDetail);
+                }
+            }
+            return success(items);
+        }
+    }
+
+}