##
mrzhssss
2022-09-06 20004f666ec4568ba161a112cb6d955dedc1014a
src/main/java/zy/cloud/wms/manager/controller/ProjectPlanController.java
@@ -1,16 +1,12 @@
package zy.cloud.wms.manager.controller;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.plugins.Page;
import com.core.common.DateUtils;
import com.core.exception.CoolException;
import zy.cloud.wms.manager.entity.FlowStatus;
import zy.cloud.wms.manager.entity.Item;
import zy.cloud.wms.manager.entity.Node;
import zy.cloud.wms.manager.entity.ProjectPlan;
import zy.cloud.wms.manager.entity.*;
import zy.cloud.wms.manager.service.FlowStatusService;
import zy.cloud.wms.manager.service.ItemService;
import zy.cloud.wms.manager.service.ProjectPlanService;
@@ -34,11 +30,14 @@
    @Autowired
    private FlowStatusService flowStatusService;
    @RequestMapping(value = "/projectPlan/{id}/auth")
    @ManagerAuth
    public R get(@PathVariable("id") String id) {
        return R.ok(projectPlanService.selectById(String.valueOf(id)));
    }
    @RequestMapping(value = "/projectPlan/list/auth")
    @ManagerAuth
@@ -48,16 +47,25 @@
                  @RequestParam(required = false) String orderByType,
                  @RequestParam Map<String, Object> param) {
        String target = (String) param.get("items");
        String search = (String) param.get("id");
        param.remove("items");
        param.remove("id");
        EntityWrapper<ProjectPlan> wrapper = new EntityWrapper<>();
        wrapper.eq("item_id",target);
        if (target != null && !target.equals("0")){
            wrapper.eq("item_id",target);
        }else{
            List<Item> items = itemService.selectList(new EntityWrapper<Item>()
                    .eq("status", "2"));
            for (Item item : items) {
                wrapper.ne("item_id",item.getId());
            }
        }
        excludeTrash(param);
        convert(param, wrapper);
        wrapper.orderBy("weight_num");
//        if (!Cools.isEmpty(orderByField)) {
//            wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));
//        }
        wrapper.orderBy("item_id");
        return R.ok(projectPlanService.selectPage(new Page<>(curr, limit), wrapper));
    }
@@ -85,6 +93,7 @@
        if (!Cools.isEmpty(checkExist)) {
            throw new CoolException("权重值冲突,请检查");
        }
        FlowStatus id = flowStatusService.selectOne(new EntityWrapper<FlowStatus>()
                .eq("id", projectPlan.getFlowId()));
        if (!Cools.isEmpty(id)) {
@@ -106,25 +115,14 @@
            return R.error();
        }
        ProjectPlan checkExist = projectPlanService.selectOne(new EntityWrapper<ProjectPlan>()
                .eq("item_id", projectPlan.getItemId())
                .eq("weight_num", projectPlan.getWeightNum()));
        if (!Cools.isEmpty(checkExist)) {
            throw new CoolException("权重值冲突,请检查");
        if (projectPlan.getDelay() < 0){
            throw new CoolException("延期天数不可为负数");
        }
        FlowStatus id = flowStatusService.selectOne(new EntityWrapper<FlowStatus>()
                .eq("id", projectPlan.getFlowId()));
        if (!Cools.isEmpty(id)) {
            projectPlan.setFlowName(id.getName());
        }else {
            throw new CoolException("无法通过节点ID找到对应节点");
        }
        projectPlan.setModifyTime(new Date());
        projectPlan.setModifyId(getUserId());
        projectPlanService.update(projectPlan,new EntityWrapper<ProjectPlan>()
                .eq("item_id",projectPlan.getItemId())
                .eq("weight_num",projectPlan.getWeightNum()));
//        projectPlanService.updateById(projectPlan);
        projectPlanService.updateById(projectPlan);
        return R.ok();
    }
