فهرست منبع

Merge remote-tracking branch 'origin/master'

wangxin 10 ماه پیش
والد
کامیت
59407fe2ee
63فایلهای تغییر یافته به همراه2035 افزوده شده و 108 حذف شده
  1. 107 0
      src/main/java/cn/ezhizao/project/business/innerTurnover/controller/BizInnerTurnoverController.java
  2. 55 0
      src/main/java/cn/ezhizao/project/business/innerTurnover/domain/BizInnerTurnover.java
  3. 30 0
      src/main/java/cn/ezhizao/project/business/innerTurnover/mapper/BizInnerTurnoverMapper.java
  4. 31 0
      src/main/java/cn/ezhizao/project/business/innerTurnover/service/IBizInnerTurnoverService.java
  5. 45 0
      src/main/java/cn/ezhizao/project/business/innerTurnover/service/impl/BizInnerTurnoverServiceImpl.java
  6. 1 0
      src/main/java/cn/ezhizao/project/business/product/controller/BizCarrierController.java
  7. 5 1
      src/main/java/cn/ezhizao/project/business/product/controller/BizDayworkCarrierController.java
  8. 128 3
      src/main/java/cn/ezhizao/project/business/product/controller/BizDayworkController.java
  9. 207 6
      src/main/java/cn/ezhizao/project/business/product/controller/BizDayworkItemController.java
  10. 156 0
      src/main/java/cn/ezhizao/project/business/product/controller/BizDayworkItemExamineController.java
  11. 12 0
      src/main/java/cn/ezhizao/project/business/product/controller/BizFurnaceNoInfoController.java
  12. 352 63
      src/main/java/cn/ezhizao/project/business/product/controller/BizProcessInspecionController.java
  13. 14 0
      src/main/java/cn/ezhizao/project/business/product/controller/BizQuickDayworkController.java
  14. 35 7
      src/main/java/cn/ezhizao/project/business/product/controller/SortDayworkController.java
  15. 19 0
      src/main/java/cn/ezhizao/project/business/product/domain/BizDaywork.java
  16. 4 0
      src/main/java/cn/ezhizao/project/business/product/domain/BizDayworkCarrier.java
  17. 4 0
      src/main/java/cn/ezhizao/project/business/product/domain/BizDayworkItem.java
  18. 10 1
      src/main/java/cn/ezhizao/project/business/product/domain/BizDayworkItemConsult.java
  19. 39 0
      src/main/java/cn/ezhizao/project/business/product/domain/BizDayworkItemConsultPicture.java
  20. 89 0
      src/main/java/cn/ezhizao/project/business/product/domain/BizDayworkItemExamine.java
  21. 8 0
      src/main/java/cn/ezhizao/project/business/product/domain/BizDayworkItemReject.java
  22. 3 0
      src/main/java/cn/ezhizao/project/business/product/domain/BizFurnaceNoInfo.java
  23. 71 1
      src/main/java/cn/ezhizao/project/business/product/domain/BizProcessInspecion.java
  24. 9 0
      src/main/java/cn/ezhizao/project/business/product/domain/BizProcessInspectionDetail.java
  25. 1 0
      src/main/java/cn/ezhizao/project/business/product/mapper/BizDayworkCarrierMapper.java
  26. 1 0
      src/main/java/cn/ezhizao/project/business/product/mapper/BizDayworkItemConsultMapper.java
  27. 30 0
      src/main/java/cn/ezhizao/project/business/product/mapper/BizDayworkItemConsultPictureMapper.java
  28. 31 0
      src/main/java/cn/ezhizao/project/business/product/mapper/BizDayworkItemExamineMapper.java
  29. 4 1
      src/main/java/cn/ezhizao/project/business/product/mapper/BizDayworkItemMapper.java
  30. 1 0
      src/main/java/cn/ezhizao/project/business/product/mapper/BizDayworkMapper.java
  31. 3 0
      src/main/java/cn/ezhizao/project/business/product/mapper/BizProcessInspecionMapper.java
  32. 1 0
      src/main/java/cn/ezhizao/project/business/product/service/IBizDayworkCarrierService.java
  33. 31 0
      src/main/java/cn/ezhizao/project/business/product/service/IBizDayworkItemConsultPictureService.java
  34. 1 0
      src/main/java/cn/ezhizao/project/business/product/service/IBizDayworkItemConsultService.java
  35. 32 0
      src/main/java/cn/ezhizao/project/business/product/service/IBizDayworkItemExamineService.java
  36. 4 0
      src/main/java/cn/ezhizao/project/business/product/service/IBizDayworkItemService.java
  37. 2 0
      src/main/java/cn/ezhizao/project/business/product/service/IBizDayworkService.java
  38. 3 0
      src/main/java/cn/ezhizao/project/business/product/service/IBizProcessInspecionService.java
  39. 5 0
      src/main/java/cn/ezhizao/project/business/product/service/impl/BizDayworkCarrierServiceImpl.java
  40. 45 0
      src/main/java/cn/ezhizao/project/business/product/service/impl/BizDayworkItemConsultPictureServiceImpl.java
  41. 5 0
      src/main/java/cn/ezhizao/project/business/product/service/impl/BizDayworkItemConsultServiceImpl.java
  42. 45 0
      src/main/java/cn/ezhizao/project/business/product/service/impl/BizDayworkItemExamineServiceImpl.java
  43. 20 0
      src/main/java/cn/ezhizao/project/business/product/service/impl/BizDayworkItemServiceImpl.java
  44. 47 5
      src/main/java/cn/ezhizao/project/business/product/service/impl/BizDayworkServiceImpl.java
  45. 7 0
      src/main/java/cn/ezhizao/project/business/product/service/impl/BizProcessInspecionServiceImpl.java
  46. 3 0
      src/main/java/cn/ezhizao/project/business/resourceGroup/domain/BizProductionResourceGroupDetail.java
  47. 1 0
      src/main/java/cn/ezhizao/project/business/resourceGroup/service/impl/BizProductionResourceGroupDetailServiceImpl.java
  48. 0 1
      src/main/java/cn/ezhizao/project/business/technologicalProcess/controller/BizTechnologicalProcessController.java
  49. 3 0
      src/main/java/cn/ezhizao/project/business/technologicalProcess/domain/BizTechnologicalProcess.java
  50. 9 0
      src/main/java/cn/ezhizao/project/business/technologicalProcessDetailDrawing/domain/BizTechnologicalProcessDetailDrawing.java
  51. 3 0
      src/main/resources/application-dev.yml
  52. 3 0
      src/main/resources/application-linux.yml
  53. 35 0
      src/main/resources/mybatis/business/innerTurnover/BizInnerTurnoverMapper.xml
  54. 3 1
      src/main/resources/mybatis/business/inspection/BizProductInspectionInstructionMapper.xml
  55. 4 1
      src/main/resources/mybatis/business/product/BizDayworkCarrierMapper.xml
  56. 7 1
      src/main/resources/mybatis/business/product/BizDayworkItemConsultMapper.xml
  57. 30 0
      src/main/resources/mybatis/business/product/BizDayworkItemConsultPictureMapper.xml
  58. 31 0
      src/main/resources/mybatis/business/product/BizDayworkItemExamineMapper.xml
  59. 106 1
      src/main/resources/mybatis/business/product/BizDayworkItemMapper.xml
  60. 12 3
      src/main/resources/mybatis/business/product/BizDayworkMapper.xml
  61. 0 1
      src/main/resources/mybatis/business/product/BizFurnaceNoInfoMapper.xml
  62. 23 1
      src/main/resources/mybatis/business/product/BizProcessInspecionMapper.xml
  63. 9 10
      src/main/resources/mybatis/business/technologicalProcessDetailDrawing/BizTechnologicalProcessDetailDrawingMapper.xml

+ 107 - 0
src/main/java/cn/ezhizao/project/business/innerTurnover/controller/BizInnerTurnoverController.java

@@ -0,0 +1,107 @@
+package cn.ezhizao.project.business.innerTurnover.controller;
+
+import java.util.List;
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+
+import cn.ezhizao.common.utils.poi.ExcelUtil;
+import cn.ezhizao.framework.aspectj.lang.annotation.Log;
+import cn.ezhizao.framework.aspectj.lang.enums.BusinessType;
+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.innerTurnover.domain.BizInnerTurnover;
+import cn.ezhizao.project.business.innerTurnover.service.IBizInnerTurnoverService;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+
+/**
+ * 工段内部人周转表Controller
+ *
+ * @author ezhizao
+ * @date 2024-07-08
+ */
+@RestController
+@RequestMapping("/business/innerTurnover")
+public class BizInnerTurnoverController extends BaseController
+{
+    @Resource
+    private IBizInnerTurnoverService bizInnerTurnoverService;
+
+    /**
+     * 查询工段内部人周转表列表
+     */
+    @GetMapping("/list")
+    public TableDataInfo list(BizInnerTurnover bizInnerTurnover) throws NoSuchFieldException, IllegalAccessException
+    {
+        List<BizInnerTurnover> list = bizInnerTurnoverService.getList(bizInnerTurnover);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出工段内部人周转表列表
+     */
+    @PreAuthorize("@ss.hasPermi('business:innerTurnover:export')")
+    @Log(title = "工段内部人周转表", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, BizInnerTurnover bizInnerTurnover) throws NoSuchFieldException, IllegalAccessException
+    {
+        setTenantId(bizInnerTurnover);
+        List<BizInnerTurnover> list = bizInnerTurnoverService.getList(bizInnerTurnover);
+        ExcelUtil<BizInnerTurnover> util = new ExcelUtil<BizInnerTurnover>(BizInnerTurnover.class);
+        util.exportExcel(response, list, "工段内部人周转表数据");
+    }
+
+    /**
+     * 获取工段内部人周转表详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('business:innerTurnover:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return success(bizInnerTurnoverService.getById(id));
+    }
+
+    /**
+     * 新增工段内部人周转表
+     */
+    @PreAuthorize("@ss.hasPermi('business:innerTurnover:add')")
+    @Log(title = "工段内部人周转表", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody BizInnerTurnover bizInnerTurnover) throws NoSuchFieldException, IllegalAccessException
+    {
+        setTenantId(bizInnerTurnover);
+        return toAjax(bizInnerTurnoverService.save(bizInnerTurnover));
+    }
+
+    /**
+     * 修改工段内部人周转表
+     */
+    @PreAuthorize("@ss.hasPermi('business:innerTurnover:edit')")
+    @Log(title = "工段内部人周转表", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody BizInnerTurnover bizInnerTurnover) throws NoSuchFieldException, IllegalAccessException
+    {
+        setTenantId(bizInnerTurnover);
+        return toAjax(bizInnerTurnoverService.updateById(bizInnerTurnover));
+    }
+
+    /**
+     * 删除工段内部人周转表
+     */
+    @PreAuthorize("@ss.hasPermi('business:innerTurnover:remove')")
+    @Log(title = "工段内部人周转表", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable List<Long> ids)
+    {
+        return toAjax(bizInnerTurnoverService.removeBatchByIds(ids));
+    }
+}

+ 55 - 0
src/main/java/cn/ezhizao/project/business/innerTurnover/domain/BizInnerTurnover.java

@@ -0,0 +1,55 @@
+package cn.ezhizao.project.business.innerTurnover.domain;
+
+import cn.ezhizao.framework.aspectj.lang.annotation.Excel;
+import cn.ezhizao.framework.web.domain.BaseEntity;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * 工段内部人周转表对象 biz_inner_turnover
+ *
+ * @author ezhizao
+ * @date 2024-07-08
+ */
+@Data
+@TableName(value = "biz_inner_turnover")
+public class BizInnerTurnover extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 租户ID */
+    @ApiModelProperty(value = "${comment}")
+    private Long tenantId;
+
+    /** 工段id */
+    @ApiModelProperty(value = "${comment}")
+    private Long deptId;
+
+    /** 用户账号(编码) */
+    @Excel(name = "用户账号", readConverterExp = "编=码")
+    @ApiModelProperty(value = "用户账号")
+    private String userName;
+    private Long userId;
+
+    /** 用户姓名 */
+    @Excel(name = "用户姓名")
+    @ApiModelProperty(value = "用户姓名")
+    private String nickName;
+
+    /** 手机号码 */
+    @Excel(name = "手机号码")
+    @ApiModelProperty(value = "手机号码")
+    private String phoneNumber;
+
+    /** 用户性别(未知、男、女) */
+    @Excel(name = "用户性别", readConverterExp = "未=知、男、女")
+    @ApiModelProperty(value = "用户性别")
+    private String sex;
+
+    /** 使用单位名称 */
+    @Excel(name = "使用单位名称")
+    @ApiModelProperty(value = "使用单位名称")
+    private String usageCompanyName;
+
+}

+ 30 - 0
src/main/java/cn/ezhizao/project/business/innerTurnover/mapper/BizInnerTurnoverMapper.java

@@ -0,0 +1,30 @@
+package cn.ezhizao.project.business.innerTurnover.mapper;
+
+import java.util.List;
+
+import cn.ezhizao.project.business.innerTurnover.domain.BizInnerTurnover;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * 工段内部人周转表Mapper接口
+ *
+ * @author ezhizao
+ * @date 2024-07-08
+ */
+public interface BizInnerTurnoverMapper extends BaseMapper<BizInnerTurnover>
+{
+    /**
+     * 查询工段内部人周转表列表
+     *
+     * @param bizInnerTurnover 工段内部人周转表
+     * @return 工段内部人周转表集合
+     */
+    public List<BizInnerTurnover> getList(BizInnerTurnover bizInnerTurnover);
+
+    /**
+     * 物理删除
+     * @param bizInnerTurnover
+     * @return 删除结果
+    */
+    public int physicalDelete(BizInnerTurnover bizInnerTurnover);
+}

+ 31 - 0
src/main/java/cn/ezhizao/project/business/innerTurnover/service/IBizInnerTurnoverService.java

@@ -0,0 +1,31 @@
+package cn.ezhizao.project.business.innerTurnover.service;
+
+import java.util.List;
+
+import cn.ezhizao.project.business.innerTurnover.domain.BizInnerTurnover;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * 工段内部人周转表Service接口
+ *
+ * @author ezhizao
+ * @date 2024-07-08
+ */
+public interface IBizInnerTurnoverService extends IService<BizInnerTurnover>
+{
+    /**
+     * 查询工段内部人周转表列表
+     *
+     * @param bizInnerTurnover 工段内部人周转表
+     * @return 工段内部人周转表集合
+     */
+    public List<BizInnerTurnover> getList(BizInnerTurnover bizInnerTurnover);
+
+    /**
+     * 物理删除
+     * @param bizInnerTurnover
+     * @return 删除结果
+     */
+    public int physicalDelete(BizInnerTurnover bizInnerTurnover);
+
+}

+ 45 - 0
src/main/java/cn/ezhizao/project/business/innerTurnover/service/impl/BizInnerTurnoverServiceImpl.java

@@ -0,0 +1,45 @@
+package cn.ezhizao.project.business.innerTurnover.service.impl;
+
+import java.util.List;
+import javax.annotation.Resource;
+
+import cn.ezhizao.project.business.innerTurnover.domain.BizInnerTurnover;
+import cn.ezhizao.project.business.innerTurnover.mapper.BizInnerTurnoverMapper;
+import cn.ezhizao.project.business.innerTurnover.service.IBizInnerTurnoverService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+
+/**
+ * 工段内部人周转表Service业务层处理
+ *
+ * @author ezhizao
+ * @date 2024-07-08
+ */
+@Service
+public class BizInnerTurnoverServiceImpl  extends ServiceImpl<BizInnerTurnoverMapper, BizInnerTurnover> implements IBizInnerTurnoverService
+{
+    @Resource
+    private BizInnerTurnoverMapper bizInnerTurnoverMapper;
+
+    /**
+     * 查询工段内部人周转表列表
+     *
+     * @param bizInnerTurnover 工段内部人周转表
+     * @return 工段内部人周转表
+     */
+    @Override
+    public List<BizInnerTurnover> getList(BizInnerTurnover bizInnerTurnover)
+    {
+        return bizInnerTurnoverMapper.getList(bizInnerTurnover);
+    }
+
+    /**
+     * 物理删除
+     * @param bizInnerTurnover
+     * @return 删除结果
+     */
+    @Override
+    public int physicalDelete(BizInnerTurnover bizInnerTurnover){ return bizInnerTurnoverMapper.physicalDelete(bizInnerTurnover); };
+
+}

+ 1 - 0
src/main/java/cn/ezhizao/project/business/product/controller/BizCarrierController.java

@@ -41,6 +41,7 @@ public class BizCarrierController extends BaseController {
 
     @Resource
     private IBizDayworkCarrierService bizDayworkCarrierService;
+
     @Resource
     private IBizCarrierCategoryService bizCarrierCategoryService;
 

+ 5 - 1
src/main/java/cn/ezhizao/project/business/product/controller/BizDayworkCarrierController.java

@@ -51,7 +51,11 @@ public class BizDayworkCarrierController extends BaseController
         List<BizDayworkCarrier> list = bizDayworkCarrierService.getList(bizDayworkCarrier);
         return getDataTable(list);
     }
-
+    @PostMapping("/getDayworkCarrierByCarrierCode")
+    public AjaxResult getDayworkCarrierByCarrierCode(@RequestBody  BizDayworkCarrier bizDayworkCarrier) throws NoSuchFieldException, IllegalAccessException
+    {
+        return success(bizDayworkCarrierService.getDayworkCarrierByCarrierCode(bizDayworkCarrier));
+    }
     /**
      * 导出报工载具中间表列表
      */

+ 128 - 3
src/main/java/cn/ezhizao/project/business/product/controller/BizDayworkController.java

@@ -1,5 +1,6 @@
 package cn.ezhizao.project.business.product.controller;
 
+import cn.ezhizao.common.utils.CommonUtils;
 import cn.ezhizao.common.utils.SecurityUtils;
 import cn.ezhizao.common.utils.poi.ExcelUtil;
 import cn.ezhizao.framework.aspectj.lang.annotation.Log;
@@ -10,11 +11,14 @@ import cn.ezhizao.project.business.deptProcess.domain.BizDeptProcess;
 import cn.ezhizao.project.business.process.domain.BizProcess;
 import cn.ezhizao.project.business.product.domain.*;
 import cn.ezhizao.project.business.product.service.*;
+import cn.ezhizao.project.business.resourceGroup.domain.BizProductionResourceGroupDetail;
 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 cn.ezhizao.project.system.domain.SysUser;
+import cn.ezhizao.project.system.service.ISysUserService;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import io.swagger.models.auth.In;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
 
@@ -67,6 +71,8 @@ public class BizDayworkController extends BaseController {
 
     @Resource
     private IBizProductionPlanDetailService bizProductionPlanDetailService;
+    @Resource
+    private ISysUserService sysUserService;
 
     /*
     @Transactional
@@ -300,6 +306,13 @@ public class BizDayworkController extends BaseController {
             // 循环最终要展示的 daywork 集合,根据每个daywork,精确赋予相关数据
             List<Long> allLotIds = dayworkList.stream().map(BizDaywork::getLotId).collect(Collectors.toList());
             List<BizLot> allLots = bizLotService.query().in("id", allLotIds).list();
+            List<Long> allDayworkIds = dayworkList.stream().map(BizDaywork::getId).collect(Collectors.toList());
+            //查找被邀请者的id
+            List<BizProductionResourceGroupDetail> protemResourceGroupDetail = bizProductionResourceGroupDetailService.query().in("protem_daywork_id", allDayworkIds.isEmpty() ? Collections.singletonList(0L) : allDayworkIds)
+                    .eq("common_id",userId).eq("common_type","person").list();
+            List<Long> protemUserIds = protemResourceGroupDetail.stream().map(BizProductionResourceGroupDetail::getCreatorId).distinct().collect(Collectors.toList());
+            protemUserIds.add(0L);
+            List<SysUser> sysUsers = sysUserService.selectUserListByIds(protemUserIds);
             for (BizDaywork daywork : dayworkList) {
                 //把批次的lot投产数量加到daywork里
                 allLots.stream().filter(l -> l.getId().equals(daywork.getLotId()))
@@ -416,7 +429,7 @@ public class BizDayworkController extends BaseController {
                     } else {
                         BizTechnologicalProcessDetail technologicalProcessDetail = processList.stream()
                                 // 通过get(0)的方式,获得最新的一条报工记录
-                                .filter(tp -> tp.getProcessStepNumber().equals(tempDayworkItems.get(0).getProcessStepNumber()))
+                                .filter(tp -> tp.getTechnologicalProcessId().equals(tempDayworkItems.get(0).getTechnologicalProcessId()) && tp.getProcessStepNumber().equals(tempDayworkItems.get(0).getProcessStepNumber()))
                                 .findFirst().orElse(null);
                         if (technologicalProcessDetail != null) {
                             tempProcess.setId(technologicalProcessDetail.getProcessId());
@@ -475,6 +488,14 @@ public class BizDayworkController extends BaseController {
                     }
                     daywork.setProcessSequence(processSequence);
                 }
+                /* ************************** 以下是为了获得当前登录这资源组信息,判断邀请报工 ************************** */
+                if(!sysUsers.isEmpty()){
+                    List<BizProductionResourceGroupDetail> protemDetailList = protemResourceGroupDetail.stream().filter(item ->item.getProtemDayworkId().equals(daywork.getId())).collect(Collectors.toList());
+                    protemDetailList.forEach(item ->{
+                        item.setProtemCreatorName(sysUsers.stream().filter(label ->label.getUserId().equals(item.getCreatorId())).collect(Collectors.toList()).get(0).getNickName());
+                    });
+                    daywork.setProtemResourceGroupDetailList(protemDetailList);
+                }
 
                 /* ************************** 以下是为了获得当前 daywork 的下一道工序 ************************** */
                 // 判断当前工段
@@ -905,7 +926,91 @@ public class BizDayworkController extends BaseController {
             return toAjax(saveOrUpdateCarrierBatch(bizDayworkCarrierService, bizDaywork.getDayworkCarriers(), oldList));
         }
     }
