|
@@ -0,0 +1,254 @@
|
|
|
|
+package cn.ezhizao.project.business.auxiliaryDaywork.controller;
|
|
|
|
+
|
|
|
|
+import cn.ezhizao.framework.web.controller.BaseController;
|
|
|
|
+import cn.ezhizao.framework.web.domain.AjaxResult;
|
|
|
|
+import cn.ezhizao.framework.web.page.TableDataInfo;
|
|
|
|
+import cn.ezhizao.project.business.auxiliaryDaywork.domain.BizAuxiliaryProcess;
|
|
|
|
+import cn.ezhizao.project.business.auxiliaryDaywork.domain.BizDayworkAuxiliaryItem;
|
|
|
|
+import cn.ezhizao.project.business.auxiliaryDaywork.domain.BizDayworkAuxiliaryItemReject;
|
|
|
|
+import cn.ezhizao.project.business.auxiliaryDaywork.service.IBizAuxiliaryProcessService;
|
|
|
|
+import cn.ezhizao.project.business.auxiliaryDaywork.service.IBizDayworkAuxiliaryItemRejectService;
|
|
|
|
+import cn.ezhizao.project.business.auxiliaryDaywork.service.IBizDayworkAuxiliaryItemService;
|
|
|
|
+import cn.ezhizao.project.business.outsource.service.IBizOutsourcedOrderDetailService;
|
|
|
|
+import cn.ezhizao.project.business.process.domain.BizProcess;
|
|
|
|
+import cn.ezhizao.project.business.process.service.IBizProcessService;
|
|
|
|
+import cn.ezhizao.project.business.product.domain.*;
|
|
|
|
+import cn.ezhizao.project.business.product.mapper.BizDayworkItemRejectMapper;
|
|
|
|
+import cn.ezhizao.project.business.product.service.*;
|
|
|
|
+import cn.ezhizao.project.business.resourceGroup.service.IBizProductionResourceGroupDetailService;
|
|
|
|
+import cn.ezhizao.project.business.technologicalProcessDetail.domain.BizTechnologicalProcessDetail;
|
|
|
|
+import cn.ezhizao.project.business.technologicalProcessDetail.service.IBizTechnologicalProcessDetailService;
|
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
|
+import org.springframework.web.bind.annotation.*;
|
|
|
|
+
|
|
|
|
+import javax.annotation.Resource;
|
|
|
|
+import java.text.SimpleDateFormat;
|
|
|
|
+import java.util.*;
|
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
+
|
|
|
|
+/**
|
|
|
|
+ * 辅助工序报工Controller
|
|
|
|
+ *
|
|
|
|
+ * @author ezhizao
|
|
|
|
+ * @date 2024-08-09
|
|
|
|
+ */
|
|
|
|
+@RestController
|
|
|
|
+@RequestMapping("/business/auxiliaryDaywork")
|
|
|
|
+public class BizDayworkAuxiliaryItemController extends BaseController {
|
|
|
|
+ @Resource
|
|
|
|
+ private IBizDayworkService bizDayworkService;
|
|
|
|
+
|
|
|
|
+ @Resource
|
|
|
|
+ private IBizTechnologicalProcessDetailService bizTechnologicalProcessDetailService;
|
|
|
|
+
|
|
|
|
+ @Resource
|
|
|
|
+ private IBizLotTechnologicalProcessDetailService bizTechnologicalAmendDetailService;
|
|
|
|
+
|
|
|
|
+ @Resource
|
|
|
|
+ private IBizOutsourcedOrderDetailService bizOutsourcedOrderDetailService;
|
|
|
|
+
|
|
|
|
+ @Resource
|
|
|
|
+ private IBizDayworkCarrierService bizDayworkCarrierService;
|
|
|
|
+
|
|
|
|
+ @Resource
|
|
|
|
+ private IBizLotTechnologicalProcessDetailService bizLotTechnologicalProcessDetailService;
|
|
|
|
+
|
|
|
|
+ @Resource
|
|
|
|
+ private IBizLotService bizLotService;
|
|
|
|
+
|
|
|
|
+ @Resource
|
|
|
|
+ private IBizProcessService bizProcessService;
|
|
|
|
+ @Resource
|
|
|
|
+ private IBizDayworkItemService bizDayworkItemService;
|
|
|
|
+ @Resource
|
|
|
|
+ private IBizDayworkItemRejectService bizDayworkItemRejectService;
|
|
|
|
+ @Resource
|
|
|
|
+ private IBizCarrierService bizCarrierService;
|
|
|
|
+ @Resource
|
|
|
|
+ private IBizReturnReceiptDetailService bizReturnReceiptDetailService;
|
|
|
|
+ @Resource
|
|
|
|
+ private IBizProductionResourceGroupDetailService bizProductionResourceGroupDetailService;
|
|
|
|
+ @Resource
|
|
|
|
+ private IBizLotTechnologicalProcessService bizLotTechnologicalProcessService;
|
|
|
|
+ @Resource
|
|
|
|
+ private IBizProductionPlanDetailService bizProductionPlanDetailService;
|
|
|
|
+ @Resource
|
|
|
|
+ private IBizProductService bizProductService;
|
|
|
|
+ @Resource
|
|
|
|
+ private IBizDayworkAuxiliaryItemService bizDayworkAuxiliaryItemService;
|
|
|
|
+ @Resource
|
|
|
|
+ private IBizDayworkAuxiliaryItemRejectService bizDayworkAuxiliaryItemRejectService;
|
|
|
|
+ @Resource
|
|
|
|
+ private IBizAuxiliaryProcessService bizAuxiliaryProcessService;
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 查询序检主列表
|
|
|
|
+ */
|
|
|
|
+// @PreAuthorize("@ss.hasPermi('business:inspecion:list')")
|
|
|
|
+ @PostMapping("/list")
|
|
|
|
+ public TableDataInfo list(@RequestBody BizDayworkAuxiliaryItem bizDayworkAuxiliaryItem) throws NoSuchFieldException, IllegalAccessException {
|
|
|
|
+
|
|
|
|
+ if (bizDayworkAuxiliaryItem.getStartTime() != null) {
|
|
|
|
+ Date startTimeDate = bizDayworkAuxiliaryItem.getStartTime();
|
|
|
|
+ // 使用 SimpleDateFormat 格式化 Date 对象为特定格式的字符串
|
|
|
|
+ SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd", Locale.getDefault());
|
|
|
|
+ String time = dateFormat.format(startTimeDate);
|
|
|
|
+
|
|
|
|
+ bizDayworkAuxiliaryItem.setStartTimeString(time + " 00:00:00");
|
|
|
|
+ bizDayworkAuxiliaryItem.setEndTimeString(time + " 23:59:59");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ List<BizDayworkAuxiliaryItem> list = bizDayworkAuxiliaryItemService.getList(bizDayworkAuxiliaryItem);
|
|
|
|
+ return getDataTable(list);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @PostMapping("/getInfoById")
|
|
|
|
+ public AjaxResult getInfoById(@RequestBody BizDayworkAuxiliaryItem bizDayworkAuxiliaryItem) {
|
|
|
|
+ List<BizDayworkAuxiliaryItem> list = bizDayworkAuxiliaryItemService.getList(bizDayworkAuxiliaryItem);
|
|
|
|
+ BizDayworkAuxiliaryItem item = list.isEmpty() ? null : list.get(0);
|
|
|
|
+ if (item != null) {
|
|
|
|
+ BizDaywork bizDaywork = bizDayworkService.getById(item.getDayworkId());
|
|
|
|
+ item.setDaywork(bizDaywork);
|
|
|
|
+ BizProcess bizProcess = bizProcessService.getById(item.getProcessId());
|
|
|
|
+ item.setProcess(bizProcess);
|
|
|
|
+ BizProduct bizProduct = bizProductService.getById(bizDayworkAuxiliaryItem.getProductId());
|
|
|
|
+ item.setProduct(bizProduct);
|
|
|
|
+ item.setAuxiliaryProcess(bizAuxiliaryProcessService.getById(item.getAuxiliaryProcessId()));
|
|
|
|
+ BizTechnologicalProcessDetail bizTechnologicalProcessDetail = bizTechnologicalProcessDetailService.getById(item.getTechnologicalProcessDetailId());
|
|
|
|
+ item.setTechnologicalProcessDetail(bizTechnologicalProcessDetail);
|
|
|
|
+ List<BizDayworkAuxiliaryItemReject> bizDayworkAuxiliaryItemRejects = bizDayworkAuxiliaryItemRejectService.query().eq("daywork_auxiliary_item_id", item.getId()).list();
|
|
|
|
+ List<BizDayworkItem> dayworkItems = bizDayworkItemService.query().eq("daywork_id", item.getDayworkId()).eq("technological_process_detail_id", item.getTechnologicalProcessDetailId()).list();
|
|
|
|
+ bizDayworkAuxiliaryItemRejects.forEach(v -> {
|
|
|
|
+ v.setDayworkItem(dayworkItems.stream().filter(v1 -> v1.getId().equals(v.getDayworkItemId())).findFirst().orElse(new BizDayworkItem()));
|
|
|
|
+ });
|
|
|
|
+ item.setRejectList(bizDayworkAuxiliaryItemRejects);
|
|
|
|
+ }
|
|
|
|
+ return AjaxResult.success(item);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @PostMapping("/getInfoByCarrierCode")
|
|
|
|
+ public AjaxResult getInfoByCarrierCode(@RequestBody BizDayworkAuxiliaryItem bizDayworkAuxiliaryItem) {
|
|
|
|
+ BizCarrier bizCarrier = bizCarrierService.query().eq("code", bizDayworkAuxiliaryItem.getCarrierCode()).one();
|
|
|
|
+ List<BizDayworkCarrier> bizDayworkCarriers = bizDayworkCarrierService.query().eq("carrier_id", bizCarrier.getId()).eq("is_changed", 0).list();
|
|
|
|
+ List<BizDaywork> bizDayworks = bizDayworkService.query().in("id", bizDayworkCarriers.isEmpty() ? Collections.singletonList(0L) : bizDayworkCarriers.stream().map(BizDayworkCarrier::getDayworkId).collect(Collectors.toList())).list();
|
|
|
|
+ List<BizDayworkCarrier> carriers = bizDayworkCarrierService.query().eq("is_changed", 0).in("daywork_id", bizDayworks.isEmpty() ? Collections.singletonList(0L) : bizDayworks.stream().map(BizDaywork::getId).collect(Collectors.toList())).list();
|
|
|
|
+ List<BizDayworkItem> bizDayworkItems = bizDayworkItemService.query().in("daywork_id", bizDayworks.isEmpty() ? Collections.singletonList(0L) : bizDayworks.stream().map(BizDaywork::getId).collect(Collectors.toList())).list();
|
|
|
|
+ List<BizProduct> bizProducts = bizProductService.query().in("id", bizDayworks.isEmpty() ?Collections.singletonList(0L) : bizDayworks.stream().map(BizDaywork::getProductId).collect(Collectors.toList())).list();
|
|
|
|
+ bizDayworks.forEach(l -> {
|
|
|
|
+ BizProduct product = bizProducts.stream().filter(v -> v.getId().equals(l.getProductId())).findFirst().orElse(new BizProduct());
|
|
|
|
+ l.setDayworkItemList(bizDayworkItems.stream().filter(v -> v.getDayworkId().equals(l.getId())).sorted(Comparator.comparing(BizDayworkItem::getCreateTime).reversed()).collect(Collectors.toList()));
|
|
|
|
+ l.setDayworkCarriers(carriers.stream().filter(v -> v.getDayworkId().equals(l.getId())).collect(Collectors.toList()));
|
|
|
|
+ l.setProcessSequence(new ArrayList<>());
|
|
|
|
+ l.setAllCarrierName(l.getDayworkCarriers().stream().map(BizDayworkCarrier::getCarrierCode).collect(Collectors.joining(",")));
|
|
|
|
+ l.setCarrierCode(bizCarrier.getCode());
|
|
|
|
+ l.setProductDescription(product.getDescription());
|
|
|
|
+
|
|
|
|
+ if (l.getIsAmend().equals(1) || l.getIsWasteRecycling().equals(1)) {
|
|
|
|
+ List<BizLotTechnologicalProcessDetail> technologicalProcessDetails = bizLotTechnologicalProcessDetailService.query().in("id", l.getDayworkItemList().isEmpty() ? Collections.singletonList(0L) : l.getDayworkItemList().stream().map(BizDayworkItem::getTechnologicalProcessDetailId).collect(Collectors.toList())).list();
|
|
|
|
+ technologicalProcessDetails.forEach(v -> {
|
|
|
|
+ BizProcess process = new BizProcess(v);
|
|
|
|
+ l.getProcessSequence().add(process);
|
|
|
|
+ });
|
|
|
|
+ } else {
|
|
|
|
+ List<BizTechnologicalProcessDetail> technologicalProcessDetails = bizTechnologicalProcessDetailService.query().in("id", l.getDayworkItemList().isEmpty() ? Collections.singletonList(0L) : l.getDayworkItemList().stream().map(BizDayworkItem::getTechnologicalProcessDetailId).collect(Collectors.toList())).list();
|
|
|
|
+ technologicalProcessDetails.forEach(v -> {
|
|
|
|
+ BizProcess process = new BizProcess(v);
|
|
|
|
+ l.getProcessSequence().add(process);
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+ l.getProcessSequence().sort(Comparator.comparing(BizProcess::getProcessStepNumber));
|
|
|
|
+ });
|
|
|
|
+ return success(bizDayworks);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @GetMapping("/getProcesses")
|
|
|
|
+ public AjaxResult getProcesses() {
|
|
|
|
+ List<BizAuxiliaryProcess> bizProcesses = bizAuxiliaryProcessService.query().list();
|
|
|
|
+ return success(bizProcesses);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @PostMapping("/save")
|
|
|
|
+ @Transactional
|
|
|
|
+ public AjaxResult save (@RequestBody BizDayworkAuxiliaryItem bizDayworkAuxiliaryItem) {
|
|
|
|
+ bizDayworkAuxiliaryItem.setDayworkId(bizDayworkAuxiliaryItem.getDaywork().getId());
|
|
|
|
+ bizDayworkAuxiliaryItem.setStartTime(new Date());
|
|
|
|
+// List<BizDayworkItem> item = bizDayworkAuxiliaryItem.getDaywork().getDayworkItemList();
|
|
|
|
+ bizDayworkAuxiliaryItem.setTenantId(getLoginUser().getTenantId());
|
|
|
|
+ bizDayworkAuxiliaryItem.setProductionPlanId(bizDayworkAuxiliaryItem.getDaywork().getProductionPlanId());
|
|
|
|
+ bizDayworkAuxiliaryItem.setProductionPlanDetailId(bizDayworkAuxiliaryItem.getDaywork().getProductionPlanDetailId());
|
|
|
|
+ bizDayworkAuxiliaryItem.setProductionPlanDetailSubDetailId(bizDayworkAuxiliaryItem.getDaywork().getProductionPlanDetailSubDetailId());
|
|
|
|
+ bizDayworkAuxiliaryItem.setLotId(bizDayworkAuxiliaryItem.getDaywork().getLotId());
|
|
|
|
+ bizDayworkAuxiliaryItem.setLotCode(bizDayworkAuxiliaryItem.getDaywork().getLotCode());
|
|
|
|
+ bizDayworkAuxiliaryItem.setTechnologicalProcessId(bizDayworkAuxiliaryItem.getDaywork().getTechnologicalProcessId());
|
|
|
|
+ bizDayworkAuxiliaryItem.setStatus("0");
|
|
|
|
+ bizDayworkAuxiliaryItem.setTenantId(getLoginUser().getTenantId());
|
|
|
|
+ bizDayworkAuxiliaryItem.setProductId(bizDayworkAuxiliaryItem.getDaywork().getProductId());
|
|
|
|
+ List<BizDayworkAuxiliaryItemReject> rejects = new ArrayList<>();
|
|
|
|
+ List<BizDayworkItem> items = bizDayworkItemService.query().eq("daywork_id", bizDayworkAuxiliaryItem.getDayworkId()).eq("technological_process_detail_id", bizDayworkAuxiliaryItem.getTechnologicalProcessDetailId()).lt("status", "4").list();
|
|
|
|
+ bizDayworkAuxiliaryItemService.save(bizDayworkAuxiliaryItem);
|
|
|
|
+ items.forEach(l -> {
|
|
|
|
+ BizDayworkAuxiliaryItemReject reject = new BizDayworkAuxiliaryItemReject(l);
|
|
|
|
+ reject.setDayworkAuxiliaryItemId(bizDayworkAuxiliaryItem.getId());
|
|
|
|
+ reject.setUserName(bizDayworkAuxiliaryItem.getUserName());
|
|
|
|
+ reject.setNickName(bizDayworkAuxiliaryItem.getNickName());
|
|
|
|
+ reject.setTenantId(bizDayworkAuxiliaryItem.getTenantId());
|
|
|
|
+ rejects.add(reject);
|
|
|
|
+ });
|
|
|
|
+ bizDayworkAuxiliaryItemRejectService.saveBatch(rejects);
|
|
|
|
+ return success();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @PostMapping("/finished")
|
|
|
|
+ @Transactional
|
|
|
|
+ public AjaxResult finished (@RequestBody BizDayworkAuxiliaryItem bizDayworkAuxiliaryItem) {
|
|
|
|
+ // 添加报工废品
|
|
|
|
+ bizDayworkAuxiliaryItem.setStatus("3");
|
|
|
|
+ List<BizDayworkItemReject> rejects = new ArrayList<>();
|
|
|
|
+ bizDayworkAuxiliaryItem.getRejectList().forEach(l -> {
|
|
|
|
+ BizDayworkItemReject reject = new BizDayworkItemReject(l);
|
|
|
|
+ reject.setProductionPlanId(bizDayworkAuxiliaryItem.getProductionPlanId());
|
|
|
|
+ reject.setProductionPlanDetailSubDetailId(bizDayworkAuxiliaryItem.getProductionPlanDetailSubDetailId());
|
|
|
|
+ reject.setProductionPlanDetailId(bizDayworkAuxiliaryItem.getProductionPlanDetailId());
|
|
|
|
+ reject.setUserId(bizDayworkAuxiliaryItem.getUserId());
|
|
|
|
+ reject.setTenantId(l.getTenantId());
|
|
|
|
+ reject.setDeptId(bizDayworkAuxiliaryItem.getDeptId());
|
|
|
|
+ reject.setProcessId(bizDayworkAuxiliaryItem.getProcessId());
|
|
|
|
+ reject.setLotId(bizDayworkAuxiliaryItem.getLotId());
|
|
|
|
+ rejects.add(reject);
|
|
|
|
+ });
|
|
|
|
+ Integer rejectNum = bizDayworkAuxiliaryItem.getRejectList().stream().mapToInt(BizDayworkAuxiliaryItemReject::getRejectNum).sum();
|
|
|
|
+ // 修改报工表的合格数量
|
|
|
|
+ BizDaywork bizDaywork = bizDayworkService.getById(bizDayworkAuxiliaryItem.getDayworkId());
|
|
|
|
+ List<BizDayworkItem> bizDayworkItems = bizDayworkItemService.query().eq("daywork_id", bizDaywork.getId()).orderByDesc("create_time").list();
|
|
|
|
+ bizDaywork.setProcessQualifiedNum(bizDaywork.getProcessQualifiedNum() - rejectNum);
|
|
|
|
+ bizDaywork.setTemporaryProcessQualifiedNum(bizDaywork.getTemporaryProcessQualifiedNum() - rejectNum);
|
|
|
|
+ BizDayworkItem lastDaywork = bizDayworkItems.stream().filter(v -> v.getStatus().compareTo("4") < 0).sorted(Comparator.comparing(BizDayworkItem::getProcessStepNumber).thenComparing(BizDayworkItem::getStatus).reversed()).findFirst().orElse(new BizDayworkItem());
|
|
|
|
+ // 假设最新报工已完成 则修改下序报工的投产数量
|
|
|
|
+ if (lastDaywork.getStatus().compareTo("3") < 0) {
|
|
|
|
+ // 假设最新报工未完成 则修改本序投产数量。
|
|
|
|
+ // 获取当前工序 假设当前工序不是辅助生产工序则修改投产数量。
|
|
|
|
+ if (!lastDaywork.getTechnologicalProcessDetailId().equals(bizDayworkAuxiliaryItem.getTechnologicalProcessDetailId())) {
|
|
|
|
+ List<BizDayworkItem> items = bizDayworkItems.stream().filter(v -> v.getTechnologicalProcessDetailId().equals(lastDaywork.getTechnologicalProcessDetailId()) && v.getStatus().compareTo("3") < 0).collect(Collectors.toList());
|
|
|
|
+ items.forEach(l -> {
|
|
|
|
+ l.setProdNum(l.getProdNum() - rejectNum);
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ bizDayworkService.updateById(bizDaywork);
|
|
|
|
+ bizDayworkAuxiliaryItemRejectService.saveOrUpdateBatch(bizDayworkAuxiliaryItem.getRejectList());
|
|
|
|
+ bizDayworkAuxiliaryItemService.updateById(bizDayworkAuxiliaryItem);
|
|
|
|
+ bizDayworkItemService.updateBatchById(bizDayworkItems);
|
|
|
|
+ bizDayworkItemRejectService.saveBatch(rejects);
|
|
|
|
+ return success();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Transactional
|
|
|
|
+ @PostMapping("/pause")
|
|
|
|
+ public AjaxResult pause (@RequestBody BizDayworkAuxiliaryItem bizDayworkAuxiliaryItem) {
|
|
|
|
+ bizDayworkAuxiliaryItem.setStatus("1");
|
|
|
|
+ bizDayworkAuxiliaryItemService.updateById(bizDayworkAuxiliaryItem);
|
|
|
|
+ List<BizDayworkAuxiliaryItemReject> rejects = bizDayworkAuxiliaryItem.getRejectList();
|
|
|
|
+ bizDayworkAuxiliaryItemRejectService.saveOrUpdateBatch(rejects);
|
|
|
|
+ return success();
|
|
|
|
+ }
|
|
|
|
+}
|