一个订单在每个站点检验都需要扫码入库报检,在中间站点复核继续试验之后默认自动将样品出库,且在列表中也不需要再展示出来,到最后一步复核结束反而是需要手动去出库不能自动出库,且出库之后也不需要在页面展示
已修改6个文件
123 ■■■■ 文件已修改
inspect-server/src/main/java/com/yuanchu/mom/controller/InsOrderPlanController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/yuanchu/mom/pojo/InsOrderState.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderPlanServiceImpl.java 87 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/yuanchu/mom/service/impl/WarehouseServiceImpl.java 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/yuanchu/mom/vo/InsOrderPlanVO.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/resources/mapper/InsSampleMapper.xml 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/yuanchu/mom/controller/InsOrderPlanController.java
@@ -264,7 +264,7 @@
    }
    @ValueClassify("检验任务")
    @ApiOperation(value = "扫码出库")
    @ApiOperation(value = "扫码出库(只有复核结束才会调用)")
    @PostMapping("/outInsOrderState")
    public Result outInsOrderState(String sonLaboratory, String sampleCode,String entrustCode) {
        return Result.success(insOrderPlanService.outInsOrderState(sonLaboratory, sampleCode,entrustCode));
inspect-server/src/main/java/com/yuanchu/mom/pojo/InsOrderState.java
@@ -13,14 +13,14 @@
import lombok.Getter;
/**
 *
 *
 * @TableName ins_order_state
 */
@TableName(value ="ins_order_state")
@Data
public class InsOrderState implements Serializable {
    /**
     *
     *
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
@@ -104,4 +104,7 @@
    @ApiModelProperty("关联 样品外键id")
    private Integer insSampleId;
}
    @ApiModelProperty("是否出库")
    private Integer isOut;
}
inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderPlanServiceImpl.java
@@ -437,10 +437,17 @@
            insOrderState.setNum(1);//初始是第一次
            insOrderStateMapper.insert(insOrderState);
        }
        //同一样品在其他站点入库之后需要将其他站点的任务不显示
        insOrderStateMapper.update(null,Wrappers.<InsOrderState>lambdaUpdate()
        .eq(InsOrderState::getInsOrderId,insSample.getInsOrderId())
        .eq(InsOrderState::getInsSampleId,insSample.getId())
        .eq(InsOrderState::getInsState,6)//复核继续试验
        .ne(InsOrderState::getLaboratory,sonLaboratory)
        .set(InsOrderState::getIsOut,1));//不显示
        return 1;
    }
    //扫码出库
    //扫码出库(只有复核结束才会调用)
    @Override
    public int outInsOrderState(String sonLaboratory, String sampleCode, String entrustCode) {
        //判断该样品的检验任务是否已经结束(继续试验或者是结束试验)
@@ -455,22 +462,16 @@
        if (!collect.contains(sonLaboratory)) {
            throw new ErrorException("该样品没有" + sonLaboratory + "站点的相关项目,请查看下单详情!");
        }
        //判断该任务是否是结束试验
        //判断该订单是否站点任务有(继续试验或者是结束试验)
        List<InsOrderState> orderStates = insOrderStateMapper.selectList(Wrappers.<InsOrderState>lambdaQuery()
                .eq(InsOrderState::getInsOrderId, insSample.getInsOrderId())
                .eq(InsOrderState::getInsState, 5));//结束试验
        if (CollectionUtils.isEmpty(orderStates)) {
            List<InsOrderState> orderStates1 = insOrderStateMapper.selectList(Wrappers.<InsOrderState>lambdaQuery()
                    .eq(InsOrderState::getInsOrderId, insSample.getInsOrderId())
                    .eq(InsOrderState::getInsSampleId, insSample.getId())
                    .eq(InsOrderState::getLaboratory, sonLaboratory)
                    .eq(InsOrderState::getInsState, 6));//继续试验
            if (CollectionUtils.isEmpty(orderStates1)) {
                throw new ErrorException("该样品的检验任务还没有结束试验或继续试验,暂时无法出库!");
            }
        InsOrderState orderStates = insOrderStateMapper.selectOne(Wrappers.<InsOrderState>lambdaQuery()
                .eq(InsOrderState::getLaboratory,sonLaboratory)
                .eq(InsOrderState::getInsSampleId, insSample.getId())
                .eq(InsOrderState::getInsOrderId, insSample.getInsOrderId()));
        if (orderStates.getInsState()!=5) {
                throw new ErrorException("当前样品的站点任务并不是复核的结束试验,无需手动出库!");
        }
        boolean a = true;
        warehouseService.outWarehouse(sampleCode, a, entrustCode);
        warehouseService.outWarehouse(sampleCode, true, entrustCode);
        return 0;
    }
@@ -1189,6 +1190,15 @@
                            .set(InsOrderState::getInsState, 6)
                            .set(InsOrderState::getVerifyTell, tell)
                            .set(InsOrderState::getVerifyUser, userId));
                    //继续试验自动出库
                    WarehouseHistory history = new WarehouseHistory();
                    history.setState(2);
                    history.setInsSampleId(sampleId);
                    history.setCellId(insSample.getCellId());
                    history.setWarehouseCode(warehouseHistoryMapper.selectOne(Wrappers.<WarehouseHistory>lambdaQuery()
                            .eq(WarehouseHistory::getInsSampleId, sampleId).select(WarehouseHistory::getWarehouseCode).orderByDesc(WarehouseHistory::getId).last("limit 1")).getWarehouseCode());
                    insSampleMapper.update(null, Wrappers.<InsSample>lambdaUpdate().eq(InsSample::getId, sampleId).set(InsSample::getCellId, null));
                    warehouseHistoryMapper.insert(history);
                    break;
                case 2:
                    //结束试验:此委托单停止试验(无法再次检验)。
@@ -1200,21 +1210,17 @@
                            .set(InsOrderState::getVerifyTell, tell)
                            .set(InsOrderState::getVerifyUser, userId));
                    //结束之后将该订单的所有样品全部出库
                    List<InsSample> insSamples = insSampleMapper.selectList(Wrappers.<InsSample>lambdaQuery()
                            .eq(InsSample::getInsOrderId, insSample.getInsOrderId()));
                    for (InsSample sample : insSamples) {
                        try{
                            outInsOrderState(laboratory, sample.getSampleCode(), insOrder.getEntrustCode());
                        }catch (Exception e){
                        }
                    }
//                    List<InsSample> insSamples = insSampleMapper.selectList(Wrappers.<InsSample>lambdaQuery()
//                            .eq(InsSample::getInsOrderId, insSample.getInsOrderId()));
//                    for (InsSample sample : insSamples) {
//                        try{
//                            outInsOrderState(laboratory, sample.getSampleCode(), insOrder.getEntrustCode());
//                        }catch (Exception e){
//                        }
//                    }
                    /*生成对应的检验报告*/
                    List<InsReportDto1> insReportDto1s=insOrderUserMapper.selectInsReportDto1(insOrder.getId());
                    createReport(insOrder.getId(),insReportDto1s);
                    //该订单闭环
                    insOrder.setState(4);
                    insOrderMapper.updateById(insOrder);
                    break;
            }
        }