-
+    @PostMapping("/getLotInformation")
+    public AjaxResult getLotInformation(@RequestBody BizDaywork bizDaywork) {
+            BizDaywork daywork= bizDayworkService.getLotInfo(bizDaywork);
+            List<BizTechnologicalProcessDetail> normalTechnologicalProcessDetailList = new ArrayList<>();
+            List<BizLotTechnologicalProcessDetail> abNormalTechnologicalProcessDetailList = new ArrayList<>();
+            //最新的工序步骤
+            String lastProcessStepNumber = daywork.getDayworkItemList().stream().sorted(Comparator.comparing(BizDayworkItem::getProcessStepNumber).reversed()).sorted(Comparator.comparing(BizDayworkItem::getCreateTime).reversed()).collect(Collectors.toList()).get(0).getProcessStepNumber();
+            List<BizDayworkItem> lastDayworkItemList = daywork.getDayworkItemList().stream().filter(info -> info.getProcessStepNumber().equals(lastProcessStepNumber)).collect(Collectors.toList());
+            //当前设备
+            daywork.setCurrentEquipmentCode(lastDayworkItemList.stream().sorted(Comparator.comparing(BizDayworkItem::getCreateTime).reversed()).collect(Collectors.toList()).get(0).getEquipmentDetailCode());
+            //当前操作者
+            daywork.setCurrentNickName(lastDayworkItemList.stream().sorted(Comparator.comparing(BizDayworkItem::getCreateTime).reversed()).collect(Collectors.toList()).get(0).getNickName());
+            //合格数量
+            daywork.setTotalQuantityNum(lastDayworkItemList.stream().filter(info -> info.getStatus().equals("1" )|| info.getStatus().equals("2") ||info.getStatus().equals("3")).map(BizDayworkItem::getQualifiedNum).reduce(0, Integer::sum));
+                if(daywork.getIsWasteRecycling() == 1 || daywork.getIsAmend() == 1) {
+                    abNormalTechnologicalProcessDetailList = bizLotTechnologicalProcessDetailService.query().in("lot_technological_process_id", daywork.getTechnologicalProcessId()).orderByAsc("process_step_number").list();
+                    List<BizProcess> processSequence = new ArrayList<>();
+                    for (BizLotTechnologicalProcessDetail detail : abNormalTechnologicalProcessDetailList) {
+                        BizProcess newProcess = new BizProcess();
+                        newProcess.setId(detail.getProcessId());
+                        newProcess.setProcessCode(detail.getProcessCode());
+                        newProcess.setProcessAlias(detail.getProcessAlias());
+                        newProcess.setTechnologicalProcessDetailId(detail.getId());
+                        newProcess.setProcessStepNumber(detail.getProcessStepNumber());
+                        processSequence.add(newProcess);
+                    }
+                    daywork.setProcessSequence(processSequence);
+                    BizLotTechnologicalProcessDetail currentProcessDetail = abNormalTechnologicalProcessDetailList.stream().filter(info->info.getProcessStepNumber().equals(lastProcessStepNumber)).collect(Collectors.toList()).get(0);
+                    BizProcess currentProcess = new BizProcess();
+                    currentProcess.setProcessStepNumber(lastProcessStepNumber);
+                    currentProcess.setProcessAlias(lastDayworkItemList.get(0).getProcessAlias());
+                    daywork.setCurrentProcess(currentProcess);
+                    //上一道序
+                    List<BizDayworkItem> filteredList = daywork.getDayworkItemList().stream()
+                            .filter(info -> !info.getProcessStepNumber().equals(lastProcessStepNumber))
+                            .sorted(Comparator.comparing(BizDayworkItem::getCreateTime).reversed())
+                            .collect(Collectors.toList());
+                    BizProcess prevProcess = new BizProcess();
+                    if(!filteredList.isEmpty()) {
+                        prevProcess.setProcessAlias(filteredList.get(0).getProcessAlias());
+                        daywork.setPrevProcess(prevProcess);
+                    }
+                    BizProcess nextProcess = new BizProcess();
+                    if(abNormalTechnologicalProcessDetailList.indexOf(currentProcessDetail) != abNormalTechnologicalProcessDetailList.size() -1) {
+                        nextProcess.setProcessAlias(abNormalTechnologicalProcessDetailList.get(abNormalTechnologicalProcessDetailList.indexOf(currentProcessDetail) + 1).getProcessAlias());
+                        daywork.setNextProcess(nextProcess);
+                    }
+                }else{
+                    normalTechnologicalProcessDetailList =  bizTechnologicalProcessDetailService.query().eq("technological_process_id", daywork.getTechnologicalProcessId()).ne("tenant_id",9).orderByAsc("process_step_number").list();
+                    List<BizProcess> processSequence = new ArrayList<>();
+                    for (BizTechnologicalProcessDetail detail : normalTechnologicalProcessDetailList) {
+                        BizProcess newProcess = new BizProcess();
+                        newProcess.setId(detail.getProcessId());
+                        newProcess.setProcessCode(detail.getProcessCode());
+                        newProcess.setProcessAlias(detail.getProcessAlias());
+                        newProcess.setTechnologicalProcessDetailId(detail.getId());
+                        newProcess.setProcessStepNumber(detail.getProcessStepNumber());
+                        processSequence.add(newProcess);
+                    }
+                    daywork.setProcessSequence(processSequence);
+                    BizTechnologicalProcessDetail currentProcessDetail =normalTechnologicalProcessDetailList.stream().filter(info->info.getProcessStepNumber().equals(lastProcessStepNumber)).collect(Collectors.toList()).get(0);
+                    BizProcess currentProcess = new BizProcess();
+                    currentProcess.setProcessStepNumber(lastProcessStepNumber);
+                    currentProcess.setProcessAlias(lastDayworkItemList.get(0).getProcessAlias());
+                    daywork.setCurrentProcess(currentProcess);
+                    //上一道序
+                    List<BizDayworkItem> filteredList = daywork.getDayworkItemList().stream()
+                            .filter(info -> !info.getProcessStepNumber().equals(lastProcessStepNumber))
+                            .sorted(Comparator.comparing(BizDayworkItem::getProcessStepNumber).reversed())
+                            .sorted(Comparator.comparing(BizDayworkItem::getCreateTime).reversed())
+                            .collect(Collectors.toList());
+                    BizProcess prevProcess = new BizProcess();
+                    if(!filteredList.isEmpty()) {
+                        prevProcess.setProcessAlias(filteredList.get(0).getProcessAlias());
+                        daywork.setPrevProcess(prevProcess);
+                    }
+                    BizProcess nextProcess = new BizProcess();
+                    if(normalTechnologicalProcessDetailList.indexOf(currentProcessDetail) != normalTechnologicalProcessDetailList.size() - 1){
+                        nextProcess.setProcessAlias(normalTechnologicalProcessDetailList.get(normalTechnologicalProcessDetailList.indexOf(currentProcessDetail) + 1).getProcessAlias());
+                        daywork.setNextProcess(nextProcess);
+                    }
+                }
+                daywork.setStatus(bizDayworkService.getStatus(daywork));
+                 return success(daywork);
+    }
     @Transactional
     @PostMapping("/check")
     @Log(title = "报工", businessType = BusinessType.SELECT)
