ezhizao_zx 1 year ago
parent
commit
7269b64c95

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

@@ -109,4 +109,7 @@ public class BizOutsourcedOrderDetail extends BaseEntity
     @ApiModelProperty("箱子")
     @TableField(exist = false)
     private List<BizCarrier> carriers;
+
+    @ApiModelProperty("工序名")
+    private String processNames;
 }

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

@@ -306,6 +306,33 @@ public class BizCarrierController extends BaseController {
         return success(curCarrier);
     }
 
+    // 检测检查箱号
+    @Log(title = "检测检查箱号", businessType = BusinessType.SELECT)
+    @PostMapping("/checkCarrierForInspection")
+    public AjaxResult checkCarrierForInspection (@RequestBody BizDaywork bizDaywork) {
+        BizCarrier curCarrier = bizCarrierService.getOne(new QueryWrapper<BizCarrier>().eq("code", bizDaywork.getNewCarrierCode()));
+        if (curCarrier == null) {
+            return error("该箱码不存在,请扫载具码");
+        }
+        curCarrier.setCarrierId(curCarrier.getId());
+        curCarrier.setCarrierCode(curCarrier.getCode());
+        List<BizCarrierReject> carrierRejects = bizCarrierRejectService.query().eq("carrier_id",curCarrier.getId()).orderByDesc("create_time").list();
+        if (!carrierRejects.isEmpty() && carrierRejects.get(0).getIsAbandoned() == 1) {
+            return error("该载具已被废弃");
+        }
+        // 假设不是检查箱则返回错误
+        if(!curCarrier.getIsInspection().equals(1)) {
+            return error("该载具不是检查载具");
+        }
+        // 假设已绑定其他批次则返回错误
+        List<BizDayworkCarrier> bizDayworkCarriers = bizDayworkCarrierService.query().eq("carrier_id", curCarrier.getId()).eq("is_changed", 0).list();
+        if (bizDayworkCarriers.stream().anyMatch(v -> !v.getDayworkId().equals(bizDaywork.getId()))) {
+            return error("该载具已绑定其他批次");
+        }
+        // 都没有把箱信息返回到前台
+        return success(curCarrier);
+    }
+
     // 【checkCarrier 原有代码 备份】
     /*
     public AjaxResult checkCarrier(@RequestBody BizDaywork bizDaywork) {

+ 83 - 9
src/main/java/cn/ezhizao/project/business/product/controller/BizProcessInspecionController.java

@@ -1,14 +1,11 @@
 package cn.ezhizao.project.business.product.controller;
 
-import java.math.BigDecimal;
 import java.text.SimpleDateFormat;
-import java.time.LocalDateTime;
 import java.util.*;
 import java.util.stream.Collectors;
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletResponse;
 
-import cn.ezhizao.common.utils.DateUtils;
 import cn.ezhizao.common.utils.poi.ExcelUtil;
 import cn.ezhizao.framework.aspectj.lang.annotation.Log;
 import cn.ezhizao.framework.aspectj.lang.enums.BusinessType;
@@ -17,15 +14,15 @@ import cn.ezhizao.framework.web.domain.AjaxResult;
 import cn.ezhizao.framework.web.page.TableDataInfo;
 import cn.ezhizao.project.business.carrierReject.domain.BizCarrierReject;
 import cn.ezhizao.project.business.carrierReject.service.IBizCarrierRejectService;
+import cn.ezhizao.project.business.outsource.domain.BizOutsourcedOrderDetail;
+import cn.ezhizao.project.business.outsource.domain.BizOutsourcedOrderDetailProcess;
+import cn.ezhizao.project.business.outsource.service.IBizOutsourcedOrderDetailService;
 import cn.ezhizao.project.business.product.domain.*;
-import cn.ezhizao.project.business.product.mapper.BizDayworkCarrierMapper;
 import cn.ezhizao.project.business.product.service.*;
 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.annotation.TableField;
-import org.apache.xmlbeans.impl.soap.Detail;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
@@ -88,6 +85,8 @@ public class BizProcessInspecionController extends BaseController {
     private IBizProductionPlanDetailService productionPlanDetailService;
     @Resource
     private IBizProcessInspectionDetailService processInspectionDetailService;
+    @Resource
+    private IBizOutsourcedOrderDetailService bizOutsourcedOrderDetailService;
 
     /**
      * 查询序检主列表
@@ -351,7 +350,6 @@ public class BizProcessInspecionController extends BaseController {
             processInspecion.setEndTime(new Date());
 
         }
-
         //保存
         bizProcessInspecionService.saveOrUpdate(processInspecion);
 
@@ -407,17 +405,28 @@ public class BizProcessInspecionController extends BaseController {
         return success(bizDayworkItemService.saveOrUpdate(dayworkItem) && bizDayworkItemConsultService.saveOrUpdateBatch(consults));
     }
 
+    private boolean checkOutsourceDayworkItem(Long outsourceOrderDetailId) {
+        // 检测外协序检后是否已经周转到下一工序。
+        BizDayworkItem bizDayworkItem = bizDayworkItemService.query().eq("outsource_detail_id", outsourceOrderDetailId).orderByDesc("process_step_number").one();
+        BizDaywork bizDaywork = bizDayworkService.getById(bizDayworkItem.getDayworkId());
+        List<BizDayworkItem> items = bizDayworkItemService.query().eq("daywork_id", bizDayworkItem.getDayworkId()).list();
+        // 下序已经报工
+        // 下序未报工
+        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 saveOutsourcedInspecionV2(@RequestBody BizProcessInspecion processInspecion) throws NoSuchFieldException, IllegalAccessException {
+    public AjaxResult saveOutsourcedInspectionV2(@RequestBody BizProcessInspecion processInspecion) throws NoSuchFieldException, IllegalAccessException {
         //根据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());
-        BizDayworkItem dayworkItem = bizDayworkItemService.getById(processInspecion.getLot().getDayworkItemId());
+        processInspecion.setReturnReceiptDetailId(bizReturnReceiptDetail.getId());
         processInspecion.setUserId(user == null ? 0L : user.getUserId());
         processInspecion.setNickName(user == null ? "" : user.getNickName());
         processInspecion.setCarrierId(processInspecion.getLot().getCarrierId());
@@ -442,9 +451,32 @@ public class BizProcessInspecionController extends BaseController {
             processInspecion.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(processInspecion.getDayworkId()))) {
+            return error("检测载具已绑定其他批次");
+        }
 
         //保存
         bizProcessInspecionService.saveOrUpdate(processInspecion);
+
+        if (dayworkCarriers.stream().noneMatch(v -> v.getDayworkId().equals(processInspecion.getDayworkId())) && (processInspecion.getIsInspectionCarrierChanged() == null || processInspecion.getIsInspectionCarrierChanged().equals(0))) {
+            // 该检测载具需要绑定到当前批次
+            BizDayworkCarrier newDayworkCarrier = new BizDayworkCarrier();
+            newDayworkCarrier.setDayworkId(processInspecion.getDayworkId());
+            newDayworkCarrier.setCarrierCode(carrier.getCode());
+            newDayworkCarrier.setCarrierId(carrier.getId());
+            newDayworkCarrier.setLotCode(processInspecion.getLotCode());
+            newDayworkCarrier.setLotId(processInspecion.getLotId());
+            newDayworkCarrier.setProductionPlanDetailId(processInspecion.getProductionPlanDetailId());
+            newDayworkCarrier.setProcessInspectionId(processInspecion.getId());
+            bizDayworkCarrierService.save(newDayworkCarrier);
+        }
+
         //保存废品信息
         List<BizProcessInspectionDetail> rejects = processInspecion.getRejects();
         //保存前先删除原先废品信息
@@ -675,6 +707,10 @@ public class BizProcessInspecionController extends BaseController {
         lot.setCarrierCode(dayworkCarrier.getCarrierCode());
         lot.setCarrierId(dayworkCarrier.getCarrierId());
         lot.setPudName(item.getProdNum() == 0 ? lot.getProductionQuantity() : item.getProdNum());
+        // 获取外协工序列表
+        BizOutsourcedOrderDetail detail = bizOutsourcedOrderDetailService.getById(detailList.get(0).getOutsourceDetailId());
+        lot.setOutsourceOrderDetailId(detail != null ? detail.getId() : null);
+        lot.setProcessList(detail != null ? detail.getProcessNames() : "");
         return success(lot);
     }
 
@@ -842,4 +878,42 @@ public class BizProcessInspecionController extends BaseController {
     public AjaxResult remove(@PathVariable List<Long> ids) {
         return toAjax(bizProcessInspecionService.removeBatchByIds(ids));
     }
+
+    /**
+     * 保存序检箱
+     */
+    @Log(title = "序检换箱", businessType = BusinessType.INSERT)
+    @PostMapping("/saveInspectionCarrier")
+    public AjaxResult saveInspectionCarrier(@RequestBody BizProcessInspecion bizProcessInspecion) {
+        List<BizDayworkCarrier> bizDayworkCarriers = bizDayworkCarrierService.query().eq("process_inspection_id", bizProcessInspecion.getId()).eq("is_changed", 0).list();
+        BizProcessInspecion current = bizProcessInspecionService.getById(bizProcessInspecion.getId());
+        List<BizDayworkCarrier> newCarriers = bizProcessInspecion.getDayworkCarriers();
+        if (bizProcessInspecion.getStatus().equals(0) && newCarriers.isEmpty()) {
+            return error("该序检未完成,不能解绑载具");
+        }
+        bizDayworkCarriers.forEach(l -> l.setIsChanged(1));
+        bizDayworkCarrierService.updateBatchById(bizDayworkCarriers);
+        if (newCarriers.isEmpty()) {
+            current.setIsInspectionCarrierChanged(1);
+            current.setInspectionCarrierChangedTime(new Date());
+            bizProcessInspecionService.updateById(current);
+        } else {
+            current.setIsInspectionCarrierChanged(0);
+            current.setInspectionCarrierChangedTime(null);
+            current.setInspectionCarrierId(newCarriers.get(0).getCarrierId());
+            current.setInspectionCarrierCode(newCarriers.get(0).getCarrierCode());
+            bizProcessInspecionService.updateById(current);
+        }
+        newCarriers.forEach(l -> {
+            l.setId(null);
+            l.setIsChanged(0);
+            l.setProcessInspectionId(bizProcessInspecion.getId());
+            l.setDayworkId(bizProcessInspecion.getDayworkId());
+            l.setProductionPlanId(bizProcessInspecion.getProductionPlanId());
+            l.setLotId(bizProcessInspecion.getLotId());
+        });
+        bizDayworkCarrierService.saveOrUpdateBatch(newCarriers);
+        return success();
+    }
+
 }

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