@@ -1269,6 +1275,16 @@
                                .set(InsOrderState::getVerifyTell, tell)
                                .set(InsOrderState::getVerifyUser, userId));
                    }
                    //继续试验需要出库
                    WarehouseHistory history = new WarehouseHistory();
                    history.setState(2);
                    history.setInsSampleId(sampleId);
                    history.setCellId(insSample.getCellId());
                    history.setWarehouseCode(warehouseHistoryMapper.selectOne(Wrappers.<WarehouseHistory>lambdaQuery()
                            .eq(WarehouseHistory::getInsSampleId, sampleId).select(WarehouseHistory::getWarehouseCode).orderByDesc(WarehouseHistory::getId).last("limit 1")).getWarehouseCode());
                    insSampleMapper.update(null, Wrappers.<InsSample>lambdaUpdate()
                            .eq(InsSample::getId, sampleId).set(InsSample::getCellId, null));
                    warehouseHistoryMapper.insert(history);
                    break;
                case 2:
                    //结束试验:此委托单停止试验(无法再次检验)。
@@ -1292,19 +1308,16 @@
                                .set(InsOrderState::getVerifyUser, userId));
                    }
                    //出库
                    List<InsSample> insSamples = insSampleMapper.selectList(Wrappers.<InsSample>lambdaQuery().eq(InsSample::getInsOrderId, insSample.getInsOrderId()));
                    for (InsSample sample : insSamples) {
                        try{
                            outInsOrderState(laboratory, sample.getSampleCode(), insOrder.getEntrustCode());
                        }catch (Exception e){
                        }
                    }
