package zy.cloud.wms.manager.controller; 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.*; import zy.cloud.wms.manager.service.FlowStatusService; import zy.cloud.wms.manager.service.ItemService; import zy.cloud.wms.manager.service.ProjectPlanService; import com.core.annotations.ManagerAuth; import com.core.common.BaseRes; import com.core.common.Cools; import com.core.common.R; import zy.cloud.wms.common.web.BaseController; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; @RestController public class ProjectPlanController extends BaseController { @Autowired private ProjectPlanService projectPlanService; @Autowired private ItemService itemService; @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 public R list(@RequestParam(defaultValue = "1") Integer curr, @RequestParam(defaultValue = "10") Integer limit, @RequestParam(required = false) String orderByField, @RequestParam(required = false) String orderByType, @RequestParam Map param) { String target = (String) param.get("items"); String search = (String) param.get("id"); param.remove("items"); param.remove("id"); EntityWrapper wrapper = new EntityWrapper<>(); if (target != null && !target.equals("0")){ wrapper.eq("item_id",target); }else{ List items = itemService.selectList(new EntityWrapper() .eq("status", "2")); for (Item item : items) { wrapper.ne("item_id",item.getId()); } } excludeTrash(param); convert(param, wrapper); wrapper.orderBy("item_id"); return R.ok(projectPlanService.selectPage(new Page<>(curr, limit), wrapper)); } private void convert(Map map, EntityWrapper wrapper) { for (Map.Entry entry : map.entrySet()) { String val = String.valueOf(entry.getValue()); if (val.contains(RANGE_TIME_LINK)) { String[] dates = val.split(RANGE_TIME_LINK); wrapper.ge(entry.getKey(), DateUtils.convert(dates[0])); wrapper.le(entry.getKey(), DateUtils.convert(dates[1])); } else { wrapper.like(entry.getKey(), val); } } } @RequestMapping(value = "/projectPlan/add/auth") @ManagerAuth public R add(ProjectPlan projectPlan) { ProjectPlan checkExist = projectPlanService.selectOne(new EntityWrapper() .eq("item_id", projectPlan.getItemId()) .eq("weight_num", projectPlan.getWeightNum())); if (!Cools.isEmpty(checkExist)) { throw new CoolException("权重值冲突,请检查"); } FlowStatus id = flowStatusService.selectOne(new EntityWrapper() .eq("id", projectPlan.getFlowId())); if (!Cools.isEmpty(id)) { projectPlan.setFlowName(id.getName()); }else { throw new CoolException("无法通过节点ID找到对应节点"); } projectPlan.setCreateId(getUserId()); projectPlan.setModifyId(getUserId()); projectPlanService.insert(projectPlan); return R.ok(); } @RequestMapping(value = "/projectPlan/update/auth") @ManagerAuth public R update(ProjectPlan projectPlan) { if (Cools.isEmpty(projectPlan) || null == projectPlan.getId()) { return R.error(); } if (projectPlan.getDelay() < 0){ throw new CoolException("延期天数不可为负数"); } projectPlan.setModifyTime(new Date()); projectPlan.setModifyId(getUserId()); projectPlanService.updateById(projectPlan); return R.ok(); } @RequestMapping("/projectPlan/update/homepage") public R updateByHomepage(@RequestParam HashMap param){ String itemId = (String) param.get("itemId"); String weightNum = (String) param.get("weightNum"); String realStartTime = (String) param.get("realStartTime"); String realEndTime = (String) param.get("realEndTime"); ProjectPlan projectPlan = projectPlanService.selectOne(new EntityWrapper() .eq("item_id", itemId) .eq("weight_num", weightNum)); try { projectPlan.setRealStartTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(realStartTime)); projectPlan.setRealEndTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(realEndTime)); } catch (ParseException e) { throw new RuntimeException(e); } projectPlanService.updateById(projectPlan); return R.ok(); } @RequestMapping(value = "/projectPlan/delete/auth") @ManagerAuth public R delete(@RequestParam(value = "ids[]") Long[] ids) { for (Long id : ids) { projectPlanService.deleteById(id); } return R.ok(); } @RequestMapping(value = "/projectPlan/export/auth") @ManagerAuth public R export(@RequestBody JSONObject param) { EntityWrapper wrapper = new EntityWrapper<>(); List fields = JSONObject.parseArray(param.getJSONArray("fields").toJSONString(), String.class); Map map = excludeTrash(param.getJSONObject("projectPlan")); convert(map, wrapper); List list = projectPlanService.selectList(wrapper); return R.ok(exportSupport(list, fields)); } @RequestMapping(value = "/projectPlanQuery/auth") @ManagerAuth public R query(String condition) { EntityWrapper wrapper = new EntityWrapper<>(); wrapper.like("id", condition); Page page = projectPlanService.selectPage(new Page<>(0, 10), wrapper); List> result = new ArrayList<>(); for (ProjectPlan projectPlan : page.getRecords()) { Map map = new HashMap<>(); map.put("id", projectPlan.getId()); map.put("value", projectPlan.getId()); result.add(map); } return R.ok(result); } @RequestMapping(value = "/projectPlan/check/column/auth") @ManagerAuth public R query(@RequestBody JSONObject param) { Wrapper wrapper = new EntityWrapper().eq(humpToLine(String.valueOf(param.get("key"))), param.get("val")); if (null != projectPlanService.selectOne(wrapper)) { return R.parse(BaseRes.REPEAT).add(getComment(ProjectPlan.class, String.valueOf(param.get("key")))); } return R.ok(); } @RequestMapping("/projectPlan/allProjects") public R allProjects() { List items = itemService.selectList(new EntityWrapper() .ne("status","2")); List> result = new ArrayList<>(); for (Item item : items) { Map map = new HashMap<>(); map.put("key", item.getId()); map.put("val", item.getName()); result.add(map); } return R.ok().add(result); } /** * 获取延期项目 * @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 param){ String name = (String) param.get("id"); Wrapper condition = new EntityWrapper(); if (!Cools.isEmpty(name)) { Item targetItem = itemService.selectOne(new EntityWrapper() .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 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 wrapper = new EntityWrapper<>(); // hostEq(wrapper); List fields = JSONObject.parseArray(param.getJSONArray("fields").toJSONString(), String.class); // Map map = excludeTrash(param.getJSONObject("item")); // convert(map, wrapper); // List projectPlans = projectPlanService.selectList(wrapper); Wrapper condition = new EntityWrapper() .gt("delay", 0) .or() .isNotNull("delay_reason") .and() .ne("delay_reason", ""); List 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 param ){ EntityWrapper wrapper = new EntityWrapper<>(); excludeTrash(param); convert(param, wrapper); wrapper.orderBy("weight_num"); List flowStatuses = flowStatusService.selectList(wrapper); return R.ok().add(flowStatuses); } /** * 返给杨成强前端 */ @RequestMapping("/projectPlan/toFront/asrs") public R toFrontAsrs(){ EntityWrapper wrapper = new EntityWrapper<>(); wrapper.eq("type",10); List itemsArray = itemService.selectList(wrapper); ArrayList 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 projectPlans = projectPlanService.selectList(new EntityWrapper() .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 wrapper = new EntityWrapper<>(); wrapper.ne("type",10); List itemsArray = itemService.selectList(wrapper); ArrayList 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 projectPlans = projectPlanService.selectList(new EntityWrapper() .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 param // ){ // EntityWrapper itemEntityWrapper = new EntityWrapper<>(); // excludeTrash(param); // convert(param, itemEntityWrapper); // List items = itemService.selectList(itemEntityWrapper // .eq("status","1")); // List itemDTOS = new ArrayList<>(); // // for (Item item : items) { // // ItemDTO itemDTO = new ItemDTO(); // List 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 allPlans = projectPlanService.selectList(new EntityWrapper() // .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 wrapper = new EntityWrapper<>(); data.setTotalQuantity(itemService.selectCount(wrapper));//项目总共数量 data.setIntoSum(itemService.selectCount(wrapper.eq("type","10")));//集成项目数 data.setWrongInto(data.getTotalQuantity()-data.getIntoSum());//非集成项目数 List list = itemService.inspected(); data.setInspected(list.size());//已验收项目数量 data.setWrongInspected(data.getTotalQuantity()-data.getInspected());//未验收项目数量 List lists = itemService.finished(); data.setFinished(lists.size());//已完工未验收数量 return R.ok().add(data); } }