SupervisionThreestepController.java 12.5 KB
package com.trash.business.controller;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import com.trash.common.annotation.Log;
import com.trash.common.config.trashConfig;
import com.trash.common.core.controller.BaseController;
import com.trash.common.core.domain.AjaxResult;
import com.trash.common.enums.BusinessType;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.trash.business.domain.SupervisionThreestep;
import com.trash.business.domain.dayWork;
import com.trash.business.service.ISupervisionThreestepService;
import com.trash.common.utils.RemoteServerUtils;
import com.trash.common.utils.SecurityUtils;
import com.trash.common.utils.StringUtils;
import com.trash.common.utils.file.FileUtils;
import com.trash.common.utils.poi.ExcelUtil;
import com.trash.common.core.page.PageDomain;
import com.trash.common.core.page.TableDataInfo;
import com.trash.common.core.page.TableSupport;

/**
 * 三查机制Controller
 * 
 * @author trash
 * @date 2023-04-24
 */
@RestController
@RequestMapping("/business/threestep")
public class SupervisionThreestepController extends BaseController
{
    @Autowired
    private ISupervisionThreestepService supervisionThreestepService;

    /**
     * 查询三查机制列表
     */
    @PreAuthorize("@ss.hasPermi('business:threestep:list')")
    @GetMapping("/list")
    public TableDataInfo list(SupervisionThreestep supervisionThreestep)
    {
        startPage();
        if(supervisionThreestep.getStatus() == null){
        	supervisionThreestep.setCreateBy(SecurityUtils.getUsername());
        
        }else{
        	
      
	        Map<String, String> map = new HashMap<String, String>();
	        map.put("type", "CSUserDepartmentType");
	        JSONArray depts = RemoteServerUtils.getDict(map);
	        JSONArray areas = RemoteServerUtils.getAreas();
	        
	        
	        
	        for(Object object :depts){
	        	JSONObject dept = (JSONObject) object;
	        	List<String> roles = SecurityUtils.getLoginUser().getUser().getRoleIds();
	        	
	        	for(String role:roles){
	            	if(dept.getString("code").equals(role)){
	
	        			if(dept.getString("name").equals("治理部")){
	        				supervisionThreestep.setCreateBy(null);
	        				break;
	        			}
	            		
	            		if(dept.getString("name").contains("渣土办")){
	            			
	            			String deptName = dept.getString("name").replace("渣土办", "");
	            			
	            			if(!deptName.isEmpty()){
	            				
	            				for(Object obj:areas){
	            					JSONObject area = (JSONObject)obj;
	            					
	            					if(area.getString("name").equals(deptName)){
	            						
	            						supervisionThreestep.setPlace(area.getString("code"));
	            						supervisionThreestep.setCreateBy(null);
	            					}
	            				}
	            			}
	            		
	            		}
	            	}
	        	}
	        	
	        }
        }
        
        List<SupervisionThreestep> list = supervisionThreestepService.selectSupervisionThreestepList(supervisionThreestep);
        return getDataTable(list);
    }
    
    
    String[] outside = {"长沙县", "望城区", "浏阳市", "宁乡市", "株洲市", "湘潭市", "汩罗市", "湘阴县"};
    