//                    List<InsSample> insSamples = insSampleMapper.selectList(Wrappers.<InsSample>lambdaQuery().eq(InsSample::getInsOrderId, insSample.getInsOrderId()));
//                    for (InsSample sample : insSamples) {
//                        try{
//                            outInsOrderState(laboratory, sample.getSampleCode(), insOrder.getEntrustCode());
//                        }catch (Exception e){
//                        }
//                    }
                    /*生成对应的检验报告*/
                    List<InsReportDto1> insReportDto1s=insOrderUserMapper.selectInsReportDto1(insOrder.getId());
                    createReport(insOrder.getId(),insReportDto1s);
                    //订单闭环
                    insOrder.setState(4);
                    insOrderMapper.updateById(insOrder);
                    break;
            }
        }
inspect-server/src/main/java/com/yuanchu/mom/service/impl/WarehouseServiceImpl.java
@@ -190,28 +190,12 @@
        }
        List<InsSample> samples = insSampleMapper.selectList(Wrappers.<InsSample>lambdaQuery()
                .eq(InsSample::getSampleCode, sampleCode)
                .eq(InsSample::getInsOrderId,insOrders.get(0).getId())
                .select(InsSample::getId,InsSample::getCellId));
                .eq(InsSample::getInsOrderId,insOrders.get(0).getId()));
        if(samples.size()!=1){
            throw new ErrorException("样品编号输入有误");
        }
        if(samples.get(0).getCellId()==null){
            throw new ErrorException("样品 " + sampleCode + " 未入库");
        }
        if (!a) {
            //判断该订单是否站点任务有(继续试验或者是结束试验)
            List<InsOrderState> orderStates = insOrderStateMapper.selectList(Wrappers.<InsOrderState>lambdaQuery()
                    .eq(InsOrderState::getInsOrderId, samples.get(0).getInsOrderId())
                    .eq(InsOrderState::getInsState, 5));
            List<Integer> orderIds = new ArrayList<Integer>();
            orderIds.add(6);
            if (CollectionUtils.isEmpty(orderStates)) {
                List<Integer> collect = insOrderStateMapper.selectList(Wrappers.<InsOrderState>lambdaQuery()
                        .eq(InsOrderState::getInsOrderId, samples.get(0).getInsOrderId())).stream().map(InsOrderState::getInsState).distinct().collect(Collectors.toList());
                if (collect.size()!=0 && !collect.containsAll(orderIds)) {
                    throw new ErrorException("该样品的检验任务还没有结束试验或继续试验,暂时无法出库!");
                }
            }
        }
        WarehouseHistory history = new WarehouseHistory();
        history.setState(2);
@@ -219,6 +203,10 @@
        history.setCellId(samples.get(0).getCellId());
        history.setWarehouseCode(warehouseHistoryMapper.selectOne(Wrappers.<WarehouseHistory>lambdaQuery().eq(WarehouseHistory::getInsSampleId, samples.get(0).getId()).select(WarehouseHistory::getWarehouseCode).orderByDesc(WarehouseHistory::getId).last("limit 1")).getWarehouseCode());
        insSampleMapper.update(null, Wrappers.<InsSample>lambdaUpdate().eq(InsSample::getId, samples.get(0).getId()).set(InsSample::getCellId, null));
        //该订单闭环
        InsOrder insOrder = insOrders.get(0);
        insOrder.setState(4);
        insOrderMapper.updateById(insOrder);
        return warehouseHistoryMapper.insert(history);
    }
inspect-server/src/main/java/com/yuanchu/mom/vo/InsOrderPlanVO.java
@@ -64,5 +64,6 @@
    private Integer sort;
    private Integer version;
    private Integer num1;
    private Integer isOut;
}
inspect-server/src/main/resources/mapper/InsSampleMapper.xml
@@ -29,6 +29,7 @@
        SELECT
        a.*,
        ios.ins_state,
        ios.is_out,
        ios.laboratory son_laboratory,
        ios.verify_tell,
        verify_user,
@@ -94,6 +95,7 @@
        ios.create_time
        ) b
        where ins_state is not null
        and (is_out is null or is_out !=1)
        and son_laboratory=#{sonLaboratory}
        and state =1
        <if test="laboratory!=null and laboratory!=''">