cl
2024-05-23 ba1a7a9ef126296e2798e313dc5b43f775a1123c
guns-vip-main/src/main/java/cn/stylefeng/guns/modular/om/productionOrdeInfo/controller/ProductionOrdeInfoController.java
@@ -6,6 +6,14 @@
import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity;
import cn.afterturn.easypoi.view.PoiBaseView;
import cn.stylefeng.guns.base.pojo.page.LayuiPageInfo;
import cn.stylefeng.guns.modular.bs.locationInfo.entity.LocationInfo;
import cn.stylefeng.guns.modular.bs.locationInfo.service.LocationInfoService;
import cn.stylefeng.guns.modular.bs.materialInfo.entity.MaterialInfo;
import cn.stylefeng.guns.modular.bs.materialInfo.service.MaterialInfoService;
import cn.stylefeng.guns.modular.cm.passingStationCollection.entity.PassingStationCollection;
import cn.stylefeng.guns.modular.cm.passingStationCollection.model.params.PassingStationCollectionParam;
import cn.stylefeng.guns.modular.cm.passingStationCollection.model.result.PassingStationCollectionResult;
import cn.stylefeng.guns.modular.cm.passingStationCollection.service.PassingStationCollectionService;
import cn.stylefeng.guns.modular.om.productionOrdeInfo.entity.ProductionOrdeInfo;
import cn.stylefeng.guns.modular.om.productionOrdeInfo.model.params.ProductionOrdeInfoParam;
import cn.stylefeng.guns.modular.om.productionOrdeInfo.model.result.ProductionOrdeInfoResult;
@@ -42,6 +50,7 @@
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.util.*;
import java.util.stream.Collectors;
/**
@@ -204,6 +213,18 @@
    }
    /**
     * 测功机新增接口
     * @return
     */
    @ResponseBody
    @CrossOrigin
    @RequestMapping("/addStationInfo")
    public ResponseData addStationInfo(PassingStationCollectionParam passingStationCollectionParam) {
        this.passingStationCollectionService.add(passingStationCollectionParam);
        return ResponseData.success();
    }
    /**
     * 大屏列表接口
     * @param productionOrdeInfoParam
     * @return
@@ -362,16 +383,17 @@
    @CrossOrigin
    @RequestMapping("/lineChart")
    public ResponseData lineChart(ProductionOrdeInfoParam productionOrdeInfoParam) {
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
        List<String> list = new ArrayList();
        List<Integer> planQtyList = new ArrayList();
        List<Integer> actualQtyList = new ArrayList();
        Map map = new HashMap<String,String>();
//        for (int i = 0; i < 7; i++) {
//            String str = LocalDate.now().minusDays(i).toString();
        for (Object o : getWeek()) {
        List<ProductionOrdeInfoResult> ColumnarDateList = productionOrdeInfoService.getColumnarDate();
        for (ProductionOrdeInfoResult result : ColumnarDateList) {
            String s = format.format(result.getActualStartTime());
            QueryWrapper<ProductionOrdeInfo> queryWrapper = new QueryWrapper<ProductionOrdeInfo>();
            queryWrapper.select("SUM(plan_qty) as planQty,SUM(actual_qty) as actualQty");
            queryWrapper.apply("CONVERT ( VARCHAR ( 100 ), plan_start_time, 23 ) = {0}",o.toString() );
            queryWrapper.apply("CONVERT ( VARCHAR ( 100 ), actual_start_time, 23 ) = {0}",s);
            ProductionOrdeInfo one = productionOrdeInfoService.getOne(queryWrapper);
            if(one!=null){
                if(one.getPlanQty()!=null){
@@ -388,37 +410,25 @@
                planQtyList.add(0);
                actualQtyList.add(0);
            }
            list.add(o.toString());
            list.add(s);
        }
//        }
        map.put("category",list);
        map.put("lineData",planQtyList);
        map.put("barData",actualQtyList);
        return ResponseData.success(map);
    }
    public static void main(String[] args) {
//        List<String> weeks = getFormatDate("month");
//        System.out.println(JSONObject.toJSONString(weeks));
//        for (int i = 0; i < 7; i++) {
//            System.out.println(LocalDate.now().minusDays(i));
//        }
        System.out.println(getWeek());
    @ResponseBody
    @CrossOrigin
    @RequestMapping("/findOrdrList")
    public ResponseData findOrdrList(ProductionOrdeInfoParam productionOrdeInfoParam) {
        ProductionOrdeInfoParam param = new ProductionOrdeInfoParam();
        param.setProductionLine("");//产线
        param.setOrderStatus("3");//工单状态
        List<ProductionOrdeInfoResult> list = productionOrdeInfoService.findListBySpec(param);
        return ResponseData.success(list);
    }
    public static List getWeek(){
        List<String> list = new ArrayList<>();
        list.add(LocalDate.now().minusDays(6).toString());
        list.add(LocalDate.now().minusDays(5).toString());
        list.add(LocalDate.now().minusDays(4).toString());
        list.add(LocalDate.now().minusDays(3).toString());
        list.add(LocalDate.now().minusDays(2).toString());
        list.add(LocalDate.now().minusDays(1).toString());
        list.add(LocalDate.now().minusDays(0).toString());
        return list;
    }
    /**
     * 下载excel导入模板
@@ -540,6 +550,313 @@
        return value.trim();
    }
    @Autowired
    MaterialInfoService materialInfoService;
    @Autowired
    PassingStationCollectionService passingStationCollectionService;
    @Autowired
    LocationInfoService locationInfoService;
    /**
     * 大屏车间工单信息接口
     * @return
     */
    @ResponseBody
    @CrossOrigin
    @RequestMapping("/topData")
    public ResponseData topData(ProductionOrdeInfoParam productionOrdeInfoParam) {
        Map map = new HashMap<String,String>();
        ProductionOrdeInfo result = null;
        //但前工单
        List<ProductionOrdeInfo> orderStatus = productionOrdeInfoService.list(new QueryWrapper<ProductionOrdeInfo>().eq("order_status", "3"));
        if(productionOrdeInfoParam.getWorkOrderNo() != null && !productionOrdeInfoParam.getWorkOrderNo().equals("")){
            List<ProductionOrdeInfo> workOrderNo = productionOrdeInfoService.list(new QueryWrapper<ProductionOrdeInfo>().eq("work_order_no", productionOrdeInfoParam.getWorkOrderNo()));
            result = workOrderNo.get(0);
        }else if(orderStatus.size()!=0){
            result = orderStatus.get(0);
        }else {
            List<ProductionOrdeInfoResult> results = productionOrdeInfoService.orderDescListFive();
            List<ProductionOrdeInfo> workOrderNo = productionOrdeInfoService.list(new QueryWrapper<ProductionOrdeInfo>().eq("work_order_no", results.get(0).getWorkOrderNo()));
            result = workOrderNo.get(0);
        }
        //产品
        List<MaterialInfo> materialCode = materialInfoService.list(new QueryWrapper<MaterialInfo>().eq("material_code", result.getMaterialCode()));
        Integer planQty = result.getPlanQty();
        Integer actualQty = result.getActualQty();
        Date date2 = new Date(); // 第二个日期
        long diffInMillis =result.getPlanEndTime().getTime() - date2.getTime(); //计算两个日期的毫秒差
        long diffInHours = diffInMillis / (60 * 60 * 1000); // 将毫秒差转换为小时差
        List<PassingStationCollection> list = passingStationCollectionService.list(new QueryWrapper<PassingStationCollection>()
                .eq("out_rs_sign", "2")
                .eq("work_order_no", result.getWorkOrderNo())
                .eq("location_code", "OP1060")
        );
        Integer NgNumber = list.size();
        map.put("workOrderNo",result.getWorkOrderNo());
        map.put("planQty",planQty);
        map.put("actualQty",actualQty);
        map.put("materialName",materialCode.get(0).getMaterialName());
        map.put("completionRate",Math.round((float) actualQty / planQty * 100));
        map.put("remainder",diffInHours);
        map.put("NgNumber",NgNumber);
        if(list.size() == 0){
            map.put("passRate","100");
        }else {
            map.put("passRate",Math.round((float) NgNumber / actualQty * 100));
        }
        return ResponseData.success(map);
    }
    @ResponseBody
    @CrossOrigin
    @RequestMapping("/centerLeftData")
    public ResponseData centerLeftData(ProductionOrdeInfoParam productionOrdeInfoParam) {
        Map map = new HashMap<String,String>();
        List categoryList = new ArrayList();
        List lineDataList = new ArrayList();
        List barDataList = new ArrayList();
        List percentageList = new ArrayList();
        percentageList.add(0);
        ProductionOrdeInfo result = null;
        //但前工单
        List<ProductionOrdeInfo> orderStatus = productionOrdeInfoService.list(new QueryWrapper<ProductionOrdeInfo>().eq("order_status", "3"));
        if(productionOrdeInfoParam.getWorkOrderNo() != null && !productionOrdeInfoParam.getWorkOrderNo().equals("")){
            List<ProductionOrdeInfo> workOrderNo = productionOrdeInfoService.list(new QueryWrapper<ProductionOrdeInfo>().eq("work_order_no", productionOrdeInfoParam.getWorkOrderNo()));
            result = workOrderNo.get(0);
        }else if(orderStatus.size()!=0){
            result = orderStatus.get(0);
        }else {
            List<ProductionOrdeInfoResult> results = productionOrdeInfoService.orderDescListFive();
            List<ProductionOrdeInfo> workOrderNo = productionOrdeInfoService.list(new QueryWrapper<ProductionOrdeInfo>().eq("work_order_no", results.get(0).getWorkOrderNo()));
            result = workOrderNo.get(0);
        }
        List<PassingStationCollectionResult> resultList = passingStationCollectionService.centerLeftData(productionOrdeInfoParam.getWorkOrderNo());
        int unQuantity = passingStationCollectionService.getUnqualifiedQuantity(productionOrdeInfoParam.getWorkOrderNo());
        int variableInt = 0;
        if(unQuantity == 0){
            map.put("category",getLocationList());
            map.put("barData",getZeroList());
            map.put("percentage",getPercentageList());
        }else {
            for (int i = 0; i < resultList.size(); i++) {
                categoryList.add(resultList.get(i).getLocationCode());
                barDataList.add(resultList.get(i).getNum());
                variableInt+=Integer.valueOf(resultList.get(i).getNum());
                percentageList.add(Math.round((float) variableInt / unQuantity * 100));
            }
            map.put("category",categoryList);
            map.put("barData",barDataList);
            map.put("lineData",lineDataList);
            map.put("percentage",percentageList);
        }
        return ResponseData.success(map);
//        Map map = new HashMap<String,String>();
//        List categoryList = new ArrayList();
//        List lineDataList = new ArrayList();
//        List barDataList = new ArrayList();
//
//        ProductionOrdeInfo result = null;
//        //但前工单
//        List<ProductionOrdeInfo> orderStatus = productionOrdeInfoService.list(new QueryWrapper<ProductionOrdeInfo>().eq("order_status", "3"));
//        if(productionOrdeInfoParam.getWorkOrderNo() != null && !productionOrdeInfoParam.getWorkOrderNo().equals("")){
//            List<ProductionOrdeInfo> workOrderNo = productionOrdeInfoService.list(new QueryWrapper<ProductionOrdeInfo>().eq("work_order_no", productionOrdeInfoParam.getWorkOrderNo()));
//            result = workOrderNo.get(0);
//        }else if(orderStatus.size()!=0){
//            result = orderStatus.get(0);
//        }else {
//            List<ProductionOrdeInfoResult> results = productionOrdeInfoService.orderDescListFive();
//            List<ProductionOrdeInfo> workOrderNo = productionOrdeInfoService.list(new QueryWrapper<ProductionOrdeInfo>().eq("work_order_no", results.get(0).getWorkOrderNo()));
//            result = workOrderNo.get(0);
//        }
//        for (String o : getLocationList()) {
//            List<PassingStationCollection> list = passingStationCollectionService.list(new QueryWrapper<PassingStationCollection>()
//                    .eq("location_code", o)
//                    .eq("out_rs_sign", "2")
//                    .eq("work_order_no",result.getWorkOrderNo())
//            );
//            List<PassingStationCollection> lineList = passingStationCollectionService.list(new QueryWrapper<PassingStationCollection>()
//                    .eq("location_code", o)
//                    .eq("work_order_no",result.getWorkOrderNo())
//            );
//            categoryList.add(o);
//            barDataList.add(list.size());
//            lineDataList.add(lineList.size());
//        }
//        map.put("category",categoryList);
//        map.put("barData",barDataList);
//        map.put("lineData",lineDataList);
//
//        return ResponseData.success(map);
    }
    @ResponseBody
    @CrossOrigin
    @RequestMapping("/bottomData")
    public ResponseData bottomData(ProductionOrdeInfoParam productionOrdeInfoParam) {
        Map map = new HashMap<String,String>();
        List unqualifiedList = new ArrayList();
        List qualifiedList = new ArrayList();
        List passRate = new ArrayList();
//        List<ProductionOrdeInfo> orderStatus = productionOrdeInfoService.list(new QueryWrapper<ProductionOrdeInfo>().eq("order_status", "3"));
//        ProductionOrdeInfo result = orderStatus.get(0);
        ProductionOrdeInfo result = null;
        //但前工单
        List<ProductionOrdeInfo> orderStatus = productionOrdeInfoService.list(new QueryWrapper<ProductionOrdeInfo>().eq("order_status", "3"));
        if(productionOrdeInfoParam.getWorkOrderNo() != null && !productionOrdeInfoParam.getWorkOrderNo().equals("")){
            List<ProductionOrdeInfo> workOrderNo = productionOrdeInfoService.list(new QueryWrapper<ProductionOrdeInfo>().eq("work_order_no", productionOrdeInfoParam.getWorkOrderNo()));
            result = workOrderNo.get(0);
        }else if(orderStatus.size()!=0){
            result = orderStatus.get(0);
        }else {
            List<ProductionOrdeInfoResult> results = productionOrdeInfoService.orderDescListFive();
            List<ProductionOrdeInfo> workOrderNo = productionOrdeInfoService.list(new QueryWrapper<ProductionOrdeInfo>().eq("work_order_no", results.get(0).getWorkOrderNo()));
            result = workOrderNo.get(0);
        }
        for (String o : getLocationList()) {
            List<PassingStationCollection> list = passingStationCollectionService.list(new QueryWrapper<PassingStationCollection>()
                    .eq("location_code", o)
                    .eq("out_rs_sign", "2")
                    .eq("work_order_no",result.getWorkOrderNo())
            );
            List<PassingStationCollection> list1 = passingStationCollectionService.list(new QueryWrapper<PassingStationCollection>()
                    .eq("location_code", o)
                    .eq("work_order_no",result.getWorkOrderNo())
            );
            Integer unqualified = list.size();
            Integer qualified = list1.size()-list.size();
            unqualifiedList.add(unqualified);
            qualifiedList.add(qualified);
            if(unqualified == 0){
                passRate.add(100);
            }else {
                passRate.add(Math.round((float) qualified / result.getActualQty() * 100));
            }
        }
        map.put("unqualifiedList",unqualifiedList);
        map.put("qualifiedList",qualifiedList);
        map.put("passRate",passRate);
        return ResponseData.success(map);
    }
    @ResponseBody
    @CrossOrigin
    @RequestMapping("/centerRightData")
    public ResponseData centerRightData(ProductionOrdeInfoParam productionOrdeInfoParam) {
//        List<ProductionOrdeInfo> orderStatus = productionOrdeInfoService.list(new QueryWrapper<ProductionOrdeInfo>().eq("order_status", "3"));
//        ProductionOrdeInfo result = orderStatus.get(0);
        ProductionOrdeInfo result = null;
        //但前工单
        List<ProductionOrdeInfo> orderStatus = productionOrdeInfoService.list(new QueryWrapper<ProductionOrdeInfo>().eq("order_status", "3"));
        if(productionOrdeInfoParam.getWorkOrderNo() != null && !productionOrdeInfoParam.getWorkOrderNo().equals("")){
            List<ProductionOrdeInfo> workOrderNo = productionOrdeInfoService.list(new QueryWrapper<ProductionOrdeInfo>().eq("work_order_no", productionOrdeInfoParam.getWorkOrderNo()));
            result = workOrderNo.get(0);
        }else if(orderStatus.size()!=0){
            result = orderStatus.get(0);
        }else {
            List<ProductionOrdeInfoResult> results = productionOrdeInfoService.orderDescListFive();
            List<ProductionOrdeInfo> workOrderNo = productionOrdeInfoService.list(new QueryWrapper<ProductionOrdeInfo>().eq("work_order_no", results.get(0).getWorkOrderNo()));
            result = workOrderNo.get(0);
        }
        Integer targetNumber = 70;
        List resultList = new ArrayList();
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
        String format1 = format.format(new Date());
        String paramPrefix = format1+" ";
        for (String s : getCenterRightSpit()) {
            List itemList = new ArrayList();
            int outTotal = passingStationCollectionService.bigCenterRightTable(paramPrefix+s+":00",paramPrefix+s.substring(0,1)+":59:59",null,result.getWorkOrderNo());
            int i = passingStationCollectionService.bigCenterRightTable(paramPrefix+s+":00",paramPrefix+s.substring(0,1)+":59:59","1",result.getWorkOrderNo());
            if(outTotal<targetNumber){
                itemList.add(boldText(s));
                itemList.add(boldText(targetNumber.toString()));
                itemList.add(boldText(String.valueOf(outTotal)));
                itemList.add(boldText(String.valueOf(targetNumber-outTotal)));
                itemList.add(boldText(Math.round((float) i / outTotal * 100)+"%"));
            }else {
                itemList.add(s);
                itemList.add(targetNumber);
                itemList.add(outTotal);
                itemList.add(targetNumber-outTotal);
                itemList.add(Math.round((float) i / outTotal * 100)+"%");
            }
           resultList.add(itemList);
        }
        return ResponseData.success(resultList);
    }
    @ResponseBody
    @CrossOrigin
    @RequestMapping("/orderDescListFive")
    public ResponseData orderDescListFive() {
        List list = new ArrayList();
        List<ProductionOrdeInfoResult> results = productionOrdeInfoService.orderDescListFive();
        for (ProductionOrdeInfoResult result : results) {
            Map itemMap = new HashMap();
            itemMap.put("value",result.getWorkOrderNo());
            itemMap.put("label",result.getWorkOrderNo());
            list.add(itemMap);
        }
        return ResponseData.success(list);
    }
    public static List<String> getLocationList(){
        List<String> locationList = new ArrayList<>();
        locationList.add("OP070");
        locationList.add("OP100");
        locationList.add("OP140");
        locationList.add("OP150");
        locationList.add("EOP080");
        locationList.add("EOP090");
        return locationList;
    }
    public static List<String> getZeroList(){
        List<String> locationList = new ArrayList<>();
        locationList.add("0");
        locationList.add("0");
        locationList.add("0");
        locationList.add("0");
        locationList.add("0");
        locationList.add("0");
        return locationList;
    }
    public static List<String> getPercentageList(){
        List<String> locationList = new ArrayList<>();
        locationList.add("100");
        locationList.add("100");
        locationList.add("100");
        locationList.add("100");
        locationList.add("100");
        locationList.add("100");
        return locationList;
    }
    public static List<String> getCenterRightSpit(){
        List<String> locationList = new ArrayList<>();
        locationList.add("8:00");
        locationList.add("9:00");
        locationList.add("10:00");
        locationList.add("11:00");
        locationList.add("12:00");
        locationList.add("13:00");
        locationList.add("14:00");
        locationList.add("15:00");
        locationList.add("16:00");
        locationList.add("17:00");
        return locationList;
    }
    public static String boldText(String param){
        return "<span style='font-size: 20px' class='colorRed'>"+param+"</span>";
    }
}