@@ -1001,7 +1106,7 @@ public class BizDayworkController extends BaseController {
                     .list();
 
             List<BizDayworkItem> allBizDayworkItem = bizDayworkItemService.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())).sorted(Comparator.comparing(BizDayworkItem::getCreateTime).reversed()).collect(Collectors.toList())));
             List<BizDayworkItem> turnoverItems = new ArrayList<>();
             for (BizDaywork bizDaywork : bizDayworks) {
                 if (bizDaywork.getDayworkItemList().get(0).getStatus().equals("4")
@@ -1112,6 +1217,7 @@ public class BizDayworkController extends BaseController {
             if(l.getStatus().equals("7")) {
                 BizDaywork daywork = l.getDaywork();
                 daywork.setProtemProcessId(l.getProcessId());
+                daywork.setProtemProcessStepNumber(l.getProcessStepNumber());
                 // 如果被邀请人不是本工段内的人,则需要从当前资源组中删除被邀请人
                 bizProductionResourceGroupDetailService.deleTemporanyPeople(daywork);
             }
@@ -1207,8 +1313,27 @@ public class BizDayworkController extends BaseController {
                 })
                 .filter(item -> item.getStatus().equals("7")) // 仅保留状态为7的记录
                 .collect(Collectors.toList());
+        // 车间内周转dayworkItem
+        List<BizDayworkItem> dayworkItemList1 = groupedByDayworkId.values().stream().filter(items -> {
+            items.sort(Comparator.comparing(BizDayworkItem::getCreateTime).reversed());
+            if (items.size() >= 2) {
+                BizDayworkItem lastItem = items.get(0);
+//                BizDayworkItem secondItem = items.stream().filter(v -> v.getStatus().compareTo("4") < 0).findFirst().orElse(new BizDayworkItem());
+                return lastItem.getTurnoverType().equals("1") && (items.get(0).getStatus().equals("4") || items.get(0).getStatus().equals("7"));
+            } else {
+                return false;
+            }
+        }).map(items -> {
+            items.sort(Comparator.comparing(BizDayworkItem::getCreateTime).reversed()); // 在每个分组内按时间倒序排序
+            return items.get(0); // 获取排序后的第一条记录
+        }).collect(Collectors.toList());
+        dayworkItemList.addAll(dayworkItemList1);
+        dayworkItemList = dayworkItemList.stream().filter(CommonUtils.distinctByKey(BizDayworkItem::getId)).collect(Collectors.toList());
         //根据dayworkId,取daywork_carrier查箱号
         List<Long> dayworkIds = dayworkItemList.stream().map(BizDayworkItem::getDayworkId).collect(Collectors.toList());
+        List<BizDaywork> dayworks = bizDayworkService.query().in("id", dayworkIds.isEmpty() ? Collections.singletonList(0L) : dayworkIds).list();
+        dayworkItemList = dayworkItemList.stream().filter(v -> dayworks.stream().filter(e -> e.getId().equals(v.getDayworkId())).anyMatch(e -> e.getDeptId().equals(v.getDeptId()))).collect(Collectors.toList());
+        dayworkIds = dayworkItemList.stream().map(BizDayworkItem::getDayworkId).collect(Collectors.toList());
         //正常批次列表
         List<BizDaywork> normalDayworkList = new ArrayList<>();
         //z正常批号

+ 207 - 6
src/main/java/cn/ezhizao/project/business/product/controller/BizDayworkItemController.java

@@ -1,5 +1,6 @@
 package cn.ezhizao.project.business.product.controller;
 
+import cn.ezhizao.common.exception.ServiceException;
 import cn.ezhizao.common.utils.SecurityUtils;
 import cn.ezhizao.common.utils.poi.ExcelUtil;
 import cn.ezhizao.framework.aspectj.lang.annotation.Log;
@@ -32,6 +33,7 @@ import cn.ezhizao.project.system.service.ISysDeptUserService;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.server.ServerErrorException;
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
@@ -100,6 +102,8 @@ public class BizDayworkItemController extends BaseController {
 
     @Resource
     private IBizDeptProcessService bizDeptProcessService;
+//    @Resource
+//    private IBizDayworkItemExamineService bizDayworkItemExamineService;
     /**
      * 查询报工记录列表
      */
@@ -290,6 +294,9 @@ public class BizDayworkItemController extends BaseController {
             List<Long> processIds = bizLotTechnologicalProcessDetailList.stream().map(BizLotTechnologicalProcessDetail::getProcessId).distinct().collect(Collectors.toList());
             List<BizDeptProcess> deptProcessList = bizDeptProcessService.query().in("process_id", processIds.isEmpty()? Collections.singletonList(0L) : processIds).list();
             list.forEach(info -> {
+                if(info.getTurnoverType().equals("1")) {
+                    info.setTurnoverArea(info.getPlace());
+                }
                 List<BizProcess> tempList = new ArrayList<>();
                 if (info.getIsAmend() == 1 || info.getIsWasteRecycling() == 1) {
                     List<BizLotTechnologicalProcessDetail> infoList = bizLotTechnologicalProcessDetailList.stream().filter(l -> l.getLotTechnologicalProcessId().equals(info.getTechnologicalProcessId())).collect(Collectors.toList());
@@ -354,7 +361,150 @@ public class BizDayworkItemController extends BaseController {
         ExcelUtil<BizDayworkItem> util = new ExcelUtil<BizDayworkItem>(BizDayworkItem.class);
         util.exportExcel(response, list, "报工记录数据");
     }
+    @PostMapping("/getInnerTurnoverByDeptId")
+    public AjaxResult getInnerTurnoverByDeptId(@RequestBody BizDayworkItem bizDayworkItem) {
+        List<BizDaywork> dayworkList = bizDayworkItemService.getInnerListByDeptId(bizDayworkItem);
+        if(!dayworkList.isEmpty()){
+            List<Long> dayworkIds = dayworkList.stream().map(BizDaywork::getId).collect(Collectors.toList());
+            //正常批次的工序集合
+            List<Long> normalTechnologicalProcessIds = dayworkList.stream().filter(item -> item.getIsWasteRecycling() == 0 && item.getIsAmend() == 0).map(BizDaywork::getTechnologicalProcessId).collect(Collectors.toList());
+            List<BizTechnologicalProcessDetail> normalDetailList = bizTechnologicalProcessDetailService.query().in("technological_process_id", normalTechnologicalProcessIds.isEmpty() ? Collections.singletonList(0L) : normalTechnologicalProcessIds).orderByAsc("process_step_number").list();
+           //不正常批次的工序集合
+            List<Long> abNormalTechnologicalProcessIds = dayworkList.stream().filter(item -> item.getIsWasteRecycling() == 1 || item.getIsAmend() == 1).map(BizDaywork::getTechnologicalProcessId).collect(Collectors.toList());
+            List<BizLotTechnologicalProcessDetail> abNormalDetailList = bizLotTechnologicalProcessDetailService.query().in("lot_technological_process_id", abNormalTechnologicalProcessIds.isEmpty() ? Collections.singletonList(0L) : abNormalTechnologicalProcessIds).orderByAsc("process_step_number").list();
+            List<BizDayworkItem> dayworkItemList = bizDayworkItemService.query().in("daywork_id", dayworkIds).list();
+            dayworkList.forEach(daywork -> {
+                List<BizDayworkItem> dayworkItem = dayworkItemList.stream().filter(item -> item.getDayworkId().equals(daywork.getId())).sorted(Comparator.comparing(BizDayworkItem::getCreateTime).reversed()).collect(Collectors.toList());
+                String lastProcessStepNumber = dayworkItem.get(0).getProcessStepNumber();
+                //当前工序报工信息
+                List<BizDayworkItem> lastDayworkItem = dayworkItem.stream().filter(item -> item.getProcessStepNumber().equals(lastProcessStepNumber) && (item.getStatus().equals("2") || item.getStatus().equals("3"))).collect(Collectors.toList());
+               //合格数量求和
+                daywork.setTemporaryProcessQualifiedNum(lastDayworkItem.stream().mapToInt(BizDayworkItem::getQualifiedNum).sum());
+                //周转的报工信息
+                BizDayworkItem turnoverItem = dayworkItem.stream().filter(item -> item.getProcessStepNumber().equals(lastProcessStepNumber) && item.getStatus().equals("4")).collect(Collectors.toList()).get(0);
+                daywork.setDayworkItemList(new ArrayList<BizDayworkItem>() {{
+                    add(turnoverItem);
+                }});
+                //周转位置
+                daywork.setPlace(turnoverItem.getPlace());
+                //设置操作者
+                daywork.setCreatorName(turnoverItem.getNickName());
+                List<BizProcess> processSequence = new ArrayList<>();
+                //工序集合
+                if (daywork.getIsAmend() == 1 || daywork.getIsWasteRecycling() == 1) {
+                    BizProcess process = new BizProcess();
+                    BizLotTechnologicalProcessDetail processDetail = abNormalDetailList.stream().filter(item -> item.getProcessStepNumber().equals(turnoverItem.getProcessStepNumber()) && item.getLotTechnologicalProcessId().equals(turnoverItem.getTechnologicalProcessId())).collect(Collectors.toList()).get(0);
+                    process.setProcessAlias(processDetail.getProcessAlias());
+                    process.setProcessStepNumber(processDetail.getProcessStepNumber());
+                    daywork.setCurrentProcess(process);
+                    List<BizLotTechnologicalProcessDetail> collectList = abNormalDetailList.stream().filter(item -> item.getLotTechnologicalProcessId().equals(daywork.getTechnologicalProcessId())).collect(Collectors.toList());
+                    for (BizLotTechnologicalProcessDetail detail : collectList) {
+                        BizProcess newProcess = new BizProcess();
+                        newProcess.setId(detail.getProcessId());
+                        newProcess.setProcessCode(detail.getProcessCode());
+                        newProcess.setProcessAlias(detail.getProcessAlias());
+                        newProcess.setTechnologicalProcessDetailId(detail.getId());
+                        newProcess.setProcessStepNumber(detail.getProcessStepNumber());
+                        processSequence.add(newProcess);
+                    }
+                    daywork.setProcessSequence(processSequence);
+                } else {
+                    BizProcess process = new BizProcess();
+                    BizTechnologicalProcessDetail processDetail = normalDetailList.stream().filter(item -> item.getProcessStepNumber().equals(turnoverItem.getProcessStepNumber()) && item.getTechnologicalProcessId().equals(turnoverItem.getTechnologicalProcessId())).collect(Collectors.toList()).get(0);
+                    process.setProcessAlias(processDetail.getProcessAlias());
+                    process.setProcessStepNumber(processDetail.getProcessStepNumber());
+                    daywork.setCurrentProcess(process);
+                    List<BizTechnologicalProcessDetail> collectList = normalDetailList.stream().filter(item -> item.getTechnologicalProcessId().equals(daywork.getTechnologicalProcessId())).collect(Collectors.toList());
+                    for (BizTechnologicalProcessDetail detail : collectList) {
+                        BizProcess newProcess = new BizProcess();
+                        newProcess.setId(detail.getProcessId());
+                        newProcess.setProcessCode(detail.getProcessCode());
+                        newProcess.setProcessAlias(detail.getProcessAlias());
+                        newProcess.setProcessStepNumber(detail.getProcessStepNumber());
+                        newProcess.setTechnologicalProcessDetailId(detail.getId());
+                        processSequence.add(newProcess);
+                    }
+                    daywork.setProcessSequence(processSequence);
+                }
+            });
+        }
+        return success(dayworkList);
+    }
+    @PostMapping("/updateDayworkItemInnerTurnover")
+    public AjaxResult updateDayworkItemInnerTurnover(@RequestBody List<BizDayworkItem> bizDayworkItem) {
+        bizDayworkItem.forEach(item -> {
+            item.setIsInnerTurnover(1);
+        });
 
+        return success(bizDayworkItemService.updateBatchById(bizDayworkItem));
+    }
+    @PostMapping("/getOutTurnoverByDeptId")
+    public AjaxResult getOutTurnoverByDeptId(@RequestBody BizDayworkItem bizDayworkItem) {
+        List<BizDaywork> dayworkList = bizDayworkItemService.getOutListByDeptId(bizDayworkItem);
+        if(!dayworkList.isEmpty()){
+            List<Long> dayworkIds = dayworkList.stream().map(BizDaywork::getId).collect(Collectors.toList());
+            //正常批次的工序集合
+            List<Long> normalTechnologicalProcessIds = dayworkList.stream().filter(item -> item.getIsWasteRecycling() == 0 && item.getIsAmend() == 0).map(BizDaywork::getTechnologicalProcessId).collect(Collectors.toList());
+            List<BizTechnologicalProcessDetail> normalDetailList = bizTechnologicalProcessDetailService.query().in("technological_process_id", normalTechnologicalProcessIds.isEmpty() ? Collections.singletonList(0L) : normalTechnologicalProcessIds).orderByAsc("process_step_number").list();
+            //不正常批次的工序集合
+            List<Long> abNormalTechnologicalProcessIds = dayworkList.stream().filter(item -> item.getIsWasteRecycling() == 1 || item.getIsAmend() == 1).map(BizDaywork::getTechnologicalProcessId).collect(Collectors.toList());
+            List<BizLotTechnologicalProcessDetail> abNormalDetailList = bizLotTechnologicalProcessDetailService.query().in("lot_technological_process_id", abNormalTechnologicalProcessIds.isEmpty() ? Collections.singletonList(0L) : abNormalTechnologicalProcessIds).orderByAsc("process_step_number").list();
+            List<BizDayworkItem> dayworkItemList = bizDayworkItemService.query().in("daywork_id", dayworkIds).list();
+            dayworkList.forEach(daywork -> {
+                List<BizDayworkItem> dayworkItem = dayworkItemList.stream().filter(item -> item.getDayworkId().equals(daywork.getId())).sorted(Comparator.comparing(BizDayworkItem::getCreateTime).reversed()).collect(Collectors.toList());
+                String lastProcessStepNumber = dayworkItem.get(0).getProcessStepNumber();
+                //当前工序报工信息
+                List<BizDayworkItem> lastDayworkItem = dayworkItem.stream().filter(item -> item.getProcessStepNumber().equals(lastProcessStepNumber) && (item.getStatus().equals("2") || item.getStatus().equals("3"))).collect(Collectors.toList());
+                //合格数量求和
+                daywork.setTemporaryProcessQualifiedNum(lastDayworkItem.stream().mapToInt(BizDayworkItem::getQualifiedNum).sum());
+                //周转的报工信息
+                BizDayworkItem turnoverItem = dayworkItem.stream().filter(item -> item.getProcessStepNumber().equals(lastProcessStepNumber) && item.getStatus().equals("4")).collect(Collectors.toList()).get(0);
+                daywork.setDayworkItemList(new ArrayList<BizDayworkItem>() {{
+                    add(turnoverItem);
+                }});
+                //周转位置
+                daywork.setPlace(turnoverItem.getTurnoverArea());
+                //设置操作者
+                daywork.setCreatorName(turnoverItem.getNickName());
+                List<BizProcess> processSequence = new ArrayList<>();
+                //工序集合
+                if (daywork.getIsAmend() == 1 || daywork.getIsWasteRecycling() == 1) {
+                    BizProcess process = new BizProcess();
+                    BizLotTechnologicalProcessDetail processDetail = abNormalDetailList.stream().filter(item -> item.getProcessStepNumber().equals(turnoverItem.getProcessStepNumber())).collect(Collectors.toList()).get(0);
+                    process.setProcessAlias(processDetail.getProcessAlias());
+                    process.setProcessStepNumber(processDetail.getProcessStepNumber());
+                    daywork.setCurrentProcess(process);
+                    for (BizLotTechnologicalProcessDetail detail : abNormalDetailList) {
+                        BizProcess newProcess = new BizProcess();
+                        newProcess.setId(detail.getProcessId());
+                        newProcess.setProcessCode(detail.getProcessCode());
+                        newProcess.setProcessAlias(detail.getProcessAlias());
+                        newProcess.setTechnologicalProcessDetailId(detail.getId());
+                        newProcess.setProcessStepNumber(detail.getProcessStepNumber());
+                        processSequence.add(newProcess);
+                    }
+                    daywork.setProcessSequence(processSequence);
+                } else {
+                    BizProcess process = new BizProcess();
+                    BizTechnologicalProcessDetail processDetail = normalDetailList.stream().filter(item -> item.getProcessStepNumber().equals(turnoverItem.getProcessStepNumber())).collect(Collectors.toList()).get(0);
+                    process.setProcessAlias(processDetail.getProcessAlias());
+                    process.setProcessStepNumber(processDetail.getProcessStepNumber());
+                    daywork.setCurrentProcess(process);
+                    for (BizTechnologicalProcessDetail detail : normalDetailList) {
+                        BizProcess newProcess = new BizProcess();
+                        newProcess.setId(detail.getProcessId());
+                        newProcess.setProcessCode(detail.getProcessCode());
+                        newProcess.setProcessAlias(detail.getProcessAlias());
+                        newProcess.setProcessStepNumber(detail.getProcessStepNumber());
+                        newProcess.setTechnologicalProcessDetailId(detail.getId());
+                        processSequence.add(newProcess);
+                    }
+                    daywork.setProcessSequence(processSequence);
+                }
+            });
+        }
+        return success(dayworkList);
+    }
     /**
      * 获取报工记录详细信息
      */
@@ -502,6 +652,7 @@ public class BizDayworkItemController extends BaseController {
         if (bizDayworkItem.getStatus().equals("7")) {
             daywork.setDeptId(bizDayworkItem.getDeptId());
             daywork.setProcessQualifiedNum(daywork.getTemporaryProcessQualifiedNum());
+            daywork.setProtemProcessStepNumber(bizDayworkItem.getProcessStepNumber());
             bizDayworkService.updateById(daywork);
             // 如果被邀请人不是本工段内的人,则需要从当前资源组中删除被邀请人
             bizProductionResourceGroupDetailService.deleTemporanyPeople(daywork);
@@ -510,6 +661,7 @@ public class BizDayworkItemController extends BaseController {
         if (bizDayworkItem.getStatus().equals("5")) {
             daywork.setProcessQualifiedNum(daywork.getTemporaryProcessQualifiedNum());
             bizDayworkService.updateById(daywork);
+            daywork.setProtemProcessStepNumber(bizDayworkItem.getProcessStepNumber());
             // 如果被邀请人不是本工段内的人,则需要从当前资源组中删除被邀请人
             bizProductionResourceGroupDetailService.deleTemporanyPeople(daywork);
         }
@@ -703,7 +855,16 @@ public class BizDayworkItemController extends BaseController {
         }
         return toAjax(b);
     }
-
+    @PostMapping("/getDayworkItemByDayworkId")
+    public AjaxResult getDayworkItemByDayworkId(@RequestBody BizDayworkItem bizDayworkItem) {
+        List<BizDayworkItem> list = bizDayworkItemService.getListByDayworkId(bizDayworkItem);
+        return success(list);
+    }
+    @PostMapping("/getSortItemByDayworkId")
+    public AjaxResult getSortItemByDayworkId(@RequestBody BizDayworkItem bizDayworkItem) {
+        List<BizDayworkItem> list = bizDayworkItemService.getSortListByDayworkId(bizDayworkItem);
+        return success(list);
+    }
     /**
      * 临时报工
      */
@@ -795,12 +956,17 @@ public class BizDayworkItemController extends BaseController {
         //遍历的邀请者的差集是否大于0
         Boolean flag = false;
         for (BizProductionResourceGroupDetail item : details) {
-            //查询被邀请人在该工段所有的资源组
-            List<BizProductionResourceGroupDetail> inviteList = bizProductionResourceGroupDetailService.query().eq("common_id", item.getCommonId()).in("production_resource_group_id", groupIds).list();
+            // 查询被邀请人在该工段所有的资源组
+            // 20240712 之前是只要该资源组原来有这个人员不管是不是邀请的就不加了,改成这个人员假设是邀请报工人员要再加一次。
+            List<BizProductionResourceGroupDetail> inviteList = bizProductionResourceGroupDetailService.query().eq("common_id", item.getCommonId()).eq("protem_daywork_id", item.getProtemDayworkId()).in("production_resource_group_id", groupIds).list();
             List<Long> inviteGroups = new ArrayList<>();
             for (BizProductionResourceGroupDetail inviteItem : inviteList) {
                 inviteGroups.add(inviteItem.getProductionResourceGroupId());
             }
+            // 20240712 防止重复邀请判断
+            if (inviteList.stream().anyMatch(e -> e.getProtemDayworkId().equals(item.getProtemDayworkId()) && e.getProtemProcessId().equals(item.getProtemProcessId()) && e.getProtemProcessStepNumber().equals(item.getProtemProcessStepNumber()))) {
+                throw new ServiceException("请勿重复邀请相同员工。");
+            }
             //存放当前用户和被邀请人员资源组的差集
             List<Long> filterGroupIds = new ArrayList<>();
             for (Long group : groups) {
@@ -819,6 +985,7 @@ public class BizDayworkItemController extends BaseController {
                     newDetail.setCommonType(item.getCommonType());
                     newDetail.setProtemDayworkId(item.getProtemDayworkId());
                     newDetail.setProtemProcessId(item.getProtemProcessId());
+                    newDetail.setProtemProcessStepNumber(item.getProtemProcessStepNumber());
                     newDetail.setDeptId(item.getDeptId());
                     // 设置 productionResourceGroupId 属性为当前的 id
                     newDetail.setProductionResourceGroupId(id);
@@ -972,6 +1139,7 @@ public class BizDayworkItemController extends BaseController {
                 // 周转后如果是车间内的,状态为7,则需要从当前资源组中删除被邀请人
                 if(bizDayworkItem.getStatus().equals("7") || bizDayworkItem.getStatus().equals("5")) {
                     v.setProtemProcessId(lastItem.getProcessId());
+                    v.setProtemProcessStepNumber(lastItem.getProcessStepNumber());
                     // 如果被邀请人不是本工段内的人,则需要从当前资源组中删除被邀请人
                     bizProductionResourceGroupDetailService.deleTemporanyPeople(v);
                 }
@@ -1034,9 +1202,14 @@ public class BizDayworkItemController extends BaseController {
 
         // 根据获取到的所有批次的id,查询出所有批次的报工信息,不需要判断状态
         List<BizDayworkItem> bizDayworkItemList = bizDayworkItemService.query().in("daywork_id", allCarries.isEmpty() ? Collections.singletonList(0L) : allCarries.stream().map(BizDayworkCarrier::getDayworkId).collect(Collectors.toList())).list();
-
         // 获取所有的 daywork 数据集合
         List<BizDaywork> bizDayworks = bizDayworkService.query().in("id", allCarries.isEmpty() ? Collections.singletonList(0L) : allCarries.stream().map(BizDayworkCarrier::getDayworkId).collect(Collectors.toList())).list();
+//        //查询分选-包装的审核申请
+//        List<BizDayworkItemExamine> dayworkExamineList = bizDayworkItemExamineService.query().in("daywork_id", allCarries.isEmpty() ? Collections.singletonList(0L) : allCarries.stream().map(BizDayworkCarrier::getDayworkId).collect(Collectors.toList())).list();
+//        //需要删除的审核申请集合
+//        List<BizDayworkItemExamine> needRemoveList = new ArrayList<>();
+//        //需要新增的审核申请集合
+//        List<BizDayworkItemExamine> needAddList = new ArrayList<>();
         // 遍历 daywork 数据集合
         for (BizDaywork v : bizDayworks) {
             // 获取该批次的最后一条报工
@@ -1055,7 +1228,32 @@ public class BizDayworkItemController extends BaseController {
                 bizItem.setProcessId(lastItem.getProcessId());
                 bizItem.setTechnologicalProcessDetailId(lastItem.getTechnologicalProcessDetailId());
                 bizItem.setStatus(bizDayworkItem.getStatus());
-
+//                //添加分选-包装的审核申请
+//                if(bizDayworkItem.getIsNextPacking()) {
+//                    List<BizDayworkItemExamine> examineData = dayworkExamineList.stream().filter(item -> item.getDayworkId().equals(v.getId())).collect(Collectors.toList());
+//                    //如果有审核申请,则删除审核申请,重新新增
+//                    if(examineData.size() > 0) {
+//                        needRemoveList.addAll(examineData);
+//                    }else {
+//                        //新增审核申请
+//                        BizDayworkItemExamine examine = new BizDayworkItemExamine();
+//                        examine.setDayworkId(v.getId());
+//                        examine.setDayworkItemId(lastItem.getId());
+//                        examine.setDeptId(bizDayworkItem.getDeptId());
+//                        examine.setProductionPlanDetailId(bizDayworkItem.getProductionPlanDetailId());
+//                        examine.setProductDescription(bizDayworkItem.getProductDescription());
+//                        examine.setLotId(lastItem.getLotId());
+//                        examine.setLotCode(v.getLotCode());
+//                        examine.setProductId(v.getProductId());
+//                        examine.setTechnologicalProcessId(lastItem.getTechnologicalProcessId());
+//                        examine.setTechnologicalProcessDetailId(lastItem.getTechnologicalProcessDetailId());
+//                        examine.setProcessId(lastItem.getProcessId());
+//                        examine.setProcessAlias(bizDayworkItem.getProcess().getProcessAlias());
+//                        examine.setStatus(0);
+//                        needAddList.add(examine);
+//                    }
+//
+//                }
                 // 如果报工状态为:7(已送达)或者4(待周转),则需要设置对应的daywork的当前部门id,以及合格数
                 // 这里的状态值4/7,是由前端传递过来的。
                 if (bizDayworkItem.getStatus().equals("7") || bizDayworkItem.getStatus().equals("4")) {
@@ -1070,6 +1268,7 @@ public class BizDayworkItemController extends BaseController {
                 // 周转后如果是车间内的,状态为7,则需要从当前资源组中删除被邀请人
                 if(bizDayworkItem.getStatus().equals("7") || bizDayworkItem.getStatus().equals("5")) {
                     v.setProtemProcessId(lastItem.getProcessId());
+                    v.setProtemProcessStepNumber(lastItem.getProcessStepNumber());
                     // 如果被邀请人不是本工段内的人,则需要从当前资源组中删除被邀请人
                     bizProductionResourceGroupDetailService.deleTemporanyPeople(v);
                 }
@@ -1140,7 +1339,9 @@ public class BizDayworkItemController extends BaseController {
                 }
             }
         }
-
+//        //删除多余的审核申请
+//        bizDayworkItemExamineService.removeBatchByIds(needRemoveList);
+//        bizDayworkItemExamineService.saveBatch(needAddList);
         return toAjax(batch);
     }
 

+ 156 - 0
src/main/java/cn/ezhizao/project/business/product/controller/BizDayworkItemExamineController.java

@@ -0,0 +1,156 @@
+package cn.ezhizao.project.business.product.controller;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+
+import cn.ezhizao.common.utils.poi.ExcelUtil;
+import cn.ezhizao.framework.aspectj.lang.annotation.Log;
+import cn.ezhizao.framework.aspectj.lang.enums.BusinessType;
+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.product.domain.BizDaywork;
+import cn.ezhizao.project.business.product.domain.BizDayworkItemExamine;
+import cn.ezhizao.project.business.product.service.IBizDayworkItemExamineService;
+import cn.ezhizao.project.business.product.service.IBizDayworkService;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+
+/**
+ * 分选包装审核申请Controller
+ *
+ * @author ezhizao
+ * @date 2024-07-29
+ */
+@RestController
+@RequestMapping("/business/examine")
+public class BizDayworkItemExamineController extends BaseController
+{
+    @Resource
+    private IBizDayworkItemExamineService bizDayworkItemExamineService;
+    @Resource
+    private IBizDayworkService bizDayworkService;
+
+    /**
+     * 查询分选包装审核申请列表
+     */
+    @GetMapping("/list")
+    public TableDataInfo list(BizDayworkItemExamine bizDayworkItemExamine) throws NoSuchFieldException, IllegalAccessException
+    {
+        setTenantId(bizDayworkItemExamine);
+        startPage();
+        List<BizDayworkItemExamine> list = bizDayworkItemExamineService.getList(bizDayworkItemExamine);
+        return getDataTable(list);
+    }
+    @GetMapping("/getExamineByDayworkId")
+    public AjaxResult getExamineByDayworkId(BizDayworkItemExamine bizDayworkItemExamine) throws NoSuchFieldException, IllegalAccessException
+    {
+        List<BizDayworkItemExamine> examine = bizDayworkItemExamineService.query().in("daywork_id", bizDayworkItemExamine.getDayworkIds()).list();
+        List<BizDaywork> dayworkList = bizDayworkService.query().in("id", bizDayworkItemExamine.getDayworkIds()).list();
+        if(examine.size() == 0) {
+            String msg = dayworkList.stream().map(BizDaywork::getLotCode).collect(Collectors.joining(","));
+            return error("批次"+msg+"没有提出审核申请,请联系管理员添加");
+        }else {
+            List<Long> examineDayworkIds = examine.stream().map(BizDayworkItemExamine::getDayworkId).collect(Collectors.toList());
+            List<BizDaywork> notDaywork = new ArrayList<>();
+            //判断一箱多批的情况,是否存在一个提申请,一个没提申请
+            bizDayworkItemExamine.getDayworkIds().forEach(item ->{
+                if(!examineDayworkIds.contains(item)) {
+                    notDaywork.add(dayworkList.stream().filter(info -> info.getId().equals(item)).collect(Collectors.toList()).get(0));
+                }
+            });
+            if(notDaywork.size() > 0) {
+                String msg = notDaywork.stream().map(BizDaywork::getLotCode).collect(Collectors.joining(","));
+                return error("批次"+msg+"未提审核申请,请联系管理员添加");
+            }
+            List<BizDayworkItemExamine> collect = examine.stream().filter(item -> item.getStatus().equals(2) ).collect(Collectors.toList());
+            if(collect.size() == 0) {
+                String msg = examine.stream().map(BizDayworkItemExamine::getLotCode).collect(Collectors.joining(","));
+                return error("批次"+msg+"审核尚未通过,请联系管理员");
+            }else {
+                List<BizDayworkItemExamine> notExamine = new ArrayList<>();
+                //判断是否存在一个申请通过,一个未通过
+                examine.forEach(item ->{
+                    if(!item.getStatus().equals(2)){
+                        notExamine.add(item);
+                    }
+                });
+                if(notExamine.size() > 0) {
+                    String msg = notExamine.stream().map(BizDayworkItemExamine::getLotCode).collect(Collectors.joining(","));
+                    return error("批次"+msg+"审核未通过,请联系管理员");
+                }
+                return success();
+            }
+        }
+    }
+
+    /**
+     * 导出分选包装审核申请列表
+     */
+    @PreAuthorize("@ss.hasPermi('business:examine:export')")
+    @Log(title = "分选包装审核申请", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, BizDayworkItemExamine bizDayworkItemExamine) throws NoSuchFieldException, IllegalAccessException
+    {
+        setTenantId(bizDayworkItemExamine);
+        List<BizDayworkItemExamine> list = bizDayworkItemExamineService.getList(bizDayworkItemExamine);
+        ExcelUtil<BizDayworkItemExamine> util = new ExcelUtil<BizDayworkItemExamine>(BizDayworkItemExamine.class);
+        util.exportExcel(response, list, "分选包装审核申请数据");
+    }
+
+    /**
+     * 获取分选包装审核申请详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('business:examine:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return success(bizDayworkItemExamineService.getById(id));
+    }
+
+    /**
+     * 新增分选包装审核申请
+     */
+    @PreAuthorize("@ss.hasPermi('business:examine:add')")
+    @Log(title = "分选包装审核申请", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody BizDayworkItemExamine bizDayworkItemExamine) throws NoSuchFieldException, IllegalAccessException
+    {
+        setTenantId(bizDayworkItemExamine);
+        return toAjax(bizDayworkItemExamineService.save(bizDayworkItemExamine));
+    }
+
+    /**
+     * 修改分选包装审核申请
+     */
+    @PreAuthorize("@ss.hasPermi('business:examine:edit')")
+    @Log(title = "分选包装审核申请", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody BizDayworkItemExamine bizDayworkItemExamine) throws NoSuchFieldException, IllegalAccessException
+    {
+        setTenantId(bizDayworkItemExamine);
+        return toAjax(bizDayworkItemExamineService.updateById(bizDayworkItemExamine));
+    }
+
+    /**
+     * 删除分选包装审核申请
+     */
+    @PreAuthorize("@ss.hasPermi('business:examine:remove')")
+    @Log(title = "分选包装审核申请", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable List<Long> ids)
+    {
+        return toAjax(bizDayworkItemExamineService.removeBatchByIds(ids));
+    }
+}

+ 12 - 0
src/main/java/cn/ezhizao/project/business/product/controller/BizFurnaceNoInfoController.java

@@ -1,6 +1,8 @@
 package cn.ezhizao.project.business.product.controller;
 
+import java.util.Date;
 import java.util.List;
+import java.util.stream.Collectors;
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletResponse;
 
@@ -10,7 +12,10 @@ import cn.ezhizao.framework.aspectj.lang.enums.BusinessType;
 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.product.domain.BizDaywork;
+import cn.ezhizao.project.business.product.domain.BizDayworkCarrier;
 import cn.ezhizao.project.business.product.domain.BizFurnaceNoInfo;
+import cn.ezhizao.project.business.product.service.IBizDayworkCarrierService;
 import cn.ezhizao.project.business.product.service.IBizFurnaceNoInfoService;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -35,6 +40,8 @@ public class BizFurnaceNoInfoController extends BaseController
 {
     @Resource
     private IBizFurnaceNoInfoService bizFurnaceNoInfoService;
+    @Resource
+    private IBizDayworkCarrierService bizDayworkCarrierService;
 
     /**
      * 查询企业租户列表
@@ -48,6 +55,11 @@ public class BizFurnaceNoInfoController extends BaseController
         List<BizFurnaceNoInfo> list = bizFurnaceNoInfoService.getList(bizFurnaceNoInfo);
         return getDataTable(list);
     }
+    @PostMapping ("/getFurnaceNoInfoByDayworkId")
+    public AjaxResult getFurnaceNoInfoByDayworkId(@RequestBody BizFurnaceNoInfo bizFurnaceNoInfo) throws NoSuchFieldException, IllegalAccessException
+    {
+        return success(bizFurnaceNoInfoService.query().eq("daywork_id", bizFurnaceNoInfo.getDayworkId()).one());
+    }
 
     /**
      * 导出企业租户列表

+ 352 - 63
src/main/java/cn/ezhizao/project/business/product/controller/BizProcessInspecionController.java

@@ -6,9 +6,11 @@ import java.util.stream.Collectors;
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletResponse;
 
+import cn.ezhizao.common.utils.bean.BeanUtils;
 import cn.ezhizao.common.utils.poi.ExcelUtil;
 import cn.ezhizao.framework.aspectj.lang.annotation.Log;
 import cn.ezhizao.framework.aspectj.lang.enums.BusinessType;
+import cn.ezhizao.framework.redis.RedisCache;
 import cn.ezhizao.framework.web.controller.BaseController;
 import cn.ezhizao.framework.web.domain.AjaxResult;
 import cn.ezhizao.framework.web.page.TableDataInfo;
@@ -24,6 +26,7 @@ import cn.ezhizao.project.business.technologicalProcessDetail.domain.BizTechnolo
 import cn.ezhizao.project.business.technologicalProcessDetail.service.IBizTechnologicalProcessDetailService;
 import cn.ezhizao.project.system.domain.SysUser;
 import cn.ezhizao.project.system.service.ISysUserService;
+import cn.hutool.core.date.DateTime;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
@@ -90,6 +93,13 @@ public class BizProcessInspecionController extends BaseController {
     private IBizOutsourcedOrderDetailService bizOutsourcedOrderDetailService;
     @Resource
     private IBizOutsourcedOrderDetailProcessService bizOutsourcedOrderDetailProcessService;
+    @Resource
+    private IBizDayworkItemConsultPictureService bizDayworkItemConsultPictureService;
+    @Resource
+    private RedisCache redisCache;
+
+    final private String processInspectionNoKey = "processInspectionCode";
+
 
     /**
      * 查询序检主列表
@@ -288,34 +298,96 @@ public class BizProcessInspecionController extends BaseController {
         bizDayworkItemRejectService.saveBatch(rejects);
         //保存咨询信息
 
-        List<BizDayworkItemConsult> consults = processInspecion.getDayworkItemConsults();
+        List<BizDayworkItemConsult> consults = processInspecion.getDayworkItemConsults().stream().filter(item-> item.getId()==null).collect(Collectors.toList());
+        List<BizDayworkItemConsult> needAdd = new ArrayList<>();
         if (consults != null && consults.size() > 0) {
             for (BizDayworkItemConsult consult : consults) {
-                consult.setUserId(user == null ? 0L : user.getUserId());
-                consult.setNickName(user == null ? "" : user.getNickName());
-                consult.setDayworkId(daywork.getId());
-                consult.setProcessInspectionId(processInspecion.getId());
-                consult.setProductionPlanId(daywork.getProductionPlanId());
-                consult.setProductionPlanDetailId(daywork.getProductionPlanDetailId());
-                consult.setProductionPlanDetailSubDetailId(daywork.getProductionPlanDetailSubDetailId());
-                consult.setLotId(processInspecion.getLot().getId());
-                consult.setLotCode(processInspecion.getLot().getLotCode());
-                consult.setDayworkId(daywork.getId());
-                consult.setDayworkItemId(dayworkItem.getId());
-                consult.setProductId(processInspecion.getLot().getProductId());
-                consult.setProductDescription(processInspecion.getLot().getProductDescription());
-                consult.setTechnologicalProcessId(processInspecion.getLot().getTechnologicalProcessId());
-                consult.setTechnologicalProcessDetailId(dayworkItem.getTechnologicalProcessDetailId());
-                consult.setProcessId(dayworkItem.getProcessId());
-                consult.setProcessAlias(processInspecion.getLot().getProcessAlias());
-                consult.setIsOutsourcedInspection(1);
-                consult.setTechnicianId(technicianUser == null ? 0L : technicianUser.getUserId());
+                    BizDayworkItemConsult consultInfo = new BizDayworkItemConsult();
+                    consultInfo.setStatus(consult.getStatus());
+                    consultInfo.setContent(consult.getContent());
+                    consultInfo.setConsultDepartment(consult.getConsultDepartment());
+                    consultInfo.setUserId(user == null ? 0L : user.getUserId());
+                    consultInfo.setNickName(user == null ? "" : user.getNickName());
+                    consultInfo.setDayworkId(daywork.getId());
+                    consultInfo.setProcessInspectionId(processInspecion.getId());
+                    consultInfo.setProductionPlanId(daywork.getProductionPlanId());
+                    consultInfo.setProductionPlanDetailId(daywork.getProductionPlanDetailId());
+                    consultInfo.setProductionPlanDetailSubDetailId(daywork.getProductionPlanDetailSubDetailId());
+                    consultInfo.setLotId(processInspecion.getLot().getId());
+                    consultInfo.setLotCode(processInspecion.getLot().getLotCode());
+                    consultInfo.setDayworkId(daywork.getId());
+                    consultInfo.setDayworkItemId(dayworkItem.getId());
+                    consultInfo.setProductId(processInspecion.getLot().getProductId());
+                    consultInfo.setProductDescription(processInspecion.getLot().getProductDescription());
+                    consultInfo.setTechnologicalProcessId(processInspecion.getLot().getTechnologicalProcessId());
+                    consultInfo.setTechnologicalProcessDetailId(dayworkItem.getTechnologicalProcessDetailId());
+                    consultInfo.setProcessId(dayworkItem.getProcessId());
+                    consultInfo.setProcessAlias(processInspecion.getLot().getProcessAlias());
+                    consultInfo.setIsOutsourcedInspection(1);
+                    consultInfo.setTechnicianId(technicianUser == null ? 0L : technicianUser.getUserId());
+                    needAdd.add(consultInfo);
             }
+            bizDayworkItemConsultService.saveBatch(needAdd);
+            List<BizDayworkItemConsultPicture> pictures = new ArrayList<>();
+            needAdd.forEach(ne ->{
+                consults.forEach(item ->{
+                    item.getPictures().forEach(info ->{
+                        BizDayworkItemConsultPicture consultPicture = new BizDayworkItemConsultPicture();
+                        consultPicture.setDayworkItemConsultId(ne.getId());
+                        consultPicture.setPictureName(info.getPictureName());
+                        consultPicture.setUrl(info.getUrl());
+                        pictures.add(consultPicture);
+                    });
+                });
+            });
+            bizDayworkItemConsultPictureService.saveBatch(pictures);
         }
 
+
         //修改daywaork信息
         dayworkItem.setIsProcessInspection(1);
-        return success(bizDayworkItemService.saveOrUpdate(dayworkItem) && bizDayworkItemConsultService.saveOrUpdateBatch(consults));
+        return success(bizDayworkItemService.saveOrUpdate(dayworkItem) );
+    }
+    @PostMapping("/getProcessInspectionByDayworkId")
+    public AjaxResult getProcessInspectionByDayworkId(@RequestBody BizProcessInspecion processInspecion) {
+        List<BizProcessInspectionDetail> list = bizProcessInspecionService.getInspectionByDayworkId(processInspecion);
+        List<BizDayworkItemConsult> bizDayworkItemConsultList = new ArrayList<>();
+        if(!list.isEmpty()) {
+            //咨询信息
+            List<Long> inspectionIds = list.stream().map(BizProcessInspectionDetail::getProcessInspectionId).distinct().collect(Collectors.toList());
+            bizDayworkItemConsultList = bizDayworkItemConsultService.getListByInspectionIds(inspectionIds);
+        }
+        // 并将每个分组的元素收集到一个 List 中
+        Map<Long, List<BizProcessInspectionDetail>> groupedByProcessInspectionId =
+                list.stream()
+                        .collect(Collectors.groupingBy(
+                                BizProcessInspectionDetail::getProcessInspectionId, // 分组依据的函数
+                                Collectors.toList() // 指定分组内的元素收集为 List
+                        ));
+        List<BizProcessInspecion> result = new ArrayList<>();
+        for (Map.Entry<Long, List<BizProcessInspectionDetail>> entry : groupedByProcessInspectionId.entrySet()) {
+                List<BizProcessInspectionDetail> details = entry.getValue();
+                BizProcessInspecion bizProcessInspecion = new BizProcessInspecion();
+                bizProcessInspecion.setProcessAlias(details.get(0).getProcessAlias());
+                bizProcessInspecion.setNickName(details.get(0).getInspectionName());
+                bizProcessInspecion.setRemark(details.get(0).getRemark());
+                bizProcessInspecion.setStatus(details.get(0).getStatus());
+                bizProcessInspecion.setId(details.get(0).getProcessInspectionId());
+                List<BizProcessInspectionDetail> rejectList = new ArrayList<>();
+                for (BizProcessInspectionDetail reject : details) {
+                    BizProcessInspectionDetail rejectInfo = new BizProcessInspectionDetail();
+                    rejectInfo.setCheckStandard(reject.getCheckStandard());
+                    rejectInfo.setRejectNum(reject.getRejectNum());
+                    rejectInfo.setCheckResult(reject.getCheckResult());
+                    rejectList.add(rejectInfo);
+                }
+                bizProcessInspecion.setProcessInspectionDetails(rejectList);
+            if(!bizDayworkItemConsultList.isEmpty()) {
+                bizProcessInspecion.setDayworkItemConsults(bizDayworkItemConsultList.stream().filter(item -> item.getProcessInspectionId().equals(bizProcessInspecion.getId())).collect(Collectors.toList()));
+            }
+                result.add(bizProcessInspecion);
+        }
+        return success(result);
     }
 
     /**
@@ -379,34 +451,54 @@ public class BizProcessInspecionController extends BaseController {
         bizDayworkItemRejectService.saveBatch(rejects);
         //保存咨询信息
 
-        List<BizDayworkItemConsult> consults = processInspecion.getDayworkItemConsults();
+        List<BizDayworkItemConsult> consults = processInspecion.getDayworkItemConsults().stream().filter(item-> item.getId()==null).collect(Collectors.toList());
+        List<BizDayworkItemConsult> needAdd = new ArrayList<>();
         if (consults != null && consults.size() > 0) {
             for (BizDayworkItemConsult consult : consults) {
-                consult.setUserId(user == null ? 0L : user.getUserId());
-                consult.setNickName(user == null ? "" : user.getNickName());
-                consult.setDayworkId(daywork.getId());
-                consult.setProcessInspectionId(processInspecion.getId());
-                consult.setProductionPlanId(daywork.getProductionPlanId());
-                consult.setProductionPlanDetailId(daywork.getProductionPlanDetailId());
-                consult.setProductionPlanDetailSubDetailId(daywork.getProductionPlanDetailSubDetailId());
-                consult.setLotId(processInspecion.getLot().getId());
-                consult.setLotCode(processInspecion.getLot().getLotCode());
-                consult.setDayworkId(daywork.getId());
-                consult.setDayworkItemId(dayworkItem.getId());
-                consult.setProductId(processInspecion.getLot().getProductId());
-                consult.setProductDescription(processInspecion.getLot().getProductDescription());
-                consult.setTechnologicalProcessId(processInspecion.getLot().getTechnologicalProcessId());
-                consult.setTechnologicalProcessDetailId(dayworkItem.getTechnologicalProcessDetailId());
-                consult.setProcessId(dayworkItem.getProcessId());
-                consult.setProcessAlias(processInspecion.getLot().getProcessAlias());
-                consult.setIsProcessInspection(1);
-                consult.setTechnicianId(technicianUser == null ? 0L : technicianUser.getUserId());
+                    BizDayworkItemConsult consultInfo = new BizDayworkItemConsult();
+                    consultInfo.setConsultDepartment(consult.getConsultDepartment());
+                    consultInfo.setUserId(user == null ? 0L : user.getUserId());
+                    consultInfo.setNickName(user == null ? "" : user.getNickName());
+                    consultInfo.setDayworkId(daywork.getId());
+                    consultInfo.setContent(consult.getContent());
+                    consultInfo.setProcessInspectionId(processInspecion.getId());
+                    consultInfo.setProductionPlanId(daywork.getProductionPlanId());
+                    consultInfo.setProductionPlanDetailId(daywork.getProductionPlanDetailId());
+                    consultInfo.setProductionPlanDetailSubDetailId(daywork.getProductionPlanDetailSubDetailId());
+                    consultInfo.setLotId(processInspecion.getLot().getId());
+                    consultInfo.setLotCode(processInspecion.getLot().getLotCode());
+                    consultInfo.setDayworkId(daywork.getId());
+                    consultInfo.setDayworkItemId(dayworkItem.getId());
+                    consultInfo.setProductId(processInspecion.getLot().getProductId());
+                    consultInfo.setProductDescription(processInspecion.getLot().getProductDescription());
+                    consultInfo.setTechnologicalProcessId(processInspecion.getLot().getTechnologicalProcessId());
+                    consultInfo.setTechnologicalProcessDetailId(dayworkItem.getTechnologicalProcessDetailId());
+                    consultInfo.setProcessId(dayworkItem.getProcessId());
+                    consultInfo.setProcessAlias(processInspecion.getLot().getProcessAlias());
+                    consultInfo.setIsProcessInspection(1);
+                    consultInfo.setTechnicianId(technicianUser == null ? 0L : technicianUser.getUserId());
+                    consultInfo.setStatus(consult.getStatus());
+                    consultInfo.setPictures(consult.getPictures());
+                    needAdd.add(consultInfo);
             }
+            bizDayworkItemConsultService.saveBatch(needAdd);
+            List<BizDayworkItemConsultPicture> pictures = new ArrayList<>();
+            needAdd.forEach(ne ->{
+                    ne.getPictures().forEach(info ->{
+                        BizDayworkItemConsultPicture consultPicture = new BizDayworkItemConsultPicture();
+                        consultPicture.setDayworkItemConsultId(ne.getId());
+                        consultPicture.setPictureName(info.getPictureName());
+                        consultPicture.setUrl(info.getUrl());
+                        pictures.add(consultPicture);
+                    });
+            });
+            bizDayworkItemConsultPictureService.saveBatch(pictures);
         }
 
+
         //修改daywaork信息
         dayworkItem.setIsProcessInspection(1);
-        return success(bizDayworkItemService.saveOrUpdate(dayworkItem) && bizDayworkItemConsultService.saveOrUpdateBatch(consults));
+        return success(bizDayworkItemService.saveOrUpdate(dayworkItem) );
     }
 
     private boolean checkOutsourceDayworkItem(Long outsourceOrderDetailId) {
@@ -419,9 +511,184 @@ public class BizProcessInspecionController extends BaseController {
         return items.stream().noneMatch(v -> v.getCreateTime().compareTo(bizDayworkItem.getCreateTime()) > 0 && v.getStatus().compareTo("0") >= 0 && v.getStatus().compareTo("3") <= 0);
     }
 
+    @Transactional
+//    @PostMapping("/saveOutsourcedInspecion")
+    public AjaxResult saveOutsourcedInspectionV3(@RequestBody BizProcessInspecion processInspecion) throws NoSuchFieldException, IllegalAccessException {
+//        // 判断是否已有未确认外协检查
+//        if (bizProcessInspecionService.query().eq("outsource_order_detail_id", processInspecion.getOutsourceOrderDetailId()).eq("status", 0).count() > 0) {
+//            return error("已有未完成外协检查单。");
+//        }
+        //根据lot信息保存序检表
+        BizDaywork daywork = bizDayworkService.query().eq("lot_code", processInspecion.getLot().getLotCode()).one();
+        BizProduct product = bizProductService.getById(processInspecion.getLot().getProductId());
+        SysUser technicianUser = sysUserService.selectUserById(product.getTechnicianId());
+        BizDayworkItem dayworkItem = bizDayworkItemService.getById(processInspecion.getLot().getDayworkItemId());
+        BizReturnReceiptDetail bizReturnReceiptDetail = bizReturnReceiptDetailService.query().eq("daywork_id", dayworkItem.getDayworkId()).eq("technological_process_detail_id", dayworkItem.getTechnologicalProcessDetailId()).eq("deleted", 0).one();
+
+        SysUser user = sysUserService.selectUserById(processInspecion.getUser().getUserId());
+
+        // 判断是否已经进行过质检
+        BizProcessInspecion previousItem = bizProcessInspecionService.query().eq("outsource_order_detail_id", bizReturnReceiptDetail.getOutsourceDetailId()).one();
+        if (previousItem != null) {
+            if (processInspecion.getId() == null) {
+                previousItem.setRecheckDate(DateTime.now().toJdkDate());
+            }
+            previousItem.setIsInspectionCarrierChanged(0);
+            previousItem.setInspectionCarrierChangedTime(null);
+            previousItem.setStatus(processInspecion.getStatus());
+            previousItem.setRejectNum(processInspecion.getRejectNum());
+            previousItem.setExaminingNum(processInspecion.getExaminingNum());
+            previousItem.setDisqualificationNum(processInspecion.getDisqualificationNum());
+        } else {
+            previousItem = new BizProcessInspecion(processInspecion);
+            String beginCode = "WDD" + DateTime.now().toString("yyMM");
+            String previous = redisCache.hasKey(processInspectionNoKey) ? redisCache.getCacheObject(processInspectionNoKey) : "";
+            String codeValue = "";
+            if (previous.isEmpty()) {
+                previous = (beginCode + "000001");
+            } else {
+                codeValue = previous;
+                int lastFourDigits = Integer.parseInt(codeValue.substring(7, 13));
+                lastFourDigits += 1; // 加1
+                codeValue = codeValue.substring(0, 7) + String.format("%06d", lastFourDigits);
+                previous = codeValue;
+            }
+            previousItem.setOutsourcedInspectionNo(previous);
+            redisCache.setCacheObject(processInspectionNoKey, previous);
+        }
+        previousItem.setReturnReceiptDetailId(bizReturnReceiptDetail.getId());
+        previousItem.setUserId(user == null ? 0L : user.getUserId());
+        previousItem.setNickName(user == null ? "" : user.getNickName());
+        previousItem.setCarrierId(processInspecion.getLot().getCarrierId());
+        previousItem.setCarrierCode(processInspecion.getLot().getCarrierCode());
+        previousItem.setDayworkId(daywork.getId());
+        previousItem.setProductionPlanId(daywork.getProductionPlanId());
+        previousItem.setDayworkItemId(dayworkItem.getId());
+        previousItem.setProductionPlanDetailId(daywork.getProductionPlanDetailId());
+        previousItem.setProductionPlanDetailSubDetailId(daywork.getProductionPlanDetailSubDetailId());
+        previousItem.setProductDescription(processInspecion.getLot().getProductDescription());
+        previousItem.setLotId(processInspecion.getLot().getId());
+        previousItem.setLotCode(processInspecion.getLot().getLotCode());
+        previousItem.setDeptId(daywork.getDeptId());
+        previousItem.setProductId(processInspecion.getLot().getProductId());
+        previousItem.setTechnologicalProcessId(processInspecion.getLot().getTechnologicalProcessId());
+        previousItem.setInspectionCarrierCode(processInspecion.getInspectionCarrierCode());
+        previousItem.setInspectionCarrierId(processInspecion.getInspectionCarrierId());
+
+        if (previousItem.getStartTime() == null) {
+            previousItem.setStartTime(new Date());
+        }
+        if (previousItem.getStatus() != 0) {
+            previousItem.setEndTime(new Date());
+            previousItem.setFirstUpdaterId(processInspecion.getFirstUpdaterId() == null || processInspecion.getFirstUpdaterId().equals(0L) ? user != null ? user.getUserId() : 0L : processInspecion.getFirstUpdaterId());
+
+        }
+        if (!checkOutsourceDayworkItem(processInspecion.getOutsourceOrderDetailId())) {
+            return error("编辑失败,下序已经生产加工");
+        }
+
+        BizCarrier carrier = bizCarrierService.query().eq("id", processInspecion.getInspectionCarrierId()).one();
+        List<BizDayworkCarrier> dayworkCarriers = bizDayworkCarrierService.query().eq("carrier_id", carrier.getId()).eq("is_changed", 0).list();
+        if (dayworkCarriers.stream().anyMatch(v -> !v.getDayworkId().equals(daywork.getId()))) {
+            return error("检测载具已绑定其他批次");
+        }
+
+        //保存
+        bizProcessInspecionService.saveOrUpdate(previousItem);
+
+        if (dayworkCarriers.stream().noneMatch(v -> v.getDayworkId().equals(daywork.getId())) && (previousItem.getIsInspectionCarrierChanged() == null || previousItem.getIsInspectionCarrierChanged().equals(0))) {
+            // 该检测载具需要绑定到当前批次
+            BizDayworkCarrier newDayworkCarrier = new BizDayworkCarrier();
+            newDayworkCarrier.setDayworkId(previousItem.getDayworkId());
+            newDayworkCarrier.setCarrierCode(carrier.getCode());
+            newDayworkCarrier.setCarrierId(carrier.getId());
+            newDayworkCarrier.setLotCode(previousItem.getLotCode());
+            newDayworkCarrier.setLotId(previousItem.getLotId());
+            newDayworkCarrier.setProductionPlanDetailId(previousItem.getProductionPlanDetailId());
+            newDayworkCarrier.setProcessInspectionId(previousItem.getId());
+            bizDayworkCarrierService.save(newDayworkCarrier);
+        }
+        List<BizDayworkItemConsult> consults = new ArrayList<>();
+        if (processInspecion.getId() != null) {
+            //保存废品信息
+            List<BizProcessInspectionDetail> rejects = processInspecion.getRejects();
+            //保存前先删除原先废品信息
+            BizDayworkItemReject rej = new BizDayworkItemReject();
+            rej.setProcessInspectionId(processInspecion.getId());
+            bizDayworkItemRejectService.removeReject(rej);
+            BizProcessInspectionDetail inspectionDetail = new BizProcessInspectionDetail();
+            inspectionDetail.setProcessInspectionId(processInspecion.getId());
+            processInspectionDetailService.physicalDelete(inspectionDetail);
+            BizDayworkItemReject newRej = new BizDayworkItemReject();
+            newRej.setRejectNum(0L);
+
+            if (rejects != null && rejects.size() > 0) {
+                for (BizProcessInspectionDetail reject : rejects) {
+                    reject.setId(null);
+                    reject.setUserId(user == null ? 0L : user.getUserId());
+                    reject.setProcessInspectionId(processInspecion.getId());
+                    reject.setDayworkId(0L);
+                    reject.setProductionPlanId(daywork.getProductionPlanId());
+                    reject.setProductionPlanDetailId(daywork.getProductionPlanDetailId());
+                    reject.setProductionPlanDetailSubDetailId(daywork.getProductionPlanDetailSubDetailId());
+                    reject.setLotId(processInspecion.getLot().getId());
+                    reject.setDayworkItemId(dayworkItem.getId());
+                    Long rejectNum = reject.getRejectNum() == null ? 0L : reject.getRejectNum();
+                    newRej.setRejectNum(newRej.getRejectNum());
+                    newRej.setUserId(user == null ? 0L : user.getUserId());
+                    newRej.setProcessInspectionId(processInspecion.getId());
+                    newRej.setDayworkId(0L);
+                    newRej.setProductionPlanId(daywork.getProductionPlanId());
+                    newRej.setProductionPlanDetailId(daywork.getProductionPlanDetailId());
+                    newRej.setProductionPlanDetailSubDetailId(daywork.getProductionPlanDetailSubDetailId());
+                    newRej.setLotId(processInspecion.getLot().getId());
+                    newRej.setDayworkItemId(dayworkItem.getId());
+                    newRej.setReason("外协检查废品");
+                    newRej.setDeptId(processInspecion.getDeptId());
+                }
+            }
+            processInspectionDetailService.saveBatch(rejects);
+            bizDayworkItemRejectService.save(newRej);
+            //保存咨询信息
+            consults.addAll(processInspecion.getDayworkItemConsults());
+            if (consults.size() > 0) {
+                for (BizDayworkItemConsult consult : consults) {
+                    consult.setUserId(user == null ? 0L : user.getUserId());
+                    consult.setNickName(user == null ? "" : user.getNickName());
+                    consult.setDayworkId(daywork.getId());
+                    consult.setProcessInspectionId(processInspecion.getId());
+                    consult.setProductionPlanId(daywork.getProductionPlanId());
+                    consult.setProductionPlanDetailId(daywork.getProductionPlanDetailId());
+                    consult.setProductionPlanDetailSubDetailId(daywork.getProductionPlanDetailSubDetailId());
+                    consult.setLotId(processInspecion.getLot().getId());
+                    consult.setLotCode(processInspecion.getLot().getLotCode());
+                    consult.setDayworkId(daywork.getId());
+                    consult.setDayworkItemId(dayworkItem.getId());
+                    consult.setProductId(processInspecion.getLot().getProductId());
+                    consult.setProductDescription(processInspecion.getLot().getProductDescription());
+                    consult.setTechnologicalProcessId(processInspecion.getLot().getTechnologicalProcessId());
+                    consult.setTechnologicalProcessDetailId(dayworkItem.getTechnologicalProcessDetailId());
+                    consult.setProcessId(dayworkItem.getProcessId());
+                    consult.setProcessAlias(processInspecion.getLot().getProcessAlias());
+                    consult.setIsOutsourcedInspection(1);
+                    consult.setTechnicianId(technicianUser == null ? 0L : technicianUser.getUserId());
+                }
+            }
+        }
+
+        //修改daywaork信息
+        dayworkItem.setIsProcessInspection(1);
+        return success(bizDayworkItemService.saveOrUpdate(dayworkItem) && (consults.isEmpty() || bizDayworkItemConsultService.saveOrUpdateBatch(consults)));
+    }
+
+
     @Transactional
     @PostMapping("/saveOutsourcedInspecion")
     public AjaxResult saveOutsourcedInspectionV2(@RequestBody BizProcessInspecion processInspecion) throws NoSuchFieldException, IllegalAccessException {
+//        // 判断是否已有未确认外协检查
+//        if (bizProcessInspecionService.query().eq("outsource_order_detail_id", processInspecion.getOutsourceOrderDetailId()).eq("status", 0).count() > 0) {
+//            return error("已有未完成外协检查单。");
+//        }
         //根据lot信息保存序检表
         BizDaywork daywork = bizDayworkService.query().eq("lot_code", processInspecion.getLot().getLotCode()).one();
         BizProduct product = bizProductService.getById(processInspecion.getLot().getProductId());
@@ -429,6 +696,10 @@ public class BizProcessInspecionController extends BaseController {
         BizDayworkItem dayworkItem = bizDayworkItemService.getById(processInspecion.getLot().getDayworkItemId());
         BizReturnReceiptDetail bizReturnReceiptDetail = bizReturnReceiptDetailService.query().eq("daywork_id", dayworkItem.getDayworkId()).eq("technological_process_detail_id", dayworkItem.getTechnologicalProcessDetailId()).eq("deleted", 0).one();
 
+        // 判断是否已经进行过质检
+//        BizProcessInspecion previousItem = bizProcessInspecionService.query().eq("outsource_order_detail_id", bizReturnReceiptDetail.getOutsourceDetailId()).one();
+//        previousItem.setRecheckDate(DateTime.now().toJdkDate());
+
         SysUser user = sysUserService.selectUserById(processInspecion.getUser().getUserId());
         processInspecion.setReturnReceiptDetailId(bizReturnReceiptDetail.getId());
         processInspecion.setUserId(user == null ? 0L : user.getUserId());
@@ -523,34 +794,52 @@ public class BizProcessInspecionController extends BaseController {
         bizDayworkItemRejectService.save(newRej);
         //保存咨询信息
 
-        List<BizDayworkItemConsult> consults = processInspecion.getDayworkItemConsults();
+        List<BizDayworkItemConsult> consults = processInspecion.getDayworkItemConsults().stream().filter(item-> item.getId()==null).collect(Collectors.toList());
+        List<BizDayworkItemConsult> needAdd = new ArrayList<>();
         if (consults != null && consults.size() > 0) {
             for (BizDayworkItemConsult consult : consults) {
-                consult.setUserId(user == null ? 0L : user.getUserId());
-                consult.setNickName(user == null ? "" : user.getNickName());
-                consult.setDayworkId(daywork.getId());
-                consult.setProcessInspectionId(processInspecion.getId());
-                consult.setProductionPlanId(daywork.getProductionPlanId());
-                consult.setProductionPlanDetailId(daywork.getProductionPlanDetailId());
-                consult.setProductionPlanDetailSubDetailId(daywork.getProductionPlanDetailSubDetailId());
-                consult.setLotId(processInspecion.getLot().getId());
-                consult.setLotCode(processInspecion.getLot().getLotCode());
-                consult.setDayworkId(daywork.getId());
-                consult.setDayworkItemId(dayworkItem.getId());
-                consult.setProductId(processInspecion.getLot().getProductId());
-                consult.setProductDescription(processInspecion.getLot().getProductDescription());
-                consult.setTechnologicalProcessId(processInspecion.getLot().getTechnologicalProcessId());
-                consult.setTechnologicalProcessDetailId(dayworkItem.getTechnologicalProcessDetailId());
-                consult.setProcessId(dayworkItem.getProcessId());
-                consult.setProcessAlias(processInspecion.getLot().getProcessAlias());
-                consult.setIsOutsourcedInspection(1);
-                consult.setTechnicianId(technicianUser == null ? 0L : technicianUser.getUserId());
+                BizDayworkItemConsult consultInfo = new BizDayworkItemConsult();
+                consultInfo.setPictures(consult.getPictures());
+                consultInfo.setUserId(user == null ? 0L : user.getUserId());
+                consultInfo.setNickName(user == null ? "" : user.getNickName());
+                consultInfo.setDayworkId(daywork.getId());
+                consultInfo.setContent(consult.getContent());
+                consultInfo.setConsultDepartment(consult.getConsultDepartment());
+                consultInfo.setProcessInspectionId(processInspecion.getId());
+                consultInfo.setProductionPlanId(daywork.getProductionPlanId());
+                consultInfo.setProductionPlanDetailId(daywork.getProductionPlanDetailId());
+                consultInfo.setProductionPlanDetailSubDetailId(daywork.getProductionPlanDetailSubDetailId());
+                consultInfo.setLotId(processInspecion.getLot().getId());
+                consultInfo.setLotCode(processInspecion.getLot().getLotCode());
+                consultInfo.setDayworkId(daywork.getId());
+                consultInfo.setDayworkItemId(dayworkItem.getId());
+                consultInfo.setProductId(processInspecion.getLot().getProductId());
+                consultInfo.setProductDescription(processInspecion.getLot().getProductDescription());
+                consultInfo.setTechnologicalProcessId(processInspecion.getLot().getTechnologicalProcessId());
+                consultInfo.setTechnologicalProcessDetailId(dayworkItem.getTechnologicalProcessDetailId());
+                consultInfo.setProcessId(dayworkItem.getProcessId());
+                consultInfo.setProcessAlias(processInspecion.getLot().getProcessAlias());
+                consultInfo.setIsOutsourcedInspection(1);
+                consultInfo.setTechnicianId(technicianUser == null ? 0L : technicianUser.getUserId());
+                needAdd.add(consultInfo);
             }
+            bizDayworkItemConsultService.saveBatch(needAdd);
+            List<BizDayworkItemConsultPicture> pictures = new ArrayList<>();
+            needAdd.forEach(ne ->{
+                ne.getPictures().forEach(info ->{
+                        BizDayworkItemConsultPicture consultPicture = new BizDayworkItemConsultPicture();
+                        consultPicture.setDayworkItemConsultId(ne.getId());
+                        consultPicture.setPictureName(info.getPictureName());
+                        consultPicture.setUrl(info.getUrl());
+                        pictures.add(consultPicture);
+                    });
+            });
+            bizDayworkItemConsultPictureService.saveBatch(pictures);
         }
 
         //修改daywaork信息
         dayworkItem.setIsProcessInspection(1);
-        return success(bizDayworkItemService.saveOrUpdate(dayworkItem) && bizDayworkItemConsultService.saveOrUpdateBatch(consults));
+        return success(bizDayworkItemService.saveOrUpdate(dayworkItem));
     }
 
 

+ 14 - 0
src/main/java/cn/ezhizao/project/business/product/controller/BizQuickDayworkController.java

@@ -513,6 +513,20 @@ public class BizQuickDayworkController extends BaseController {
                 l.getDaywork().setDeptId(l.getDeptId());
                 l.getDaywork().setProcessQualifiedNum(l.getDaywork().getTemporaryProcessQualifiedNum());
                 updateDaywork.add(l.getDaywork());
+
+                // 删除邀请报工
+                BizDaywork daywork = l.getDaywork();
+                daywork.setProtemProcessId(l.getProcessId());
+                daywork.setProtemProcessStepNumber(l.getProcessStepNumber());
+                // 如果被邀请人不是本工段内的人,则需要从当前资源组中删除被邀请人
+                bizProductionResourceGroupDetailService.deleTemporanyPeople(daywork);
+            } else if (l.getStatus().equals("7")) {
+                // 删除邀请报工
+                BizDaywork daywork = l.getDaywork();
+                daywork.setProtemProcessId(l.getProcessId());
+                daywork.setProtemProcessStepNumber(l.getProcessStepNumber());
+                // 如果被邀请人不是本工段内的人,则需要从当前资源组中删除被邀请人
+                bizProductionResourceGroupDetailService.deleTemporanyPeople(daywork);
             }
             BizDayworkItem bizDayworkItem = new BizDayworkItem();
             bizDayworkItem.setDayworkId(l.getDayworkId());

+ 35 - 7
src/main/java/cn/ezhizao/project/business/product/controller/SortDayworkController.java

@@ -1,5 +1,6 @@
 package cn.ezhizao.project.business.product.controller;
 
+import cn.ezhizao.common.utils.bean.BeanUtils;
 import cn.ezhizao.framework.web.controller.BaseController;
 import cn.ezhizao.framework.web.domain.AjaxResult;
 import cn.ezhizao.project.business.inspection.domain.BizInspectionInstruction;
@@ -15,6 +16,7 @@ import cn.ezhizao.project.business.technologicalProcessDetail.service.IBizTechno
 import cn.ezhizao.project.system.domain.SysUser;
 import cn.ezhizao.project.system.service.ISysUserService;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import org.springframework.context.annotation.Bean;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
 
@@ -57,6 +59,8 @@ public class SortDayworkController extends BaseController {
     private IBizTechnologicalProcessService bizTechnologicalProcessService;
     @Resource
     private ISysUserService sysUserService;
+    @Resource
+    private IBizDayworkItemConsultPictureService bizDayworkItemConsultPictureService;
     // 修改报工状态为开始
     @PostMapping("/start")
     public AjaxResult start(@RequestBody BizDaywork bizDaywork) {
@@ -101,14 +105,16 @@ public class SortDayworkController extends BaseController {
         if (bizDayworkItem.getKeywords() != null ) {
             // 如果 keywords 不为空或空字符串,则添加 LIKE 条件
             list = bizProductInspectionInstructionService.query()
-                    .eq("technological_process_id", bizDayworkItem.getTechnologicalProcessId())
+                    .eq("product_id", bizLot.getProductId())
+                    .eq("technology_version", bizLot.getTechnologyVersion())
                     .eq("process_id", bizDayworkItem.getProcessId())
                     .like("standard", bizDayworkItem.getKeywords()) // 添加 LIKE 条件
                     .list();
         } else {
             // 如果 keywords 为空,则不添加 LIKE 条件
             list = bizProductInspectionInstructionService.query()
-                    .eq("technological_process_id", bizDayworkItem.getTechnologicalProcessId())
+                    .eq("product_id", bizLot.getProductId())
+                    .eq("technology_version", bizLot.getTechnologyVersion())
                     .eq("process_id", bizDayworkItem.getProcessId())
                     .list();
         }
@@ -124,13 +130,35 @@ public class SortDayworkController extends BaseController {
     }
 
     @PostMapping("saveConsult")
+    @Transactional
     public AjaxResult saveConsult(@RequestBody BizDayworkItemConsult bizDayworkItemConsult) {
-        if (bizDayworkItemConsultService.save(bizDayworkItemConsult)){
+            List<BizDayworkItemConsult> needAdd = new ArrayList<>();
+            bizDayworkItemConsult.getDepartments().forEach(item ->{
+                BizDayworkItemConsult consult = new BizDayworkItemConsult();
+                BeanUtils.copyProperties(bizDayworkItemConsult,consult);
+                consult.setConsultDepartment(item);
+                needAdd.add(consult);
+        });
+            bizDayworkItemConsultService.saveBatch(needAdd);
+            List<BizDayworkItemConsultPicture> pictures = new ArrayList<>();
+            for(int i = 0;i<needAdd.size();i++) {
+                for(int j = 0;j<bizDayworkItemConsult.getPictures().size();j++) {
+                    BizDayworkItemConsultPicture consultPicture = new BizDayworkItemConsultPicture();
+                    consultPicture.setDayworkItemConsultId(needAdd.get(i).getId());
+                    consultPicture.setPictureName(bizDayworkItemConsult.getPictures().get(j).getPictureName());
+                    consultPicture.setUrl(bizDayworkItemConsult.getPictures().get(j).getUrl());
+                    pictures.add(consultPicture);
+                }
+            }
+        bizDayworkItemConsultPictureService.saveBatch(pictures);
             List<BizDayworkItemConsult> bizDayworkItemConsults = bizDayworkItemConsultService.query().eq("daywork_item_id", bizDayworkItemConsult.getDayworkItemId()).list();
-            return success(bizDayworkItemConsults);
-        } else {
-            return error("咨询提交失败");
-        }
+             List<Long> consultIds = bizDayworkItemConsults.stream().map(BizDayworkItemConsult::getId).collect(Collectors.toList());
+        List<BizDayworkItemConsultPicture> consultPictures = bizDayworkItemConsultPictureService.query().in("daywork_item_consult_id", consultIds.isEmpty() ? Collections.singletonList("0") : consultIds).list();
+        bizDayworkItemConsults.forEach(info ->{
+            List<BizDayworkItemConsultPicture> pic = consultPictures.stream().filter(picture -> picture.getDayworkItemConsultId().equals(info.getId())).collect(Collectors.toList());
+            info.setPictures(pic);
+        });
+        return success(bizDayworkItemConsults);
     }
 
     @PostMapping("update")

+ 19 - 0
src/main/java/cn/ezhizao/project/business/product/domain/BizDaywork.java

@@ -6,6 +6,7 @@ import java.util.List;
 import cn.ezhizao.framework.aspectj.lang.annotation.Excel;
 import cn.ezhizao.framework.web.domain.BaseEntity;
 import cn.ezhizao.project.business.process.domain.BizProcess;
+import cn.ezhizao.project.business.resourceGroup.domain.BizProductionResourceGroupDetail;
 import cn.ezhizao.project.business.technologicalProcessDetail.domain.BizTechnologicalProcessDetail;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.fasterxml.jackson.annotation.JsonFormat;
@@ -189,4 +190,22 @@ public class BizDaywork extends BaseEntity
     private Integer isWaste;
     @TableField(exist = false)
     private Long fromId;
+    @TableField(exist = false)
+    private List<BizProductionResourceGroupDetail> protemResourceGroupDetailList;
+    @TableField(exist = false)
+    private String carrierCode;
+    @TableField(exist = false)
+    private String productDescription;
+    @TableField(exist = false)
+    private String currentNickName;
+    @TableField(exist = false)
+    private String currentEquipmentCode;
+    @TableField(exist = false)
+    private Integer totalQuantityNum;
+    @TableField(exist = false)
+    private String creatorName;
+    @TableField(exist = false)
+    private String protemProcessStepNumber;
+
+
 }

+ 4 - 0
src/main/java/cn/ezhizao/project/business/product/domain/BizDayworkCarrier.java

@@ -86,5 +86,9 @@ public class BizDayworkCarrier extends BaseEntity
     //工序编码
     @TableField(exist = false)
     private List<String> processCode;
+    @TableField(exist = false)
+    private Long value;
+    @TableField(exist = false)
+    private String label;
 
 }

+ 4 - 0
src/main/java/cn/ezhizao/project/business/product/domain/BizDayworkItem.java

@@ -278,4 +278,8 @@ public class BizDayworkItem extends BaseEntity
     @TableField(exist = false)
     private String processAlias;
     private Integer isSort;
+    private Integer isInnerTurnover;
+    @TableField(exist = false)
+    private String protemProcessStepNumber;
+
 }

+ 10 - 1
src/main/java/cn/ezhizao/project/business/product/domain/BizDayworkItemConsult.java

@@ -2,11 +2,14 @@ package cn.ezhizao.project.business.product.domain;
 
 
 import cn.ezhizao.framework.web.domain.BaseEntity;
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
+import java.util.List;
+
 /**
  * 废品原因对象 biz_daywork_item_consult
  *
@@ -88,5 +91,11 @@ public class BizDayworkItemConsult extends BaseEntity
 
     @ApiModelProperty(value = "技术员Id")
     private Long technicianId;
-
+    @TableField(exist = false)
+    private String technicianName;
+    private Integer consultDepartment;
+    @TableField(exist = false)
+    private List<Integer> departments;
+    @TableField(exist = false)
+    private List<BizDayworkItemConsultPicture> pictures;
 }

+ 39 - 0
src/main/java/cn/ezhizao/project/business/product/domain/BizDayworkItemConsultPicture.java

@@ -0,0 +1,39 @@
+package cn.ezhizao.project.business.product.domain;
+
+import cn.ezhizao.framework.aspectj.lang.annotation.Excel;
+import cn.ezhizao.framework.web.domain.BaseEntity;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * 咨询图片对象 biz_daywork_item_consult_picture
+ *
+ * @author ezhizao
+ * @date 2024-07-22
+ */
+@Data
+@TableName(value = "biz_daywork_item_consult_picture")
+public class BizDayworkItemConsultPicture extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 租户id,厂别或类型1:Ⅰ类2:Ⅱ类 */
+    @ApiModelProperty(value = "${comment}")
+    private Long tenantId;
+
+    /** 报工咨询id */
+    @ApiModelProperty(value = "${comment}")
+    private Long dayworkItemConsultId;
+
+    /** 图片地址 */
+    @Excel(name = "图片地址")
+    @ApiModelProperty(value = "图片地址")
+    private String url;
+
+    /** 图片名称 */
+    @Excel(name = "图片名称")
+    @ApiModelProperty(value = "图片名称")
+    private String pictureName;
+
+}

+ 89 - 0
src/main/java/cn/ezhizao/project/business/product/domain/BizDayworkItemExamine.java

@@ -0,0 +1,89 @@
+package cn.ezhizao.project.business.product.domain;
+
+import cn.ezhizao.framework.aspectj.lang.annotation.Excel;
+import cn.ezhizao.framework.web.domain.BaseEntity;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.util.List;
+
+/**
+ * 分选包装审核申请对象 biz_daywork_item_examine
+ *
+ * @author ezhizao
+ * @date 2024-07-29
+ */
+@Data
+@TableName(value = "biz_daywork_item_examine")
+public class BizDayworkItemExamine extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 租户(厂别)id */
+    @ApiModelProperty(value = "${comment}")
+    private Long tenantId;
+
+    /** daywork的id */
+    @ApiModelProperty(value = "${comment}")
+    private Long dayworkId;
+
+    /** 报工明细id */
+    @ApiModelProperty(value = "${comment}")
+    private Long dayworkItemId;
+
+    /** 工段id */
+    @ApiModelProperty(value = "${comment}")
+    private Long deptId;
+
+    /** 计划单明细id */
+    @ApiModelProperty(value = "${comment}")
+    private Long productionPlanDetailId;
+
+    /** 产品描述 */
+    @Excel(name = "产品描述")
+    @ApiModelProperty(value = "产品描述")
+    private String productDescription;
+
+    /** 批次id */
+    @ApiModelProperty(value = "${comment}")
+    private Long lotId;
+
+    /** 批次号 */
+    @Excel(name = "批次号")
+    @ApiModelProperty(value = "批次号")
+    private String lotCode;
+
+    /** 产品id */
+    @ApiModelProperty(value = "批次号")
+    private Long productId;
+
+    /** 工艺id(通过工艺id,获取版本号) */
+    @ApiModelProperty(value = "批次号")
+    private Long technologicalProcessId;
+
+    /** 当前工序id */
+    @ApiModelProperty(value = "批次号")
+    private Long technologicalProcessDetailId;
+
+    /** 工序id */
+    @ApiModelProperty(value = "批次号")
+    private Long processId;
+
+    /** 工序简称 */
+    @Excel(name = "工序简称")
+    @ApiModelProperty(value = "工序简称")
+    private String processAlias;
+
+    /** 审核状态 0待确认 2通过 1不通过 */
+    @Excel(name = "审核状态 0待确认 2通过 1不通过")
+    @ApiModelProperty(value = "审核状态 0待确认 2通过 1不通过")
+    private Integer status;
+
+    /** 审核人id */
+    @ApiModelProperty(value = "审核状态 0待确认 2通过 1不通过")
+    private Long reviewerId;
+    @TableField(exist = false)
+    private List<Long> dayworkIds;
+}

+ 8 - 0
src/main/java/cn/ezhizao/project/business/product/domain/BizDayworkItemReject.java

@@ -8,6 +8,8 @@ import com.baomidou.mybatisplus.annotation.TableName;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
+import java.util.List;
+
 /**
  * 废品原因对象 biz_daywork_item_reject
  *
@@ -84,5 +86,11 @@ public class BizDayworkItemReject extends BaseEntity
 
     @ApiModelProperty("类型")
     private Integer type;
+    @TableField(exist = false)
+    private Integer status;
+    @TableField(exist = false)
+    private String processAlias;
+    @TableField(exist = false)
+    private String nickName;
 
 }

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

@@ -2,6 +2,7 @@ package cn.ezhizao.project.business.product.domain;
 
 import cn.ezhizao.framework.aspectj.lang.annotation.Excel;
 import cn.ezhizao.framework.web.domain.BaseEntity;
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
 import io.swagger.annotations.ApiModelProperty;
@@ -84,5 +85,7 @@ public class BizFurnaceNoInfo extends BaseEntity
     @Excel(name = "来料日期")
     @ApiModelProperty(value = "来料日期")
     private String incomingDate;
+    @TableField(exist = false)
+    private String lotCode;
 
 }

+ 71 - 1
src/main/java/cn/ezhizao/project/business/product/domain/BizProcessInspecion.java

@@ -183,5 +183,75 @@ public class BizProcessInspecion extends BaseEntity
 
     @ApiModelProperty("外协单id")
     private Long outsourceOrderDetailId;
-
+    @TableField(exist = false)
+    private String processAlias;
+    @TableField(exist = false)
+    private List<BizProcessInspectionDetail> processInspectionDetails;
+
+    @ApiModelProperty("复检时间")
+    private Date recheckDate;
+    @ApiModelProperty("自动外协检查")
+    private Integer isAuto;
+    @ApiModelProperty("外协检查单号")
+    private String outsourcedInspectionNo;
+    @ApiModelProperty("外协检查审核状态")
+    private Integer auditStatus;
+    @ApiModelProperty("是否为外协序检")
+    private Integer isOutsourcedInspection;
+
+    public BizProcessInspecion() {
+    }
+
+    public BizProcessInspecion(BizProcessInspecion processInspecion) {
+        this.tenantId = processInspecion.getTenantId();
+        this.userId = processInspecion.getUserId();
+        this.userName = processInspecion.getUserName();
+        this.nickName = processInspecion.getNickName();
+        this.carrierId = processInspecion.getCarrierId();
+        this.carrierCode = processInspecion.getCarrierCode();
+        this.dayworkId = processInspecion.getDayworkId();
+        this.dayworkItemId = processInspecion.getDayworkItemId();
+        this.remark = processInspecion.getRemark();
+        this.productionPlanId = processInspecion.getProductionPlanId();
+        this.productionPlanDetailId = processInspecion.getProductionPlanDetailId();
+        this.productionPlanDetailSubDetailId = processInspecion.getProductionPlanDetailSubDetailId();
+        this.returnReceiptDetailId = processInspecion.getReturnReceiptDetailId();
+        this.lotId = processInspecion.getLotId();
+        this.lotCode = processInspecion.getLotCode();
+        this.deptId = processInspecion.getDeptId();
+        this.productId = processInspecion.getProductId();
+        this.inspectionCarrierCode = processInspecion.getInspectionCarrierCode();
+        this.inspectionCarrierId = processInspecion.getInspectionCarrierId();
+        this.technologicalProcessId = processInspecion.getTechnologicalProcessId();
+        this.rejectNum = processInspecion.getRejectNum();
+        this.examiningNum = processInspecion.getExaminingNum();
+        this.startTime = processInspecion.getStartTime();
+        this.startTimeString = processInspecion.getStartTimeString();
+        this.endTimeString = processInspecion.getEndTimeString();
+        this.endTime = processInspecion.getEndTime();
+        this.status = processInspecion.getStatus();
+        this.dayworkItemConsults = processInspecion.getDayworkItemConsults();
+        this.dayworkItemRejects = processInspecion.getDayworkItemRejects();
+        this.rejects = processInspecion.getRejects();
+        this.productDescription = processInspecion.getProductDescription();
+        this.lot = processInspecion.getLot();
+        this.user = processInspecion.getUser();
+        this.keyword = processInspecion.getKeyword();
+        this.firstUpdaterId = processInspecion.getFirstUpdaterId();
+        this.disqualificationNum = processInspecion.getDisqualificationNum();
+        this.isInspectionCarrierChanged = processInspecion.getIsInspectionCarrierChanged();
+        this.inspectionCarrierChangedTime = processInspecion.getInspectionCarrierChangedTime();
+        this.dayworkCarriers = processInspecion.getDayworkCarriers();
+        this.rejectCarrier = processInspecion.getRejectCarrier();
+        this.processNames = processInspecion.getProcessNames();
+        this.outsourceOrderDetailId = processInspecion.getOutsourceOrderDetailId();
+        this.processAlias = processInspecion.getProcessAlias();
+        this.processInspectionDetails = processInspecion.getProcessInspectionDetails();
+        this.recheckDate = processInspecion.getRecheckDate();
+        this.isAuto = processInspecion.getIsAuto();
+        this.outsourcedInspectionNo = processInspecion.getOutsourcedInspectionNo();
+        this.auditStatus = processInspecion.getAuditStatus();
+        this.isOutsourcedInspection = processInspecion.getIsOutsourcedInspection();
+
+    }
 }

+ 9 - 0
src/main/java/cn/ezhizao/project/business/product/domain/BizProcessInspectionDetail.java

@@ -2,6 +2,7 @@ package cn.ezhizao.project.business.product.domain;
 
 import cn.ezhizao.framework.aspectj.lang.annotation.Excel;
 import cn.ezhizao.framework.web.domain.BaseEntity;
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
 import io.swagger.annotations.ApiModelProperty;
@@ -115,5 +116,13 @@ public class BizProcessInspectionDetail extends BaseEntity
     @Excel(name = "检测量")
     @ApiModelProperty(value = "检测量")
     private Long examiningNum;
+    @TableField(exist = false)
+    private String processAlias;
+    @TableField(exist = false)
+    private String remark;
+    @TableField(exist = false)
+    private Integer status;
+    @TableField(exist = false)
+    private String inspectionName;
 
 }

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

@@ -19,6 +19,7 @@ public interface BizDayworkCarrierMapper extends BaseMapper<BizDayworkCarrier>
      * @return 报工载具中间表集合
      */
     public List<BizDayworkCarrier> getList(BizDayworkCarrier bizDayworkCarrier);
+    public List<BizDayworkCarrier> getDayworkCarrierByCarrierCode(BizDayworkCarrier bizDayworkCarrier);
 
     /**
      * 物理删除

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

@@ -29,6 +29,7 @@ public interface BizDayworkItemConsultMapper extends BaseMapper<BizDayworkItemCo
      * @return 删除结果
      */
     public int physicalDelete(BizDayworkItemConsult bizDayworkItemConsult);
+    List<BizDayworkItemConsult> getListByInspectionIds(List<Long> inspectionIds);
 
 
 }

+ 30 - 0
src/main/java/cn/ezhizao/project/business/product/mapper/BizDayworkItemConsultPictureMapper.java

@@ -0,0 +1,30 @@
+package cn.ezhizao.project.business.product.mapper;
+
+import java.util.List;
+
+import cn.ezhizao.project.business.product.domain.BizDayworkItemConsultPicture;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * 咨询图片Mapper接口
+ *
+ * @author ezhizao
+ * @date 2024-07-22
+ */
+public interface BizDayworkItemConsultPictureMapper extends BaseMapper<BizDayworkItemConsultPicture>
+{
+    /**
+     * 查询咨询图片列表
+     *
+     * @param bizDayworkItemConsultPicture 咨询图片
+     * @return 咨询图片集合
+     */
+    public List<BizDayworkItemConsultPicture> getList(BizDayworkItemConsultPicture bizDayworkItemConsultPicture);
+
+    /**
+     * 物理删除
+     * @param bizDayworkItemConsultPicture
+     * @return 删除结果
+    */
+    public int physicalDelete(BizDayworkItemConsultPicture bizDayworkItemConsultPicture);
+}

+ 31 - 0
src/main/java/cn/ezhizao/project/business/product/mapper/BizDayworkItemExamineMapper.java

@@ -0,0 +1,31 @@
+package cn.ezhizao.project.business.product.mapper;
+
+import java.util.List;
+
+import cn.ezhizao.project.business.product.domain.BizDayworkItemExamine;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+
+/**
+ * 分选包装审核申请Mapper接口
+ *
+ * @author ezhizao
+ * @date 2024-07-29
+ */
+public interface BizDayworkItemExamineMapper extends BaseMapper<BizDayworkItemExamine>
+{
+    /**
+     * 查询分选包装审核申请列表
+     *
+     * @param bizDayworkItemExamine 分选包装审核申请
+     * @return 分选包装审核申请集合
+     */
+    public List<BizDayworkItemExamine> getList(BizDayworkItemExamine bizDayworkItemExamine);
+
+    /**
+     * 物理删除
+     * @param bizDayworkItemExamine
+     * @return 删除结果
+    */
+    public int physicalDelete(BizDayworkItemExamine bizDayworkItemExamine);
+}

+ 4 - 1
src/main/java/cn/ezhizao/project/business/product/mapper/BizDayworkItemMapper.java

@@ -22,6 +22,8 @@ public interface BizDayworkItemMapper extends BaseMapper<BizDayworkItem>
      * @return 报工记录集合
      */
     public List<BizDayworkItem> getList(BizDayworkItem bizDayworkItem);
+    public List<BizDaywork> getInnerListByDeptId(BizDayworkItem bizDayworkItem);
+    public List<BizDaywork> getOutListByDeptId(BizDayworkItem bizDayworkItem);
 
     /**
      * 根据载具id查询待周转列表
@@ -29,7 +31,8 @@ public interface BizDayworkItemMapper extends BaseMapper<BizDayworkItem>
      * @return
      */
     public List<BizDayworkItem> getDayworkItemByCarrier(BizDayworkItem bizDayworkItem);
-
+    public List<BizDayworkItem> getListByDayworkId(BizDayworkItem bizDayworkItem);
+    public List<BizDayworkItem> getSortListByDayworkId(BizDayworkItem bizDayworkItem);
     /**
      * 根据载具code查询待周转列表
      * @param bizDayworkItem

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

@@ -37,6 +37,7 @@ public interface BizDayworkMapper extends BaseMapper<BizDaywork> {
      * @return 删除结果
      */
     public int turnoverDelete(BizDaywork bizDaywork);
+    public BizDaywork getLotInfo(BizDaywork bizDaywork);
 
     /**
      *  获取可用载具列表,用来扫一扫添加新批次

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

@@ -2,7 +2,9 @@ package cn.ezhizao.project.business.product.mapper;
 
 import java.util.List;
 
+import cn.ezhizao.project.business.product.domain.BizDayworkItemReject;
 import cn.ezhizao.project.business.product.domain.BizProcessInspecion;
+import cn.ezhizao.project.business.product.domain.BizProcessInspectionDetail;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 
 /**
@@ -20,6 +22,7 @@ public interface BizProcessInspecionMapper extends BaseMapper<BizProcessInspecio
      * @return 序检主集合
      */
     public List<BizProcessInspecion> getList(BizProcessInspecion bizProcessInspecion);
+    public List<BizProcessInspectionDetail> getInspectionByDayworkId(BizProcessInspecion bizProcessInspecion);
 
     /**
      * 物理删除

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

@@ -19,6 +19,7 @@ public interface IBizDayworkCarrierService extends IService<BizDayworkCarrier>
      * @return 报工载具中间表集合
      */
     public List<BizDayworkCarrier> getList(BizDayworkCarrier bizDayworkCarrier);
+    public List<BizDayworkCarrier> getDayworkCarrierByCarrierCode(BizDayworkCarrier bizDayworkCarrier);
 
     /**
      * 物理删除

+ 31 - 0
src/main/java/cn/ezhizao/project/business/product/service/IBizDayworkItemConsultPictureService.java

@@ -0,0 +1,31 @@
+package cn.ezhizao.project.business.product.service;
+
+import java.util.List;
+
+import cn.ezhizao.project.business.product.domain.BizDayworkItemConsultPicture;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * 咨询图片Service接口
+ *
+ * @author ezhizao
+ * @date 2024-07-22
+ */
+public interface IBizDayworkItemConsultPictureService extends IService<BizDayworkItemConsultPicture>
+{
+    /**
+     * 查询咨询图片列表
+     *
+     * @param bizDayworkItemConsultPicture 咨询图片
+     * @return 咨询图片集合
+     */
+    public List<BizDayworkItemConsultPicture> getList(BizDayworkItemConsultPicture bizDayworkItemConsultPicture);
+
+    /**
+     * 物理删除
+     * @param bizDayworkItemConsultPicture
+     * @return 删除结果
+     */
+    public int physicalDelete(BizDayworkItemConsultPicture bizDayworkItemConsultPicture);
+
+}

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

@@ -28,4 +28,5 @@ public interface IBizDayworkItemConsultService extends IService<BizDayworkItemCo
      * @return 删除结果
      */
     int physicalDelete(BizDayworkItemConsult bizDayworkItemConsult);
+    List<BizDayworkItemConsult> getListByInspectionIds(List<Long> inspectionIds);
 }

+ 32 - 0
src/main/java/cn/ezhizao/project/business/product/service/IBizDayworkItemExamineService.java

@@ -0,0 +1,32 @@
+package cn.ezhizao.project.business.product.service;
+
+import java.util.List;
+
+import cn.ezhizao.project.business.product.domain.BizDayworkItemExamine;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+
+/**
+ * 分选包装审核申请Service接口
+ *
+ * @author ezhizao
+ * @date 2024-07-29
+ */
+public interface IBizDayworkItemExamineService extends IService<BizDayworkItemExamine>
+{
+    /**
+     * 查询分选包装审核申请列表
+     *
+     * @param bizDayworkItemExamine 分选包装审核申请
+     * @return 分选包装审核申请集合
+     */
+    public List<BizDayworkItemExamine> getList(BizDayworkItemExamine bizDayworkItemExamine);
+
+    /**
+     * 物理删除
+     * @param bizDayworkItemExamine
+     * @return 删除结果
+     */
+    public int physicalDelete(BizDayworkItemExamine bizDayworkItemExamine);
+
+}

+ 4 - 0
src/main/java/cn/ezhizao/project/business/product/service/IBizDayworkItemService.java

@@ -21,6 +21,8 @@ public interface IBizDayworkItemService extends IService<BizDayworkItem>
      * @return 报工记录集合
      */
     public List<BizDayworkItem> getList(BizDayworkItem bizDayworkItem);
+    public List<BizDaywork> getInnerListByDeptId(BizDayworkItem bizDayworkItem);
+    public List<BizDaywork> getOutListByDeptId(BizDayworkItem bizDayworkItem);
 
     /**
      * 物理删除
@@ -28,6 +30,8 @@ public interface IBizDayworkItemService extends IService<BizDayworkItem>
      * @return 删除结果
      */
     public int physicalDelete(BizDayworkItem bizDayworkItem);
+    public List<BizDayworkItem> getListByDayworkId(BizDayworkItem bizDayworkItem);
+    public List<BizDayworkItem> getSortListByDayworkId(BizDayworkItem bizDayworkItem);
 
     /**
      * 根据载具id查询待周转列表

+ 2 - 0
src/main/java/cn/ezhizao/project/business/product/service/IBizDayworkService.java

@@ -38,6 +38,8 @@ public interface IBizDayworkService extends IService<BizDaywork>
     public int turnoverDelete(BizDaywork bizDaywork);
 
     public List<BizCarrier> getAvailableCarrierList(BizCarrier bizCarrier);
+    public BizDaywork getLotInfo(BizDaywork bizDaywork);
+    public Integer getStatus(BizDaywork bizDaywork);
 
     /**
      * 判断批数不能大于投产批数

+ 3 - 0
src/main/java/cn/ezhizao/project/business/product/service/IBizProcessInspecionService.java

@@ -2,7 +2,9 @@ package cn.ezhizao.project.business.product.service;
 
 import java.util.List;
 
+import cn.ezhizao.project.business.product.domain.BizDayworkItemReject;
 import cn.ezhizao.project.business.product.domain.BizProcessInspecion;
+import cn.ezhizao.project.business.product.domain.BizProcessInspectionDetail;
 import com.baomidou.mybatisplus.extension.service.IService;
 
 /**
@@ -20,6 +22,7 @@ public interface IBizProcessInspecionService extends IService<BizProcessInspecio
      * @return 序检主集合
      */
     public List<BizProcessInspecion> getList(BizProcessInspecion bizProcessInspecion);
+    public List<BizProcessInspectionDetail> getInspectionByDayworkId(BizProcessInspecion bizProcessInspecion);
 
     /**
      * 物理删除

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

@@ -32,6 +32,11 @@ public class BizDayworkCarrierServiceImpl  extends ServiceImpl<BizDayworkCarrier
         return bizDayworkCarrierMapper.getList(bizDayworkCarrier);
     }
 
+    @Override
+    public List<BizDayworkCarrier> getDayworkCarrierByCarrierCode(BizDayworkCarrier bizDayworkCarrier) {
+        return bizDayworkCarrierMapper.getDayworkCarrierByCarrierCode(bizDayworkCarrier);
+    }
+
     /**
      * 物理删除
      * @param bizDayworkCarrier

+ 45 - 0
src/main/java/cn/ezhizao/project/business/product/service/impl/BizDayworkItemConsultPictureServiceImpl.java

@@ -0,0 +1,45 @@
+package cn.ezhizao.project.business.product.service.impl;
+
+import java.util.List;
+import javax.annotation.Resource;
+
+import cn.ezhizao.project.business.product.domain.BizDayworkItemConsultPicture;
+import cn.ezhizao.project.business.product.mapper.BizDayworkItemConsultPictureMapper;
+import cn.ezhizao.project.business.product.service.IBizDayworkItemConsultPictureService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+
+/**
+ * 咨询图片Service业务层处理
+ *
+ * @author ezhizao
+ * @date 2024-07-22
+ */
+@Service
+public class BizDayworkItemConsultPictureServiceImpl  extends ServiceImpl<BizDayworkItemConsultPictureMapper, BizDayworkItemConsultPicture> implements IBizDayworkItemConsultPictureService
+{
+    @Resource
+    private BizDayworkItemConsultPictureMapper bizDayworkItemConsultPictureMapper;
+
+    /**
+     * 查询咨询图片列表
+     *
+     * @param bizDayworkItemConsultPicture 咨询图片
+     * @return 咨询图片
+     */
+    @Override
+    public List<BizDayworkItemConsultPicture> getList(BizDayworkItemConsultPicture bizDayworkItemConsultPicture)
+    {
+        return bizDayworkItemConsultPictureMapper.getList(bizDayworkItemConsultPicture);
+    }
+
+    /**
+     * 物理删除
+     * @param bizDayworkItemConsultPicture
+     * @return 删除结果
+     */
+    @Override
+    public int physicalDelete(BizDayworkItemConsultPicture bizDayworkItemConsultPicture){ return bizDayworkItemConsultPictureMapper.physicalDelete(bizDayworkItemConsultPicture); };
+
+}

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

@@ -42,4 +42,9 @@ public class BizDayworkItemConsultServiceImpl extends ServiceImpl<BizDayworkItem
     public int physicalDelete(BizDayworkItemConsult bizDayworkItemConsult) {
         return bizDayworkItemConsultMapper.physicalDelete(bizDayworkItemConsult);
     }
+
+    @Override
+    public List<BizDayworkItemConsult> getListByInspectionIds(List<Long> inspectionIds) {
+        return bizDayworkItemConsultMapper.getListByInspectionIds(inspectionIds);
+    }
 }

+ 45 - 0
src/main/java/cn/ezhizao/project/business/product/service/impl/BizDayworkItemExamineServiceImpl.java

@@ -0,0 +1,45 @@
+package cn.ezhizao.project.business.product.service.impl;
+
+import java.util.List;
+import javax.annotation.Resource;
+
+import cn.ezhizao.project.business.product.domain.BizDayworkItemExamine;
+import cn.ezhizao.project.business.product.mapper.BizDayworkItemExamineMapper;
+import cn.ezhizao.project.business.product.service.IBizDayworkItemExamineService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+
+/**
+ * 分选包装审核申请Service业务层处理
+ *
+ * @author ezhizao
+ * @date 2024-07-29
+ */
+@Service
+public class BizDayworkItemExamineServiceImpl  extends ServiceImpl<BizDayworkItemExamineMapper, BizDayworkItemExamine> implements IBizDayworkItemExamineService
+{
+    @Resource
+    private BizDayworkItemExamineMapper bizDayworkItemExamineMapper;
+
+    /**
+     * 查询分选包装审核申请列表
+     *
+     * @param bizDayworkItemExamine 分选包装审核申请
+     * @return 分选包装审核申请
+     */
+    @Override
+    public List<BizDayworkItemExamine> getList(BizDayworkItemExamine bizDayworkItemExamine)
+    {
+        return bizDayworkItemExamineMapper.getList(bizDayworkItemExamine);
+    }
+
+    /**
+     * 物理删除
+     * @param bizDayworkItemExamine
+     * @return 删除结果
+     */
+    @Override
+    public int physicalDelete(BizDayworkItemExamine bizDayworkItemExamine){ return bizDayworkItemExamineMapper.physicalDelete(bizDayworkItemExamine); };
+
+}

+ 20 - 0
src/main/java/cn/ezhizao/project/business/product/service/impl/BizDayworkItemServiceImpl.java

@@ -34,6 +34,16 @@ public class BizDayworkItemServiceImpl  extends ServiceImpl<BizDayworkItemMapper
         return bizDayworkItemMapper.getList(bizDayworkItem);
     }
 
+    @Override
+    public List<BizDaywork> getInnerListByDeptId(BizDayworkItem bizDayworkItem) {
+        return bizDayworkItemMapper.getInnerListByDeptId(bizDayworkItem);
+    }
+
+    @Override
+    public List<BizDaywork> getOutListByDeptId(BizDayworkItem bizDayworkItem) {
+        return bizDayworkItemMapper.getOutListByDeptId(bizDayworkItem);
+    }
+
     /**
      * 物理删除
      * @param bizDayworkItem
@@ -42,6 +52,16 @@ public class BizDayworkItemServiceImpl  extends ServiceImpl<BizDayworkItemMapper
     @Override
     public int physicalDelete(BizDayworkItem bizDayworkItem){ return bizDayworkItemMapper.physicalDelete(bizDayworkItem); }
 
+    @Override
+    public List<BizDayworkItem> getListByDayworkId(BizDayworkItem bizDayworkItem) {
+        return bizDayworkItemMapper.getListByDayworkId(bizDayworkItem);
+    }
+
+    @Override
+    public List<BizDayworkItem> getSortListByDayworkId(BizDayworkItem bizDayworkItem) {
+        return bizDayworkItemMapper.getSortListByDayworkId(bizDayworkItem);
+    }
+
     @Override
     public List<BizDayworkItem> getDayworkItemByCarrier(BizDayworkItem bizDayworkItem) {
         return bizDayworkItemMapper.getDayworkItemByCarrier(bizDayworkItem);

+ 47 - 5
src/main/java/cn/ezhizao/project/business/product/service/impl/BizDayworkServiceImpl.java

@@ -1,13 +1,16 @@
 package cn.ezhizao.project.business.product.service.impl;
 
 import java.util.List;
+import java.util.stream.Collectors;
 import javax.annotation.Resource;
 
 import cn.ezhizao.project.business.product.domain.BizCarrier;
 import cn.ezhizao.project.business.product.domain.BizDaywork;
+import cn.ezhizao.project.business.product.domain.BizDayworkItem;
 import cn.ezhizao.project.business.product.mapper.BizDayworkMapper;
 import cn.ezhizao.project.business.product.service.IBizDayworkService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import io.swagger.models.auth.In;
 import org.springframework.stereotype.Service;
 
 
@@ -18,8 +21,7 @@ import org.springframework.stereotype.Service;
  * @date 2023-11-29
  */
 @Service
-public class BizDayworkServiceImpl  extends ServiceImpl<BizDayworkMapper, BizDaywork> implements IBizDayworkService
-{
+public class BizDayworkServiceImpl extends ServiceImpl<BizDayworkMapper, BizDaywork> implements IBizDayworkService {
     @Resource
     private BizDayworkMapper bizDayworkMapper;
 
@@ -30,8 +32,7 @@ public class BizDayworkServiceImpl  extends ServiceImpl<BizDayworkMapper, BizDay
      * @return 报工
      */
     @Override
-    public List<BizDaywork> getList(BizDaywork bizDaywork)
-    {
+    public List<BizDaywork> getList(BizDaywork bizDaywork) {
         return bizDayworkMapper.getList(bizDaywork);
     }
 
@@ -41,7 +42,9 @@ public class BizDayworkServiceImpl  extends ServiceImpl<BizDayworkMapper, BizDay
      * @return 删除结果
      */
     @Override
-    public int physicalDelete(BizDaywork bizDaywork){ return bizDayworkMapper.physicalDelete(bizDaywork); }
+    public int physicalDelete(BizDaywork bizDaywork) {
+        return bizDayworkMapper.physicalDelete(bizDaywork);
+    }
 
     @Override
     public int turnoverDelete(BizDaywork bizDaywork) {
@@ -53,6 +56,45 @@ public class BizDayworkServiceImpl  extends ServiceImpl<BizDayworkMapper, BizDay
         return bizDayworkMapper.getAvailableCarrierList(bizCarrier);
     }
 
+    @Override
+    public BizDaywork getLotInfo(BizDaywork daywork) {
+        return bizDayworkMapper.getLotInfo(daywork);
+    }
+
+    @Override
+    public Integer getStatus(BizDaywork daywork) {
+        //默认未开始
+        Integer status = 0;
+        if (!daywork.getDayworkItemList().isEmpty()) {
+            boolean foundStatus3 = false;
+            boolean foundStatus2 = false;
+            boolean foundStatus1 = false;
+            List<BizDayworkItem> currentDayworkItemList = daywork.getDayworkItemList().stream().filter(item -> item.getProcessStepNumber().equals(daywork.getCurrentProcess().getProcessStepNumber())).collect(Collectors.toList());
+            List<String> currentStatusList = currentDayworkItemList.stream().map(BizDayworkItem::getStatus).collect(Collectors.toList());
+            //进行中
+            if ((currentStatusList.contains("1") || currentStatusList.contains("2")) && !currentStatusList.contains("3")) {
+                status = 1;
+            }
+            //待周转
+            if (currentStatusList.contains("4")) {
+                status = 2;
+            }
+            //周转中
+            if (currentStatusList.contains("5")) {
+                status = 3;
+            }
+            //已送达
+            if (currentStatusList.contains("7")) {
+                status = 4;
+            }
+            //工序已完成
+            if (currentStatusList.contains("3") && !currentStatusList.contains("4") && !currentStatusList.contains("5") && !currentStatusList.contains("7")) {
+                status = 5;
+            }
+        }
+        return status;
+    }
+
     @Override
     public Integer getLotNumber(Long productionPlanDetailId) {
         return bizDayworkMapper.getLotNumber(productionPlanDetailId);

+ 7 - 0
src/main/java/cn/ezhizao/project/business/product/service/impl/BizProcessInspecionServiceImpl.java

@@ -3,7 +3,9 @@ package cn.ezhizao.project.business.product.service.impl;
 import java.util.List;
 import javax.annotation.Resource;
 
+import cn.ezhizao.project.business.product.domain.BizDayworkItemReject;
 import cn.ezhizao.project.business.product.domain.BizProcessInspecion;
+import cn.ezhizao.project.business.product.domain.BizProcessInspectionDetail;
 import cn.ezhizao.project.business.product.mapper.BizProcessInspecionMapper;
 import cn.ezhizao.project.business.product.service.IBizProcessInspecionService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -33,6 +35,11 @@ public class BizProcessInspecionServiceImpl  extends ServiceImpl<BizProcessInspe
         return bizProcessInspecionMapper.getList(bizProcessInspecion);
     }
 
+    @Override
+    public List<BizProcessInspectionDetail> getInspectionByDayworkId(BizProcessInspecion bizProcessInspecion) {
+        return bizProcessInspecionMapper.getInspectionByDayworkId(bizProcessInspecion);
+    }
+
     /**
      * 物理删除
      * @param bizProcessInspecion

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

@@ -53,4 +53,7 @@ public class BizProductionResourceGroupDetail extends BaseEntity
     private List<Long> detailIds;
     @TableField(exist = false)
     private Long technologicalProcessDetailId;
+    private String protemProcessStepNumber;
+    @TableField(exist = false)
+    private String protemCreatorName;
 }

+ 1 - 0
src/main/java/cn/ezhizao/project/business/resourceGroup/service/impl/BizProductionResourceGroupDetailServiceImpl.java

@@ -90,6 +90,7 @@ public class BizProductionResourceGroupDetailServiceImpl  extends ServiceImpl<Bi
         QueryWrapper<BizProductionResourceGroupDetail> queryWrapper = new QueryWrapper<>();
         queryWrapper.eq("protem_daywork_id", bizDaywork.getId());
         queryWrapper.eq("protem_process_id", bizDaywork.getProtemProcessId());
+        queryWrapper.eq("protem_process_step_number", bizDaywork.getProtemProcessStepNumber());
         queryWrapper.eq("deleted", 0);
         List<BizProductionResourceGroupDetail> list = list(queryWrapper);
         if (!list.isEmpty()) {

+ 0 - 1
src/main/java/cn/ezhizao/project/business/technologicalProcess/controller/BizTechnologicalProcessController.java

@@ -66,7 +66,6 @@ public class BizTechnologicalProcessController extends BaseController
     /**
      * 获取工艺主表详细信息
      */
-    @PreAuthorize("@ss.hasPermi('base:technologicalProcess:query')")
     @GetMapping(value = "/{id}")
     public AjaxResult getInfo(@PathVariable("id") Long id)
     {

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

@@ -77,4 +77,7 @@ public class BizTechnologicalProcess extends BaseEntity
     @Excel(name = "字典键值")
     @TableField(exist = false)
     private Long Value;
+
+    @ApiModelProperty("历史版本")
+    private Integer isHistory;
 }

+ 9 - 0
src/main/java/cn/ezhizao/project/business/technologicalProcessDetailDrawing/domain/BizTechnologicalProcessDetailDrawing.java

@@ -98,5 +98,14 @@ public class BizTechnologicalProcessDetailDrawing extends BaseEntity
     private String specification;
     @TableField(exist = false)
     private String drawingNumber;
+    /** 产品id */
+    @ApiModelProperty(value = "${comment}")
+    private Long productId;
+
+    @ApiModelProperty(value = "工序编码")
+    private String processCode;
+    @Excel(name = "工艺版本")
+    @ApiModelProperty(value = "工艺版本编码")
+    private String productVersion;
 
 }

+ 3 - 0
src/main/resources/application-dev.yml

@@ -88,3 +88,6 @@ file:
     type: xlsx,xls,txt,jpeg,jpg,doc,ppt,pptx,png,pdf,rar,zip,wps,gif,docx #支持的文件类型
   excelTemplate:
     url: D://Ezhizao//dms//templates/
+# 文件上传
+ruoyi:
+  profile: D:/Ezhizao/identity/

+ 3 - 0
src/main/resources/application-linux.yml

@@ -92,3 +92,6 @@ file:
         type: xlsx,xls,txt,jpeg,jpg,doc,ppt,pptx,png,pdf,rar,zip,wps,gif,docx #支持的文件类型
     excelTemplate:
         url: D://Ezhizao//dms//templates/
+# 文件上传
+ruoyi:
+    profile: /home/files/dms/

+ 35 - 0
src/main/resources/mybatis/business/innerTurnover/BizInnerTurnoverMapper.xml

@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="cn.ezhizao.project.business.innerTurnover.mapper.BizInnerTurnoverMapper">
+
+    <resultMap type="cn.ezhizao.project.business.innerTurnover.domain.BizInnerTurnover" id="BizInnerTurnoverResult">
+        <id column="id" property="id"/>
+    </resultMap>
+
+
+    <select id="getList" parameterType="BizInnerTurnover" resultMap="BizInnerTurnoverResult">
+        SELECT t1.* FROM biz_inner_turnover t1 left join sys_dept t2 on t1.dept_id = t2.dept_id
+        <trim prefix=" WHERE" suffix="" suffixOverrides="AND">
+            t1.deleted = 0 and t2.del_flag = 0 and t2.is_centralized_turnover = 1
+            <if test="userName != null  and userName != ''"> AND t1.user_name like concat('%', #{userName}, '%')</if>
+            <if test="nickName != null  and nickName != ''"> AND t1.nick_name like concat('%', #{nickName}, '%')</if>
+            <if test="userId != null  and nickName != ''"> AND t1.user_id = #{userId}</if>
+            <if test="deptId != null  "> AND t1.dept_id = #{deptId}</if>
+            <if test="phoneNumber != null  and phoneNumber != ''"> AND t1.phone_number = #{phoneNumber}</if>
+            <if test="sex != null  and sex != ''"> AND t1.sex = #{sex}</if>
+            <if test="usageCompanyName != null  and usageCompanyName != ''"> AND t1.usage_company_name like concat('%', #{usageCompanyName}, '%')</if>
+        </trim>
+    </select>
+
+    <delete id="physicalDelete">
+        DELETE FROM biz_inner_turnover
+        <trim prefix=" WHERE" suffix="" suffixOverrides="AND">
+            <if test="id != null">
+                id = #{id} AND
+            </if>
+       <!-- 删除条件为其他外键可以在这里加 -->
+        </trim>
+    </delete>
+</mapper>

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

@@ -15,9 +15,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             deleted = 0
             <if test="type != null "> AND type = #{type}</if>
             <if test="technologyVersion != null  and technologyVersion != ''"> AND technology_version = #{technologyVersion}</if>
+            <if test="productId != null "> AND product_id = #{productId}</if>
+            <if test="processId != null "> AND process_id = #{processId}</if>
             <if test="standard != null  and standard != ''"> AND standard = #{standard}</if>
             <if test="equipment != null  and equipment != ''"> AND equipment = #{equipment}</if>
-            <if test="technologicalProcessDetailId != null"> AND technological_process_detail_id = #{technologicalProcessDetailId}</if>
+<!--            <if test="technologicalProcessDetailId != null"> AND technological_process_detail_id = #{technologicalProcessDetailId}</if>-->
         </trim>
     </select>
 

+ 4 - 1
src/main/resources/mybatis/business/product/BizDayworkCarrierMapper.xml

@@ -22,7 +22,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 
         </trim>
     </select>
-
+    <select id="getDayworkCarrierByCarrierCode" resultType="cn.ezhizao.project.business.product.domain.BizDayworkCarrier">
+        select t1.daywork_id as value,t2.lot_code as label from biz_daywork_carrier t1 left join biz_daywork t2 on t1.daywork_id = t2.id
+        where t1.deleted = 0 and t1.is_changed = 0 and t1.carrier_code = #{carrierCode} and t2.deleted = 0
+    </select>
     <select id="getLotCode" resultType="java.lang.String">
         SELECT lot_code FROM biz_lot WHERE id = (SELECT lot_id FROM biz_daywork WHERE id = #{daywork_id})
     </select>

+ 7 - 1
src/main/resources/mybatis/business/product/BizDayworkItemConsultMapper.xml

@@ -20,7 +20,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         </trim>
 
     </select>
-
+    <select id="getListByInspectionIds" resultMap="BizDayworkItemConsultResult">
+        select t1.*,t2.nick_name as technicianName from biz_daywork_item_consult t1 left join sys_user t2 on t1.technician_id = t2.user_id where t1.deleted = 0
+        and t2.del_flag = 0 and t1.process_inspection_id in
+        <foreach collection="inspectionIds" index="index" item="item" separator="," open="(" close=")">
+            #{item}
+        </foreach>
+    </select>
     <delete id="physicalDelete">
         DELETE FROM biz_daywork_item_consult WHERE deleted = 0
         <if test="id != null">

+ 30 - 0
src/main/resources/mybatis/business/product/BizDayworkItemConsultPictureMapper.xml

@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="cn.ezhizao.project.business.product.mapper.BizDayworkItemConsultPictureMapper">
+
+    <resultMap type="cn.ezhizao.project.business.product.domain.BizDayworkItemConsultPicture" id="BizDayworkItemConsultPictureResult">
+        <id column="id" property="id"/>
+    </resultMap>
+
+
+    <select id="getList" parameterType="BizDayworkItemConsultPicture" resultMap="BizDayworkItemConsultPictureResult">
+        SELECT * FROM biz_daywork_item_consult_picture
+        <trim prefix=" WHERE" suffix="" suffixOverrides="AND">
+            deleted = 0
+            <if test="url != null  and url != ''"> AND url = #{url}</if>
+            <if test="pictureName != null  and pictureName != ''"> AND picture_name like concat('%', #{pictureName}, '%')</if>
+        </trim>
+    </select>
+
+    <delete id="physicalDelete">
+        DELETE FROM biz_daywork_item_consult_picture
+        <trim prefix=" WHERE" suffix="" suffixOverrides="AND">
+            <if test="id != null">
+                id = #{id} AND
+            </if>
+       <!-- 删除条件为其他外键可以在这里加 -->
+        </trim>
+    </delete>
+</mapper>

+ 31 - 0
src/main/resources/mybatis/business/product/BizDayworkItemExamineMapper.xml

@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="cn.ezhizao.project.business.product.mapper.BizDayworkItemExamineMapper">
+
+    <resultMap type="cn.ezhizao.project.business.product.domain.BizDayworkItemExamine" id="BizDayworkItemExamineResult">
+        <id column="id" property="id"/>
+    </resultMap>
+
+
+    <select id="getList" parameterType="BizDayworkItemExamine" resultMap="BizDayworkItemExamineResult">
+        SELECT * FROM biz_daywork_item_examine
+        <trim prefix=" WHERE" suffix="" suffixOverrides="AND">
+            deleted = 0
+            <if test="lotCode != null  and lotCode != ''"> AND lot_code = #{lotCode}</if>
+            <if test="processAlias != null  and processAlias != ''"> AND process_alias = #{processAlias}</if>
+            <if test="status != null "> AND status = #{status}</if>
+        </trim>
+    </select>
+
+    <delete id="physicalDelete">
+        DELETE FROM biz_daywork_item_examine
+        <trim prefix=" WHERE" suffix="" suffixOverrides="AND">
+            <if test="id != null">
+                id = #{id} AND
+            </if>
+       <!-- 删除条件为其他外键可以在这里加 -->
+        </trim>
+    </delete>
+</mapper>

+ 106 - 1
src/main/resources/mybatis/business/product/BizDayworkItemMapper.xml

@@ -55,7 +55,51 @@
                type="cn.ezhizao.project.business.technologicalProcessDetail.domain.BizTechnologicalProcessDetail">
         <id column="id" property="id"/>
     </resultMap>
+    <resultMap id="BizDayworkItemAndRejectList" type="cn.ezhizao.project.business.product.domain.BizDayworkItem">
+        <id column="id" property="id"/>
+        <collection property="rejectList" ofType="cn.ezhizao.project.business.product.domain.BizDayworkItemReject" column="id" select="getRejectList"/>
 
+    </resultMap>
+    <resultMap id="BizSortListResult" type="cn.ezhizao.project.business.product.domain.BizDayworkItem">
+        <id column="id" property="id"/>
+        <collection property="rejectList" ofType="cn.ezhizao.project.business.product.domain.BizDayworkItemReject" column="id" select="getSortRejectList"/>
+        <collection property="consults" ofType="cn.ezhizao.project.business.product.domain.BizDayworkItemConsult" column="id" select="getSortConsultList"/>
+    </resultMap>
+    <select id="getSortListByDayworkId" resultMap="BizSortListResult">
+        select
+            t1.*,t2.process_alias
+        from biz_daywork_item t1 left join biz_process t2
+            on t1.process_id = t2.id
+        where t1.daywork_id = #{dayworkId}
+          and t1.is_sort = 1
+          and t1.deleted = 0
+          and t2.deleted = 0
+          and t1.status &lt;4
+        order by t1.process_step_number,t1.create_time
+    </select>
+    <select id="getSortRejectList" resultType="cn.ezhizao.project.business.product.domain.BizDayworkItemReject">
+        select * from biz_daywork_item_reject where daywork_item_id = #{id} and deleted = 0 and process_inspection_id = 0
+    </select>
+    <select id="getSortConsultList" resultType="cn.ezhizao.project.business.product.domain.BizDayworkItemConsult">
+        select t1.*,t2.nick_name as technicianName from biz_daywork_item_consult t1 left join sys_user t2 on t1.technician_id = t2.user_id where t1.daywork_item_id = #{id} and t1.deleted = 0 and t2.del_flag = 0
+    </select>
+    <select id="getListByDayworkId" resultMap="BizDayworkItemAndRejectList">
+      select t1.*,t2.process_alias from biz_daywork_item t1 left join biz_process t2 on t1.process_id  = t2.id where t1.daywork_id = #{dayworkId} and t1.deleted = 0 and t2.deleted = 0 and (t1.status =2 ||t1.status =3)
+        order by t1.process_step_number,t1.create_time
+    </select>
+    <select id="getRejectList" resultType="cn.ezhizao.project.business.product.domain.BizDayworkItemReject">
+        SELECT
+        t1.reject_num,
+        CASE
+        WHEN t1.type = 0 THEN
+        (SELECT dict_label FROM sys_dict_data WHERE dict_type = 'waste_causes' AND dict_value = t1.reason)
+        WHEN t1.type = 1 THEN
+        t1.reason
+        ELSE
+        t1.reason
+        END AS reason from biz_daywork_item_reject t1 where t1.daywork_item_id = #{id}
+        and t1.deleted = 0 and t1.process_inspection_id = 0
+    </select>
     <select id="getDeptProcess" resultType="cn.ezhizao.project.business.deptProcess.domain.BizDeptProcess">
         select *
         from biz_dept_process
@@ -268,7 +312,68 @@
         </trim>
         ORDER BY create_time DESC
     </select>
-
+    <select id="getOutListByDeptId" resultType="cn.ezhizao.project.business.product.domain.BizDaywork">
+        SELECT distinct
+        t1.id,t2.dept_name,t3.product_description,t4.lot_code,t1.is_amend,t1.is_waste_recycling,t1.technological_process_id ,(
+        SELECT
+        GROUP_CONCAT( carrier_code ORDER BY carrier_code SEPARATOR ',' )
+        FROM
+        biz_daywork_carrier
+        WHERE
+        biz_daywork_carrier.daywork_id = t1.id
+        AND biz_daywork_carrier.is_changed = 0
+        AND biz_daywork_carrier.deleted = 0
+        ) AS carrier_name
+        FROM
+        biz_daywork t1 left join sys_dept t2 on t1.dept_id = t2.dept_id
+        left join biz_production_plan_detail t3 on t1.production_plan_detail_id = t3.id
+        left join biz_lot t4 on t1.lot_id = t4.id
+        <trim prefix=" WHERE" suffix="" suffixOverrides="AND">
+            t1.deleted = 0 and t2.del_flag = 0 and t3.deleted = 0 and t4.deleted = 0
+            AND ( SELECT `status` FROM biz_daywork_item WHERE daywork_id = t1.id and (turnover_type = 2 or turnover_type = 3) and  deleted = 0 and is_inner_turnover = 0  ORDER BY create_time DESC LIMIT 1 ) IN (4)
+            AND ( SELECT dept_id FROM biz_daywork_item WHERE daywork_id = t1.id AND deleted = 0 AND STATUS = 3 ORDER BY process_step_number DESC LIMIT 1 ) = #{deptId}
+        <if test="keywords != null">AND ( t3.product_description like concat('%',#{keywords},'%') or t4.lot_code like concat('%',#{keywords},'%') or exists (select 1
+            FROM
+            biz_daywork_carrier
+            WHERE
+            biz_daywork_carrier.daywork_id = t1.id
+            AND biz_daywork_carrier.is_changed = 0
+            AND biz_daywork_carrier.deleted = 0
+            and biz_daywork_carrier.carrier_code like concat('%',#{keywords},'%')
+            ) )</if>
+        </trim>
+    </select>
+    <select id="getInnerListByDeptId" resultType="cn.ezhizao.project.business.product.domain.BizDaywork">
+        SELECT
+        t1.id,t2.dept_name,t3.product_description,t4.lot_code,t1.is_amend,t1.is_waste_recycling,t1.technological_process_id , (
+        SELECT
+        GROUP_CONCAT( carrier_code ORDER BY carrier_code SEPARATOR ',' )
+        FROM
+        biz_daywork_carrier
+        WHERE
+        biz_daywork_carrier.daywork_id = t1.id
+        AND biz_daywork_carrier.is_changed = 0
+        AND biz_daywork_carrier.deleted = 0
+        ) AS carrier_name
+        FROM
+        biz_daywork t1 left join sys_dept t2 on t1.dept_id = t2.dept_id
+        left join biz_production_plan_detail t3 on t1.production_plan_detail_id = t3.id
+        left join biz_lot t4 on t1.lot_id = t4.id
+        <trim prefix=" WHERE" suffix="" suffixOverrides="AND">
+            t1.deleted = 0 and t2.del_flag = 0 and t3.deleted = 0 and t4.deleted = 0
+            AND ( SELECT `status` FROM biz_daywork_item WHERE daywork_id = t1.id  and turnover_type = 1 and  deleted = 0 and is_inner_turnover = 0  ORDER BY create_time DESC LIMIT 1 ) IN (4)
+            AND ( SELECT dept_id FROM biz_daywork_item WHERE daywork_id = t1.id AND deleted = 0 AND STATUS = 3 ORDER BY process_step_number DESC LIMIT 1 ) = #{deptId}
+            <if test="keywords != null">AND ( t3.product_description like concat('%',#{keywords},'%') or t4.lot_code like concat('%',#{keywords},'%') or exists (select 1
+                FROM
+                biz_daywork_carrier
+                WHERE
+                biz_daywork_carrier.daywork_id = t1.id
+                AND biz_daywork_carrier.is_changed = 0
+                AND biz_daywork_carrier.deleted = 0
+                and biz_daywork_carrier.carrier_code like concat('%',#{keywords},'%')
+                ) )</if>
+        </trim>
+    </select>
     <select id="getItemScreen" parameterType="BizDayworkItem" resultMap="BizDayworkItemResult">
         SELECT bdi.*
         FROM biz_daywork_item bdi

+ 12 - 3
src/main/resources/mybatis/business/product/BizDayworkMapper.xml

@@ -29,7 +29,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     <resultMap id="BizTechnologicalProcessDetailResult" type="cn.ezhizao.project.business.technologicalProcessDetail.domain.BizTechnologicalProcessDetail">
         <id column="id" property="id"/>
     </resultMap>
-
+    <resultMap id="BizLotInfo" type="cn.ezhizao.project.business.product.domain.BizDaywork">
+        <id column="id" property="id"/>
+        <association property="carrierName" javaType="java.lang.String" column="id" select="getCarrier"/>
+        <collection property="dayworkItemList" ofType="cn.ezhizao.project.business.product.domain.BizDayworkItem" column="id" select="getDayworkItemList"/>
+    </resultMap>
     <resultMap id="BizProcessResult" type="cn.ezhizao.project.business.process.domain.BizProcess">
         <id column="id" property="id"/>
         <collection property="deptProcess" ofType="cn.ezhizao.project.business.deptProcess.domain.BizDeptProcess" column="id" select="getDeptProcess"/>
@@ -53,7 +57,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     <select id="getItemList" resultMap="BizDayworkItemResult">
         select * from biz_daywork_item where deleted = 0 and daywork_id = #{id} ORDER BY create_time DESC
     </select>
-
+    <select id="getDayworkItemList" resultMap="BizDayworkItemResult">
+        select t1.*,t2.process_alias,t3.nick_name from biz_daywork_item t1 left join biz_process t2 on t1.process_id = t2.id left join sys_user t3 on t1.creator_id = t3.user_id where t1.deleted = 0 and t2.deleted = 0 and t1.daywork_id = #{id}
+    </select>
     <select id="getFurnaceNumber" resultType="java.lang.String" >
         select furnace_number from biz_production_plan_detail where deleted = 0 and id = #{productionPlanDetailId}
     </select>
@@ -111,7 +117,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
              WHERE  status = 3 AND daywork_id =  #{id}
 
     </delete>
-
+    <select id="getLotInfo" resultMap="BizLotInfo">
+        select t1.*,t2.product_description,t3.production_quantity from biz_daywork t1 left join biz_production_plan_detail t2 on t1.production_plan_detail_id = t2.id left join biz_lot t3 on t1.lot_id = t3.id
+        where t1.deleted = 0 and t2.deleted = 0 and t3.deleted = 0 and t1.id =#{id}
+    </select>
 <!--    周转区查看-->
     <select id="turnover">
         select t1.*,t2.* from biz_daywork_item t1 left join biz_daywork t2 on t1.daywork_id = t2.id

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

@@ -28,7 +28,6 @@
             <if test="dayworkId != null  and dayworkId != 0"> AND daywork_id = #{dayworkId}</if>
         </trim>
     </select>
-
     <delete id="physicalDelete">
         DELETE FROM biz_furnace_no_info
         <trim prefix=" WHERE" suffix="" suffixOverrides="AND">

+ 23 - 1
src/main/resources/mybatis/business/product/BizProcessInspecionMapper.xml

@@ -11,7 +11,29 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
                      javaType="java.lang.String"
                      column="product_id" select="getProcessDescription"/>
     </resultMap>
-
+    <resultMap id="BizInspectionResult" type="cn.ezhizao.project.business.product.domain.BizProcessInspectionDetail">
+        <id column="id" property="id"/>
+    </resultMap>
+    <select id="getInspectionByDayworkId" resultMap="BizInspectionResult">
+        SELECT
+        t1.*,
+        t2.nick_name as inspectionName,
+        t2.status,
+        t2.remark,
+        t4.process_alias
+        FROM
+        biz_process_inspection_detail t1
+        LEFT JOIN biz_process_inspecion t2 ON t1.process_inspection_id = t2.id
+        LEFT JOIN biz_daywork_item t3 ON t1.daywork_item_id = t3.id
+        LEFT JOIN biz_process t4 ON t4.id = t3.process_id
+        WHERE
+        process_inspection_id IN ( SELECT id FROM biz_process_inspecion WHERE daywork_id =#{dayworkId} )
+        AND t1.deleted = 0
+        AND t2.deleted = 0
+        AND t3.deleted = 0
+        AND t4.deleted = 0
+        order by t2.create_time
+    </select>
 <!--    AND DATE_FORMAT( start_time, '%Y-%m-%d' ) =${timeString}-->
     <select id="getList" parameterType="BizProcessInspecion" resultMap="BizProcessInspecionResult">
         SELECT * FROM biz_process_inspecion

+ 9 - 10
src/main/resources/mybatis/business/technologicalProcessDetailDrawing/BizTechnologicalProcessDetailDrawingMapper.xml

@@ -7,22 +7,20 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     <resultMap type="cn.ezhizao.project.business.technologicalProcessDetailDrawing.domain.BizTechnologicalProcessDetailDrawing" id="BizTechnologicalProcessDetailDrawingResult">
         <id column="id" property="id"/>
         <result column="technological_process_detail_id" property="technologicalProcessDetailId"/>
-        <association property="product" column="technological_process_detail_id"  javaType="cn.ezhizao.project.business.product.domain.BizProduct" select="getProduct"/>
-        <association property="technologyVersion" column="technological_process_detail_id" javaType="java.lang.String" select="getVersion"/>
-        <association property="processAlias" column="technological_process_detail_id" javaType="java.lang.String" select="getProcessAlias"/>
+        <result column="process_code" property="processCode"/>
+        <result column="product_id" property="productId"/>
+        <association property="product" column="product_id"  javaType="cn.ezhizao.project.business.product.domain.BizProduct" select="getProduct"/>
+        <association property="processAlias" column="process_code" javaType="java.lang.String" select="getProcessAlias"/>
     </resultMap>
     <resultMap id="BizProductResult" type="cn.ezhizao.project.business.product.domain.BizProduct">
         <id column="id" property="id"/>
     </resultMap>
     <select id="getProcessAlias" resultType="java.lang.String">
-        select process_alias from biz_technological_process_detail where deleted = 0 and id = #{technologicalProcessDetailId}
+        select process_alias from biz_process where deleted = 0 and process_code = #{processCode}
     </select>
 
-    <select id="getVersion" resultType="java.lang.String">
-        select technology_version from biz_technological_process_detail where deleted = 0 and id = #{technologicalProcessDetailId}
-    </select>
     <select id="getProduct" resultMap="BizProductResult">
-        select * from biz_product where deleted = 0 and id = (select DISTINCT product_id from biz_technological_process_detail where deleted = 0 and id = #{technologicalProcessDetailId})
+        select * from biz_product where deleted = 0 and id =#{productId}
     </select>
 
     <select id="getList" parameterType="BizTechnologicalProcessDetailDrawing" resultMap="BizTechnologicalProcessDetailDrawingResult">
@@ -30,8 +28,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <trim prefix=" WHERE" suffix="" suffixOverrides="AND">
             deleted = 0
             <if test="url != null  and url != ''"> AND url = #{url}</if>
-
-            <if test="technologicalProcessDetailId != null  and technologicalProcessDetailId != ''"> AND technological_process_detail_id = #{technologicalProcessDetailId}</if>
+            <if test="productId != null">and product_id = #{productId} </if>
+            <if test="productVersion != null and productVersion !=''">AND product_version = #{productVersion}</if>
+            <if test="processCode != null and processCode != ''">AND process_code = #{processCode}</if>
             <if test="drawingName != null  and drawingName != ''"> AND drawing_name = #{drawingName}</if>
             <if test="technologicalProcessId !=null and technologicalProcessId !=''">AND technological_process_detail_id IN (select id from biz_technological_process_detail where deleted = 0  AND technological_process_id = #{technologicalProcessId})</if>
         </trim>