    /**
     * 查询三查机制列表
     */
    @PreAuthorize("@ss.hasPermi('business:threestep:list')")
    @GetMapping("/dayWorkList")
    public TableDataInfo dayWorkList(SupervisionThreestep supervisionThreestep)
    {
//        startPage();
        PageDomain pageDomain = TableSupport.buildPageRequest();
        Integer pageNum = pageDomain.getPageNum();
        Integer pageSize = pageDomain.getPageSize();
        
        if("430100".equals(supervisionThreestep.getPlace())){
        	supervisionThreestep.setPlace(null);
        }
        if("长沙市".equals(supervisionThreestep.getSubReason())){
        	supervisionThreestep.setSubReason(null);
        }
        
        List<Map<String,String>> list = supervisionThreestepService.selectDayWorkList(supervisionThreestep);
        
        int count = 0;
        int count1 = 0;
        String place = "长沙市";
        String place1 = "长沙市";
        String string = "今日";
        
        if(supervisionThreestep.getSubReason()!=null){
        	
        	place1 = supervisionThreestep.getSubReason();
        }
        
        if(supervisionThreestep.getHis().equals("1")){
        	string = "";
        }
        
        JSONArray areas = RemoteServerUtils.getAreas();
        
        for(Map<String, String> m:list){
        	for(Object object:areas){
        		JSONObject area = (JSONObject)object;
        		
        		if(supervisionThreestep.getPlace() != null){
        			if(supervisionThreestep.getPlace().equals(area.get("code").toString())){
        				place = area.get("name").toString();
        			}
        		}
        		
        		if( area.get("code").toString().equals( m.get("place"))){
        			m.put("place", area.get("name").toString());
        		}
        		if( area.get("code").toString().equals( m.get("eplace"))){
        			m.put("eplace", area.get("name").toString());
        		}
        	}
        	
        	for(String out:outside){
        		if(out.equals(m.get("eplace"))){
        			if(m.get("status").equals("开工")){
        				m.put("estatus", "开工");
        				m.put("eselfCheckTime", m.get("selfCheckTime"));
        			}
        			
        		}
        	}
        	
        	if(m.get("status").equals("开工")){
        		count += 1;
        	}
        	if(m.get("estatus").equals("开工")){
        		count1 += 1;
        	}
        }
        
        TableDataInfo info = getDataTable(list);
        
        if(list.size() > (pageNum)*pageSize){
        	list = list.subList((pageNum -1)*pageSize, (pageNum)*pageSize);
        }else{
        	list = list.subList((pageNum -1)*pageSize, list.size());
        }
        
        info.setRows(list);
        
        info.setMsg(string + place+"工地开工数量" + count + "  "  + place1+"消纳场开工数量" + count1);
        
        return info;
    }
    
    
    @PostMapping("/exportDayWorkHistoryList")
    public AjaxResult exportDayWorkHistoryList(@RequestBody List<dayWork> list)
    {
    	
        ExcelUtil<dayWork> util = new ExcelUtil<dayWork>(dayWork.class);
        return util.exportExcel(list, "历史开工报表");
        
    }
    
    @PostMapping("/exportDayWorkList")
    public AjaxResult exportDayWorkList(@RequestBody List<dayWork> list)
    {
        ExcelUtil<dayWork> util = new ExcelUtil<dayWork>(dayWork.class);
        return util.exportExcel(list, "日开工报表");
    }
    
    
    @PostMapping("/todayDataList")
    public List<SupervisionThreestep> todayDataList(@RequestBody SupervisionThreestep supervisionThreestep)
    {        
        return supervisionThreestepService.selectTodayDataList(supervisionThreestep);
    }
    
    

    /**
     * 查询三查机制列表
     */
    @PostMapping("/dayWorkList")
    public AjaxResult days(@RequestBody SupervisionThreestep supervisionThreestep)
    {        
    	List<Map> list= supervisionThreestepService.selectDayWorkListByType(supervisionThreestep);
    	AjaxResult result = AjaxResult.success(list);
    	result.put("result", AjaxResult.success(list).get("data"));
    	result.put("data", null);
        return result;
    }
    