@@ -80,6 +80,9 @@ public class BizDayworkCarrier extends BaseEntity
     @ApiModelProperty(value = "是否被更换")
     private Integer isChanged;
 
+    @ApiModelProperty("序检外键")
+    private Long processInspectionId;
+
     //工序编码
     @TableField(exist = false)
     private List<String> processCode;

+ 6 - 0
src/main/java/cn/ezhizao/project/business/product/domain/BizLot.java

@@ -124,6 +124,12 @@ public class BizLot extends BaseEntity
     private String flag;
     private Long fromId;
 
+    @TableField(exist = false)
+    private String processList;
+
+    @ApiModelProperty("外协单id")
+    @TableField(exist = false)
+    private Long outsourceOrderDetailId;
 
 
 }

+ 15 - 0
src/main/java/cn/ezhizao/project/business/product/domain/BizProcessInspecion.java

@@ -164,4 +164,19 @@ public class BizProcessInspecion extends BaseEntity
     @ApiModelProperty("不合格数量")
     private Integer disqualificationNum;
 
+    @ApiModelProperty("质检箱解绑")
+    private Integer isInspectionCarrierChanged;
+
+    @ApiModelProperty("质检箱解绑时间")
+    private Date inspectionCarrierChangedTime;
+
+    @TableField(exist = false)
+    private List<BizDayworkCarrier> dayworkCarriers;
+
+    @ApiModelProperty("外协序检工序")
+    private String processNames;
+
+    @ApiModelProperty("外协单id")
+    private Long outsourceOrderDetailId;
+
 }

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

@@ -18,6 +18,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="carrierCode != null  and carrierCode != ''"> AND carrier_code = #{carrierCode}</if>
             <if test="isChanged != null "> AND is_changed = #{isChanged}</if>
             <if test="dayworkId!= null "> AND daywork_id = #{dayworkId}</if>
+            <if test="processInspectionId != null "> AND process_inspection_id = #{processInspectionId}</if>
 
         </trim>
     </select>