春风项目四线(合箱线、总装线)
yyt
2024-05-20 d4f4376ab5aef071cb841de0f9a9b7f6cb16c651
jcdm-main/src/main/java/com/jcdm/main/bs/orderScheduling/controller/BsOrderSchedulingController.java
@@ -12,26 +12,36 @@
import com.jcdm.common.core.domain.entity.SysDictData;
import com.jcdm.common.core.page.TableDataInfo;
import com.jcdm.common.enums.BusinessType;
import com.jcdm.common.utils.SecurityUtils;
import com.jcdm.common.utils.StringUtils;
import com.jcdm.common.utils.poi.ExcelUtil;
import com.jcdm.main.bs.orderScheduling.common.Constants;
import com.jcdm.main.bs.orderScheduling.domain.BsOrderScheduling;
import com.jcdm.main.bs.orderScheduling.service.IBsOrderSchedulingService;
import com.jcdm.main.bs.orderScheduling.vo.FollowReportVO;
import com.jcdm.main.bs.orderScheduling.vo.LineChartVO;
import com.jcdm.main.bs.orderScheduling.vo.SumDataVO;
import com.jcdm.main.da.paramCollection.domain.DaParamCollection;
import com.jcdm.main.da.paramCollection.mapper.DaParamCollectionMapper;
import com.jcdm.main.da.paramCollection.service.IDaParamCollectionService;
import com.jcdm.main.da.passingStationCollection.domain.DaPassingStationCollection;
import com.jcdm.main.om.productionOrde.domain.OmProductionOrdeInfo;
import com.jcdm.main.om.productionOrde.service.impl.OmProductionOrdeInfoServiceImpl;
import com.jcdm.main.plcserver.conf.OPCElement;
import com.jcdm.main.plcserver.sub.OPCUaSubscription;
import com.jcdm.system.service.ISysDictDataService;
import com.kangaroohy.milo.model.ReadWriteEntity;
import com.kangaroohy.milo.service.MiloService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
@@ -53,6 +63,10 @@
    @Resource
    private ISysDictDataService iSysDictDataService;
    @Resource
    private OmProductionOrdeInfoServiceImpl productionOrdeInfoService;
    @Resource
    private DaParamCollectionMapper daParamCollectionService;
    @Autowired
    MiloService miloService;
@@ -182,6 +196,21 @@
        return getDataTable(list);
    }
    @GetMapping("/list3")
    public TableDataInfo list3(BsOrderScheduling bsOrderScheduling)
    {
        startPage();
        List<BsOrderScheduling> list = new ArrayList<>();
        if (StringUtils.isNotEmpty(bsOrderScheduling.getOrderNo())){
            list = bsOrderSchedulingService.selectBsOrderSchedulingPage(bsOrderScheduling);
        }
        List<BsOrderScheduling> collect = list.stream().filter(x -> Constants.UN_QUALIFIED.equals(x.getQualityStatus())).collect(Collectors.toList());
        if (CollUtil.isNotEmpty(collect)){
            String.valueOf(collect.size());
        }
        return getDataTable(list);
    }
    /**
     * 导出订单排产列表
     */