    /**
     * 导出三查机制列表
     */
    @PreAuthorize("@ss.hasPermi('business:threestep:export')")
    @Log(title = "三查机制", businessType = BusinessType.EXPORT)
    @GetMapping("/export")
    public AjaxResult export(SupervisionThreestep supervisionThreestep)
    {
        List<SupervisionThreestep> list = supervisionThreestepService.selectSupervisionThreestepList(supervisionThreestep);
        
        

    	for(int i = 0;i<list.size();i++){
        	list.get(i).setId((long)i+1);
        }
        
        JSONArray array = RemoteServerUtils.getAreas();
        
        for(Object object :array){
        	JSONObject jsonObject = (JSONObject)object;
        	for(SupervisionThreestep sThreestep : list){
        		if(jsonObject.getString("code").equals(sThreestep.getPlace())){
        			sThreestep.setPlace(jsonObject.getString("name"));
        		}
        	}
        }
        List<String> withOut = new ArrayList<String>();
        String str ="报工抽查";
        if(supervisionThreestep.getStatus() == null){
        	withOut.add("checkEndTime");
        	str ="报工自查";
        }

        
        ExcelUtil<SupervisionThreestep> util = new ExcelUtil<SupervisionThreestep>(SupervisionThreestep.class);
        
        return util.exportExcel(list, str,withOut);
    }

    /**
     * 获取三查机制详细信息
     */
    @GetMapping(value = "/{id}")
    public AjaxResult getInfo(@PathVariable("id") Long id)
    {
        return AjaxResult.success(supervisionThreestepService.selectSupervisionThreestepById(id));
    }

    @GetMapping(value = "names")
    public List<String> names(SupervisionThreestep supervisionThreestep)
    {
        return supervisionThreestepService.getNames(supervisionThreestep);
    }
    /**
     * 新增三查机制
     */
    @PreAuthorize("@ss.hasPermi('business:threestep:add')")
    @Log(title = "三查机制", businessType = BusinessType.INSERT)
    @PostMapping
    public AjaxResult add(@RequestBody SupervisionThreestep supervisionThreestep)
    {
    	
    	int i = supervisionThreestepService.insertSupervisionThreestep(supervisionThreestep);
    	
    	if(i==-1){
    		return AjaxResult.error("无法重复报工");
    	}
    	
        return toAjax(i);
    }

    /**
     * 修改三查机制
     */
    @PreAuthorize("@ss.hasPermi('business:threestep:edit')")
    @Log(title = "三查机制", businessType = BusinessType.UPDATE)
    @PutMapping
    public AjaxResult edit(@RequestBody SupervisionThreestep supervisionThreestep)
    {
        return toAjax(supervisionThreestepService.updateSupervisionThreestep(supervisionThreestep));
    }
    
    @PreAuthorize("@ss.hasPermi('business:threestep:edit')")
    @Log(title = "三查机制", businessType = BusinessType.UPDATE)
    @PostMapping(value="/active")
    public AjaxResult active(@RequestBody SupervisionThreestep supervisionThreestep)
    {
    	
    	supervisionThreestep.setCheckTime(new Date());
        return toAjax(supervisionThreestepService.activeSupervisionThreestep(supervisionThreestep));
    }

    /**
     * 删除三查机制
     */
    @PreAuthorize("@ss.hasPermi('business:threestep:remove')")
    @Log(title = "三查机制", businessType = BusinessType.DELETE)
	@DeleteMapping("/{ids}")
    public AjaxResult remove(@PathVariable Long[] ids)
    {
        return toAjax(supervisionThreestepService.deleteSupervisionThreestepByIds(ids));
    }
    
    @RequestMapping(value = "/upload")
    public String upload(@RequestParam("file") MultipartFile file) throws IOException {
        return supervisionThreestepService.upload(file);
    }
    
    
    @RequestMapping(value = "/download")
    public void download(@RequestParam("path") String path,HttpServletResponse response, HttpServletRequest request) throws IOException {  
	    try
	    {
	        String realFileName = path.split("/")[path.split("/").length-1];
	        String filePath = trashConfig.getUploadPath() + path.replace("/profile/upload", "");
	
	        response.setCharacterEncoding("utf-8");
	        response.setContentType("multipart/form-data");
	        response.setHeader("Content-Disposition","attachment;fileName=" + FileUtils.setFileDownloadHeader(request, realFileName));
	        FileUtils.writeBytes(filePath, response.getOutputStream());

	    }
	    catch (Exception e)
	    {
	        e.printStackTrace();
	    }
    }
}