@@ -174,10 +172,12 @@
        return R.ok();
    }
    @RequestMapping("/projectPlan/allProjects")
    public R allProjects() {
        List<Item> items = itemService.selectList(null);
        List<Item> items = itemService.selectList(new EntityWrapper<Item>()
                .ne("status","2"));
        List<Map<String, Object>> result = new ArrayList<>();
        for (Item item : items) {
@@ -190,4 +190,265 @@
    }
    /**
     * 获取延期项目
     * @param curr
     * @param limit
     * @param orderByField
     * @param orderByType
     * @param param
     * @return
     */
    @RequestMapping("/projectPlan/diffProjects")
    public R diffProjects(@RequestParam(defaultValue = "1") Integer curr,
                          @RequestParam(defaultValue = "10") Integer limit,
                          @RequestParam(required = false) String orderByField,
                          @RequestParam(required = false) String orderByType,
                          @RequestParam Map<String, Object> param){
        String name = (String) param.get("id");
        Wrapper<ProjectPlan> condition = new EntityWrapper<ProjectPlan>();
        if (!Cools.isEmpty(name)) {
            Item targetItem = itemService.selectOne(new EntityWrapper<Item>()
                    .like("name", name));
            if (!Cools.isEmpty(targetItem)) {
                condition
                        .eq("item_id",targetItem.getId())
                        .and()
                        .gt("delay", 0)
                        .or()
                        .isNotNull("delay_reason")
                        .and()
                        .ne("delay_reason", "")
                        .and()
                        .eq("item_id",targetItem.getId());
            }else {
                return R.ok(new Page<>(curr,limit));
            }
        }else {
            condition
                    .gt("delay", 0)
                    .or()
                    .isNotNull("delay_reason")
                    .and()
                    .ne("delay_reason", "");
        }
        Page<ProjectPlan> projectPlanPage = projectPlanService.selectPage(new Page<>(curr, limit), condition);
        return R.ok(projectPlanPage);
    }
    /**
     * 打印方法
     * @param param
     * @return
     */
    @RequestMapping("/projectPlan/diffProjects/export")
    public R diffExport(@RequestBody JSONObject param){
//        EntityWrapper<ProjectPlan> wrapper = new EntityWrapper<>();
//        hostEq(wrapper);
        List<String> fields = JSONObject.parseArray(param.getJSONArray("fields").toJSONString(), String.class);
//        Map<String, Object> map = excludeTrash(param.getJSONObject("item"));
//        convert(map, wrapper);
//        List<ProjectPlan> projectPlans = projectPlanService.selectList(wrapper);
        Wrapper<ProjectPlan> condition = new EntityWrapper<ProjectPlan>()
                .gt("delay", 0)
                .or()
                .isNotNull("delay_reason")
                .and()
                .ne("delay_reason", "");
        List<ProjectPlan> projectPlans = projectPlanService.selectList(condition);
        return R.ok(exportSupport(projectPlans, fields));
    }
    /**
     * 返回所有节点类型给小杨写的前端
     * @return
     */
    @RequestMapping("/projectPlan/flowStatus")
    public R flowStatus(
            @RequestParam(defaultValue = "1") Integer curr,
            @RequestParam(defaultValue = "10") Integer limit,
            @RequestParam(required = false) String orderByField,
            @RequestParam(required = false) String orderByType,
            @RequestParam Map<String, Object> param
    ){
        EntityWrapper<FlowStatus> wrapper = new EntityWrapper<>();
        excludeTrash(param);
        convert(param, wrapper);
        wrapper.orderBy("weight_num");
        List<FlowStatus> flowStatuses = flowStatusService.selectList(wrapper);
        return R.ok().add(flowStatuses);
    }
    /**
     * 返给杨成强前端
     */
    @RequestMapping("/projectPlan/toFront/asrs")
    public R toFrontAsrs(){
        EntityWrapper<Item> wrapper = new EntityWrapper<>();
        wrapper.eq("type",10);
        List<Item> itemsArray = itemService.selectList(wrapper);
        ArrayList<ItemDTO> itemDtos = new ArrayList<>();
        for (Item item : itemsArray) {
            ItemDTO itemDto = new ItemDTO();
            itemDto.setProjectName(item.getName());
            itemDto.setProjectType(item.getType$());
            itemDto.setProjectStartTime(item.getStartTime$());
            itemDto.setProjectEndTime(item.getEndTime$());
            List<ProjectPlan> projectPlans = projectPlanService.selectList(new EntityWrapper<ProjectPlan>()
                    .eq("item_id", item.getId())
                    .orderBy("weight_num", true));
            itemDto.setProjectPlans(projectPlans);
            itemDtos.add(itemDto);
        }
        return R.ok().add(itemDtos);
    }
    @RequestMapping("/projectPlan/toFront/common")
    public R toFrontCommon(){
        EntityWrapper<Item> wrapper = new EntityWrapper<>();
        wrapper.ne("type",10);
        List<Item> itemsArray = itemService.selectList(wrapper);
        ArrayList<ItemDTO> itemDtos = new ArrayList<>();
        for (Item item : itemsArray) {
            ItemDTO itemDto = new ItemDTO();
            itemDto.setProjectName(item.getName());
            itemDto.setProjectType(item.getType$());
            itemDto.setProjectStartTime(item.getStartTime$());
            itemDto.setProjectEndTime(item.getEndTime$());
            List<ProjectPlan> projectPlans = projectPlanService.selectList(new EntityWrapper<ProjectPlan>()
                    .eq("item_id", item.getId())
                    .orderBy("weight_num", true));
            itemDto.setProjectPlans(projectPlans);
            itemDtos.add(itemDto);
        }
        return R.ok().add(itemDtos);
    }
    /**
     * 返回给小杨前端数据
     * 旧版本,已弃用
     * @return
     */
//    @RequestMapping("/projectPlan/toFront/old")
//    public R toFrontOld(
//            @RequestParam(defaultValue = "1") Integer curr,
//            @RequestParam(defaultValue = "10") Integer limit,
//            @RequestParam(required = false) String orderByField,
//            @RequestParam(required = false) String orderByType,
//            @RequestParam Map<String, Object> param
//    ){
//        EntityWrapper<Item> itemEntityWrapper = new EntityWrapper<>();
//        excludeTrash(param);
//        convert(param, itemEntityWrapper);
//        List<Item> items = itemService.selectList(itemEntityWrapper
//                .eq("status","1"));
//        List<ItemDTO> itemDTOS = new ArrayList<>();
//
//        for (Item item : items) {
//
//            ItemDTO itemDTO = new ItemDTO();
//            List<FlowsDTO> flows = new ArrayList<>();
//            itemDTO.setId(item.getName());
//            itemDTO.setStartDay(item.getStartTime$());
//            itemDTO.setEndDay(item.getEndTime$());
//            itemDTO.setPresaleAmt(item.getPresaleAmt());
//            itemDTO.setPlandeAmt(item.getPlandeAmt());
//            itemDTO.setRealdeAmt(item.getRealdeAmt());
//            itemDTO.setPlaninAmt(item.getPlaninAmt());
//            itemDTO.setRealinAmt(item.getRealinAmt());
//            itemDTO.setType(item.getType$());
//
//            //add
//            Integer type = Integer.parseInt(item.getType());
//
//            List<ProjectPlan> allPlans = projectPlanService.selectList(new EntityWrapper<ProjectPlan>()
//                    .eq("item_id", item.getId()));
//            for (ProjectPlan projectPlan : allPlans) {
//                FlowsDTO flowsDTO = new FlowsDTO();
//                flowsDTO.setName(projectPlan.getFlowId$());
//                if(type==5) {
//                    if(projectPlan.getFlowId()>=8 && projectPlan.getFlowId()<11){
//                        flowsDTO.setStartTime("-");
//                        flowsDTO.setEndTime$("-");
//                    }else{
//                        flowsDTO.setStartTime(projectPlan.getStartTime$());
//                        flowsDTO.setEndTime$(projectPlan.getEndTime$());
//                        flowsDTO.setRealStartTime$(projectPlan.getRealStartTime$());
//                        flowsDTO.setRealEndTime$(projectPlan.getRealEndTime$());
//                    }
//                }else if(type==1 || type==2 || type==6 || type==9) {
//                    if((projectPlan.getFlowId()>=8&&projectPlan.getFlowId()<11) || projectPlan.getFlowId()==2 || projectPlan.getFlowId()==6){
//                        flowsDTO.setStartTime("-");
//                        flowsDTO.setEndTime$("-");
//                    }else{
//                        flowsDTO.setStartTime(projectPlan.getStartTime$());
//                        flowsDTO.setEndTime$(projectPlan.getEndTime$());
//                        flowsDTO.setRealStartTime$(projectPlan.getRealStartTime$());
//                        flowsDTO.setRealEndTime$(projectPlan.getRealEndTime$());
//                    }
//                }else if(type==3 || type==8){
//                    if((projectPlan.getFlowId()>=8&&projectPlan.getFlowId()<11) || projectPlan.getFlowId()==6){
//                        flowsDTO.setStartTime("-");
//                        flowsDTO.setEndTime$("-");
//                    }else{
//                        flowsDTO.setStartTime(projectPlan.getStartTime$());
//                        flowsDTO.setEndTime$(projectPlan.getEndTime$());
//                        flowsDTO.setRealStartTime$(projectPlan.getRealStartTime$());
//                        flowsDTO.setRealEndTime$(projectPlan.getRealEndTime$());
//                    }
//                } else if(type==4){
//                    if((projectPlan.getFlowId()>=8&&projectPlan.getFlowId()<11) || projectPlan.getFlowId()==6){
//                        flowsDTO.setStartTime("-");
//                        flowsDTO.setEndTime$("-");
//                    }else{
//                        flowsDTO.setStartTime(projectPlan.getStartTime$());
//                        flowsDTO.setEndTime$(projectPlan.getEndTime$());
//                        flowsDTO.setRealStartTime$(projectPlan.getRealStartTime$());
//                        flowsDTO.setRealEndTime$(projectPlan.getRealEndTime$());
//                    }
//                }else if(type==10){
//                    flowsDTO.setStartTime(projectPlan.getStartTime$());
//                    flowsDTO.setEndTime$(projectPlan.getEndTime$());
//                    flowsDTO.setRealStartTime$(projectPlan.getRealStartTime$());
//                    flowsDTO.setRealEndTime$(projectPlan.getRealEndTime$());
//                }
//                flows.add(flowsDTO);
//            }
//            itemDTO.setNodes(flows);
//            itemDTOS.add(itemDTO);
//        }
//        return R.ok().add(itemDTOS);
//    }
    /**
     * 项目汇总数据
     */
    @RequestMapping("/projectPlan/dataSummary")
    public R dataSummary(){
        dataSummary data = new dataSummary();
        Wrapper<Item> wrapper = new EntityWrapper<>();
        data.setTotalQuantity(itemService.selectCount(wrapper));//项目总共数量
        data.setIntoSum(itemService.selectCount(wrapper.eq("type","10")));//集成项目数
        data.setWrongInto(data.getTotalQuantity()-data.getIntoSum());//非集成项目数
        List<Item> list =  itemService.inspected();
        data.setInspected(list.size());//已验收项目数量
        data.setWrongInspected(data.getTotalQuantity()-data.getInspected());//未验收项目数量
        List<Item> lists =  itemService.finished();
        data.setFinished(lists.size());//已完工未验收数量
        return R.ok().add(data);
    }
}