@@ -237,4 +266,114 @@
    {
        return toAjax(bsOrderSchedulingService.deleteBsOrderSchedulingByIds(ids));
    }
    @GetMapping("/getSumData")
    public R getSumData(BsOrderScheduling bsOrderScheduling){
        List<BsOrderScheduling> list = new ArrayList<>();
        int onlineNum = 0;
        int finishNum = 0;
        if (StringUtils.isNotEmpty(bsOrderScheduling.getOrderNo())){
            list = bsOrderSchedulingService.selectBsOrderSchedulingPage(bsOrderScheduling);
            List<BsOrderScheduling> onlineNumList = list.stream().filter(x -> Constants.ORDER_STATUS_ING.equals(x.getProductionStatus())).collect(Collectors.toList());
            if (CollUtil.isNotEmpty(onlineNumList)){
                onlineNum = onlineNumList.size();
            }
            List<BsOrderScheduling> finishNumList = list.stream().filter(x -> Constants.FINISH_PRODUCTION.equals(x.getProductionStatus())).collect(Collectors.toList());
            if (CollUtil.isNotEmpty(finishNumList)){
                finishNum = finishNumList.size();
            }
        }
        List<BsOrderScheduling> collect = list.stream().filter(x -> Constants.UN_QUALIFIED.equals(x.getQualityStatus())).collect(Collectors.toList());
        String unqualified = "0";
        if (CollUtil.isNotEmpty(collect)){
            unqualified = String.valueOf(collect.size());
        }
        SumDataVO vo = new SumDataVO();
        vo.setFinishNum(finishNum);
        vo.setOnlineNum(onlineNum);
        vo.setUnqualified(unqualified);
        return R.ok(vo);
    }
    /**
     * 校验发动机号是否和机型匹配、是否重复扫描、是否超出计划数量
     * @param engineNo 箱体码
     * @param model 机型
     * @return boolean
     */
    @Transactional(rollbackFor = Exception.class)
    @GetMapping("/engineNoIsInModel")
    public R engineNoIsInModel(String engineNo,String model,String orderNo) throws Exception {
        if (StringUtils.isEmpty(engineNo)){
            return R.ok(500,"箱体码为空或已存在,请重试");
        }
        BsOrderScheduling bsOrderScheduling = new BsOrderScheduling();
        bsOrderScheduling.setOrderNo(orderNo);
        //bsOrderScheduling.setProductionStatus("1");
        List<BsOrderScheduling> allList = bsOrderSchedulingService.selectBsOrderSchedulingList(bsOrderScheduling);
        List<BsOrderScheduling> dlist = allList.stream().filter(x->x.getProductionStatus().equals(Constants.WAIT_PRODUCTION)).collect(Collectors.toList());
        List<BsOrderScheduling> collect = allList.stream().filter(x -> x.getProductionStatus().equals(Constants.ORDER_STATUS_ING)
                        ||x.getProductionStatus().equals(Constants.FINISH_PRODUCTION)).collect(Collectors.toList());
        BsOrderScheduling OrderScheduling=dlist.get(0);
        DaParamCollection daParamCollection = new DaParamCollection();
        daParamCollection.setParamValue(engineNo);
        daParamCollection.setSfcCode("OP010");
        List<DaParamCollection> list = daParamCollectionService.selectDaParamCollectionList(daParamCollection);
        if (CollUtil.isNotEmpty(list)){
            return R.ok(500,"已存在此箱体码,请勿重复扫描");
        }
        OmProductionOrdeInfo info = new OmProductionOrdeInfo();
        info.setWorkOrderNo(orderNo);
        List<OmProductionOrdeInfo> omProductionOrdeInfos = productionOrdeInfoService.selectOmProductionOrdeInfoList(info);
        if (CollUtil.isNotEmpty(omProductionOrdeInfos)){
            OmProductionOrdeInfo omProductionOrdeInfo = omProductionOrdeInfos.get(0);
            Long planQty = omProductionOrdeInfo.getPlanQty();
            if (planQty<collect.size()){
                return R.ok(500,"超出计划数量,请检查后重试");
            }
        }
        //插入数据
        DaParamCollection saveData = new DaParamCollection();
        saveData.setSfcCode(OrderScheduling.getEngineNo());
        saveData.setParamValue(engineNo);
        saveData.setLocationCode("OP010");
        saveData.setParamCode("XTM");
        saveData.setParamName("箱体码");
        daParamCollectionService.insertDaParamCollection(saveData);
        //更新上线数量
        int onlineNum = 0;
        List<BsOrderScheduling> onlineNumList = bsOrderSchedulingService.selectBsOrderSchedulingList(bsOrderScheduling)
                .stream().filter(x -> Constants.ORDER_STATUS_ING.equals(x.getProductionStatus())||x.getProductionStatus().equals(Constants.FINISH_PRODUCTION)).collect(Collectors.toList());
        if (CollUtil.isNotEmpty(onlineNumList)){
            onlineNum = onlineNumList.size();
        }
        OmProductionOrdeInfo omProductionOrdeInfo = new OmProductionOrdeInfo();
        omProductionOrdeInfo.setWorkOrderNo(orderNo);
        List<OmProductionOrdeInfo> omList = productionOrdeInfoService.selectOmProductionOrdeInfoList(omProductionOrdeInfo);
        if (CollUtil.isNotEmpty(omList)){
            OmProductionOrdeInfo omInfo = omList.get(0);
            String s = String.valueOf(onlineNum);
            long l = Long.parseLong(s);
            omInfo.setActualOnlineQty(l);
            productionOrdeInfoService.updateOmProductionOrdeInfo(omInfo);
        }
        //OPC操作
        ReadWriteEntity entity = new ReadWriteEntity("CFL4HX.HOP010.Code", OrderScheduling.getEngineNo());
        OPCUaSubscription.miloService.writeToOpcUa(entity);//写SN
        ReadWriteEntity entity2 = new ReadWriteEntity("CFL4HX.HOP010.SNDoor", 1);
        OPCUaSubscription.miloService.writeToOpcByte(entity2);//写完成
        OrderScheduling.setProductionStatus("2");
        bsOrderSchedulingService.updateBsOrderScheduling(OrderScheduling);
        return R.ok();
    }
}