郑永安
2023-06-19 f65443d8abeaedc9d102324565e8368e7c9d90c8
src/main/java/com/gk/firework/Controller/PatrolController.java
对比新文件
@@ -0,0 +1,593 @@
package com.gk.firework.Controller;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.gk.firework.Controller.Base.BaseController;
import com.gk.firework.Domain.*;
import com.gk.firework.Domain.Utils.*;
import com.gk.firework.Domain.Vo.EnterpriseVo;
import com.gk.firework.Domain.Vo.PatrolOrderVo;
import com.gk.firework.Service.*;
import com.sun.org.apache.xpath.internal.operations.Bool;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.util.MultiValueMap;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.support.StandardMultipartHttpServletRequest;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
@Api(tags = "安全巡检接口")
@RestController
public class PatrolController extends BaseController{
    @Value("${patrolPath}")
    private String patrolPath; //配置文件配置的物理保存地址
    @Value("${patrolUrl}")
    private String patrolUrl; //配置文件配置的url
    @Autowired
    PatrolOrderService patrolOrderService;
    @Autowired
    PatrolDetailService patrolDetailService;
    @Autowired
    SelfCheckService selfCheckService;
    @Autowired
    EnterpriseService enterpriseService;
    @Autowired
    UserService userService;
    @Autowired
    ExcelExportService excelExportService;
    @GetMapping("/getEnterpriseVo")
    @ApiOperation(value = "根据企业编号获取巡检企业信息",response = Msg.class)
    @ApiImplicitParams({
            @ApiImplicitParam(name = "enterprisenumber",value = "单位编号"),
    })
    public Msg getEnterpriseVo(EnterpriseVo enterpriseVo){
        Msg msg = new Msg();
        msg.setCode("200");
        msg.setMessage("success");
        EnterpriseVo enterprise = enterpriseService.selctSimpleByNumber(enterpriseVo.getEnterprisenumber());
        List<PatrolOrderVo> patrolOrderVos = patrolOrderService.selectListByEnterprise(enterprise.getEnterprisename(),getUser().getUsername());
        enterprise.setPatrolOrderVos(patrolOrderVos);
        if (enterprise != null) {
            msg.setResult(enterprise);
            return msg;
        }else {
            msg.setCode("999");
            msg.setMessage("未找到该企业");
            return msg;
        }
    }
    @GetMapping("/getSelfCheck")
    @ApiOperation(value = "根据企业类型获取检查内容",response = Msg.class)
    public Msg getSelfCheck(SelfCheckInfo selfCheck){
        Msg msg = new Msg();
        msg.setCode("200");
        msg.setMessage("success");
        List<SelfCheckInfo> selfChecks = selfCheckService.selctByType(selfCheck.getType());
        if (selfChecks.size() > 0) {
            msg.setResult(selfChecks);
            return msg;
        }else {
            msg.setCode("999");
            msg.setMessage("未找到该检查内容");
            return msg;
        }
    }
    @ApiOperation(value = "上传图片",notes = "上传图片")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType="query",name = "files",value = "文件"),
    })
    @PostMapping("/uploadPic")
    @ResponseBody
    public Msg uploadPic(StandardMultipartHttpServletRequest req){
        Msg msg = new Msg();
        msg.setCode("200");
        msg.setMessage("success");
        MultiValueMap<String, MultipartFile> multipartFiles = req.getMultiFileMap();
        MultipartFile  picFile = multipartFiles.get("files").get(0);
        if (null == picFile){
            msg.setCode("404");
            msg.setMessage("上传文件为空");
        }else {
            try {
                String picmame = UploadUtil.uploadFile(picFile,patrolPath);
                msg.setResult(patrolUrl+picmame);
            }catch (Exception e){
                e.printStackTrace();
                msg.setCode("500");
                msg.setMessage("上传失败");
            }
        }
        return msg;
    }
    @ApiOperation(value = "提交检查内容",notes = "提交检查内容")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "enterpriseId",value = "企业id"),
            @ApiImplicitParam(name = "userId",value = "用户id"),
            @ApiImplicitParam(name = "createdby",value = "用户名"),
            @ApiImplicitParam(name = "checkcontent",value = "检查内容"),
            @ApiImplicitParam(name = "content",value = "检查内容"),
            @ApiImplicitParam(name = "standard",value = "参考判断"),
            @ApiImplicitParam(name = "choose",value = "选项"),
            @ApiImplicitParam(name = "reason",value = "理由"),
            @ApiImplicitParam(name = "baforepath",value = "整改前图片"),
            @ApiImplicitParam(name = "ismend",value = "是否整改"),
    })
    @PostMapping("/submitPatrol")
    @ResponseBody
    public Msg submitPatrol(@RequestBody JSONObject jsonObject){
        Msg msg = new Msg();
        msg.setCode("200");
        msg.setMessage("success");
        Long enterpriseId = jsonObject.getLong("enterpriseId");
        Long userId = jsonObject.getLong("userId");
        String createdby = jsonObject.getString("createdby");
        JSONArray jsonArray = jsonObject.getJSONArray("checkcontent");
        PatrolOrderInfo patrolOrderInfo = new PatrolOrderInfo();
        patrolOrderInfo.setUserid(userId);
        patrolOrderInfo.setCompanyid(enterpriseId);
        patrolOrderInfo.setCreatedby(createdby);
        patrolOrderInfo.setCreateddate(new Date());
        patrolOrderInfo.setModifiedby(createdby);
        patrolOrderInfo.setModifieddate(new Date());
        patrolOrderService.save(patrolOrderInfo);
        List<PatrolDetailInfo> patrolDetailInfoList = new ArrayList<>();
        Byte ismend = 1;
        for (int i = 0; i < jsonArray.size(); i++){
            JSONObject patrolDetail = jsonArray.getJSONObject(i);
            PatrolDetailInfo patrolDetailInfo = new PatrolDetailInfo();
            patrolDetailInfo.setOrderid(patrolOrderInfo.getId());
            patrolDetailInfo.setContent(patrolDetail.getString("content"));
            patrolDetailInfo.setStandard(patrolDetail.getString("standard"));
            patrolDetailInfo.setChoose(patrolDetail.getString("choose"));
            patrolDetailInfo.setReason(patrolDetail.getString("reason"));
            patrolDetailInfo.setBeforepath(patrolDetail.getString("baforepath"));
            patrolDetailInfo.setIsmend(patrolDetail.getByte("ismend"));
            patrolDetailInfo.setCreatedby(createdby);
            patrolDetailInfo.setCreateddate(new Date());
            patrolDetailInfo.setModifiedby(createdby);
            patrolDetailInfo.setModifieddate(new Date());
            if (patrolDetailInfo.getIsmend() == 0){
                ismend = 0;
            }
            patrolDetailInfoList.add(patrolDetailInfo);
        }
        patrolDetailService.saveBatch(patrolDetailInfoList);
        patrolOrderInfo.setIsmend(ismend);
        patrolOrderService.updateById(patrolOrderInfo);
        return msg;
    }
    @GetMapping("/selfCheck")
    @ApiOperation(value = "获取自定义检查内容",response = Msg.class)
    @ApiImplicitParams({
            @ApiImplicitParam(name = "pageIndex",value = "当前页码"),
            @ApiImplicitParam(name = "pageSize",value = "每页行数"),
            @ApiImplicitParam(name = "sort",value = "排序规则"),
            @ApiImplicitParam(name = "order",value = "排序字段"),
            @ApiImplicitParam(name = "type",value = "检查类型"),
            @ApiImplicitParam(name = "content",value = "检查内容"),
    })
    public Msg getSelfCheckList(@RequestParam(defaultValue = "0") Integer pageIndex, @RequestParam(defaultValue = "10") Integer pageSize, String sort, String order,
                            String type, String content){
        Msg msg = new Msg();
        msg.setCode("200");
        msg.setMessage("success");
        PageInfo pageInfo = new PageInfo(pageIndex, pageSize,sort,order);
        HashMap<String, Object> condition = new HashMap<String, Object>();
        if (StringUtils.isNotBlank(type)) {
            condition.put("type", type.trim());
        }
        if (StringUtils.isNotBlank(content)) {
            condition.put("content", content.trim());
        }
        pageInfo.setCondition(condition);
        selfCheckService.selectDataGrid(pageInfo);
        msg.setResult(pageInfo);
        return msg;
    }
    @PostMapping("/selfCheck")
    @ApiOperation(value = "添加自定义检查内容",response = Msg.class)
    public Msg addSelfCheckList(@RequestBody SelfCheckInfo selfCheckInfo){
        Msg msg = new Msg();
        msg.setCode("200");
        msg.setMessage("success");
        if (StringUtils.isBlank(selfCheckInfo.getType())){
            msg.setCode("999");
            msg.setMessage("检查类型不能为空");
            return msg;
        }else if (StringUtils.isBlank(selfCheckInfo.getContent())){
            msg.setCode("999");
            msg.setMessage("检查内容不能为空");
            return msg;
        }else if (StringUtils.isBlank(selfCheckInfo.getStandard())){
            msg.setCode("999");
            msg.setMessage("参考判断不能为空");
            return msg;
        }
        selfCheckInfo.setCreatedby(getUser().getUsername());
        selfCheckInfo.setModifiedby(getUser().getUsername());
        selfCheckInfo.setCreateddate(new Date());
        selfCheckInfo.setModifieddate(new Date());
        selfCheckInfo.setIsdel((byte)0);
        selfCheckService.save(selfCheckInfo);
        return msg;
    }
    @PostMapping("/putselfCheck")
    @ApiOperation(value = "修改自定义检查内容",response = Msg.class)
    public Msg editSelfCheckList(@RequestBody SelfCheckInfo selfCheckInfo){
        Msg msg = new Msg();
        msg.setCode("200");
        msg.setMessage("success");
        if (StringUtils.isBlank(selfCheckInfo.getType())){
            msg.setCode("999");
            msg.setMessage("检查类型不能为空");
            return msg;
        }else if (StringUtils.isBlank(selfCheckInfo.getContent())){
            msg.setCode("999");
            msg.setMessage("检查内容不能为空");
            return msg;
        }else if (StringUtils.isBlank(selfCheckInfo.getStandard())){
            msg.setCode("999");
            msg.setMessage("参考判断不能为空");
            return msg;
        }
        selfCheckInfo.setModifiedby(getUser().getUsername());
        selfCheckInfo.setModifieddate(new Date());
        selfCheckService.updateById(selfCheckInfo);
        return msg;
    }
    @PostMapping("/delselfCheck")
    @ApiOperation(value = "删除自定义检查内容",response = Msg.class)
    public Msg delSelfCheckList(@RequestBody JSONObject jsonObject){
        Msg msg = new Msg();
        msg.setCode("200");
        msg.setMessage("success");
        Long id = jsonObject.getLong("id");
        SelfCheckInfo selfCheckInfo = selfCheckService.getById(id);
        if (selfCheckInfo != null){
            selfCheckInfo.setIsdel((byte)1);
            selfCheckInfo.setModifiedby(getUser().getUsername());
            selfCheckInfo.setModifieddate(new Date());
            selfCheckService.updateById(selfCheckInfo);
            return msg;
        }else {
            msg.setCode("999");
            msg.setMessage("未找到检查内容");
            return msg;
        }
    }
    @PostMapping("/selfChecks")
    @ApiOperation(value = "删除自定义检查内容",response = Msg.class)
    public Msg bashDelSelfCheckList(@RequestBody JSONObject jsonObject){
        Msg msg = new Msg();
        msg.setCode("200");
        msg.setMessage("success");
        JSONArray ids = jsonObject.getJSONArray("ids");
        List<Long> idList = ids.toJavaList(Long.class);
        List<SelfCheckInfo> selfCheckInfoList = selfCheckService.selectByIds(idList);
        if (selfCheckInfoList != null && selfCheckInfoList.size() > 0){
            for (SelfCheckInfo selfCheckInfo : selfCheckInfoList) {
                selfCheckInfo.setIsdel((byte)1);
                selfCheckInfo.setModifiedby(getUser().getUsername());
                selfCheckInfo.setModifieddate(new Date());
                selfCheckService.updateById(selfCheckInfo);
            }
            return msg;
        }else {
            msg.setCode("999");
            msg.setMessage("未找到检查内容");
            return msg;
        }
    }
    @PostMapping("/importSelfCheck")
    @ApiOperation(value = "导入自定义检查内容",response = Msg.class)
    @ApiImplicitParams({
            @ApiImplicitParam(name = "file",value = "文件",required = true),
    })
    public Msg addSelfCheckList(MultipartFile file){
        Msg msg = new Msg();
        msg.setCode("200");
        msg.setMessage("success");
        String filesave ="";
        try {
            SimpleDateFormat sdf = new SimpleDateFormat( "yyyyMMddHHmmssSSS" );
            if (file == null)
            {
                msg.setCode("404");
                msg.setMessage("未找到上传文件");
                return msg;
            }
            long size = file.getSize();
            if(0 == size)
            {
                msg.setCode("404");
                msg.setMessage("上传文件大小为空");
                return msg;
            }
            if(!FileOptUtils.isDirExists(patrolPath)){
                msg.setCode("500");
                msg.setMessage("发生错误或不为目录");
                return msg;
            }
            filesave = patrolPath + getUser().getUsername() + "_" + sdf.format(new Date()) +".xlsx";
            file.transferTo(new File(filesave));
            InputStream in = new FileInputStream(filesave);
            String name = file.getOriginalFilename();
            Boolean isExcel2007 = name.substring(name.lastIndexOf(".") + 1).endsWith("xlsx")? true:false;
            BooleanReason blret = excelExportService.imporSelfCheckExcel(in,getUser().getUsername(),isExcel2007);
            if(blret.getValue().equals(false))
            {
                msg.setCode("500");
                msg.setMessage(blret.getResultmsg());
                return msg;
            }
        } catch (Exception e) {
            e.printStackTrace();
            msg.setCode("500");
            msg.setMessage("导入发生错误");
            return msg;
        }
        return msg;
    }
    @GetMapping("/patrolOrder")
    @ApiOperation(value = "获取安全巡检记录",response = Msg.class)
    @ApiImplicitParams({
            @ApiImplicitParam(name = "pageIndex",value = "当前页码"),
            @ApiImplicitParam(name = "pageSize",value = "每页行数"),
            @ApiImplicitParam(name = "sort",value = "排序规则"),
            @ApiImplicitParam(name = "order",value = "排序字段"),
            @ApiImplicitParam(name = "starttime",value = "开始时间"),
            @ApiImplicitParam(name = "endtime",value = "结束时间"),
            @ApiImplicitParam(name = "enterprisetype",value = "企业类型"),
            @ApiImplicitParam(name = "enterprisename",value = "企业名称"),
            @ApiImplicitParam(name = "checkname",value = "检查人"),
            @ApiImplicitParam(name = "ismend",value = "是否整改"),
            @ApiImplicitParam(name = "province",value = "省份"),
            @ApiImplicitParam(name = "city",value = "城市"),
            @ApiImplicitParam(name = "area",value = "区县"),
            @ApiImplicitParam(name = "town",value = "乡镇"),
            @ApiImplicitParam(name = "community",value = "社区"),
    })
    public Msg getPatrolOrderList(@RequestParam(defaultValue = "0") Integer pageIndex, @RequestParam(defaultValue = "10") Integer pageSize, String sort, String order,
                                String starttime, String endtime, String enterprisename, String checkname, String enterprisetype,
                                  String province, String city, String area, String town, String community, Byte ismend){
        Msg msg = new Msg();
        msg.setCode("200");
        msg.setMessage("success");
        PageInfo pageInfo = new PageInfo(pageIndex, pageSize,sort,order);
        HashMap<String, Object> condition = new HashMap<String, Object>();
        if (StringUtils.isNotBlank(starttime)) {
            condition.put("starttime", starttime.trim());
        }
        if (StringUtils.isNotBlank(endtime)) {
            condition.put("endtime", endtime.trim());
        }
        if (StringUtils.isNotBlank(enterprisename)) {
            condition.put("enterprisename", enterprisename.trim());
        }
        if (StringUtils.isNotBlank(checkname)) {
            condition.put("checkname", checkname.trim());
        }
        if (StringUtils.isNotBlank(enterprisetype)) {
            condition.put("enterprisetype", enterprisetype.trim());
        }
        if (ismend != null){
            condition.put("ismend",ismend);
        }
        UserInfo userInfo = userService.getById(getUser().getId());
        if (userInfo.getCompanyid() != null){
            Enterprise enterprise = enterpriseService.getById(userInfo.getCompanyid());
            condition.put("enterprisename", enterprise.getEnterprisename());
        }else if (userInfo.getType() == 3){
            condition.put("province",userInfo.getProvince());
            condition.put("city",userInfo.getCity());
            condition.put("area",userInfo.getArea());
            condition.put("town",userInfo.getTown());
            condition.put("community",userInfo.getCommunity());
        }
        if (StringUtils.isNotBlank(province) && condition.get("province") == null) {
            condition.put("province", province.trim());
            if (StringUtils.isNotBlank(city)) {
                condition.put("city", city.trim());
            }
            if (StringUtils.isNotBlank(area)) {
                condition.put("area", area.trim());
            }
            if (StringUtils.isNotBlank(town)) {
                condition.put("town", town.trim());
            }
            if (StringUtils.isNotBlank(community)) {
                condition.put("community", community.trim());
            }
        }
        pageInfo.setCondition(condition);
        patrolOrderService.selectDataGrid(pageInfo);
        msg.setResult(pageInfo);
        return msg;
    }
    @GetMapping("/patrolDetail")
    @ApiOperation(value = "获取安全巡检明细",response = Msg.class)
    @ApiImplicitParams({
            @ApiImplicitParam(name = "pageIndex",value = "当前页码"),
            @ApiImplicitParam(name = "pageSize",value = "每页行数"),
            @ApiImplicitParam(name = "sort",value = "排序规则"),
            @ApiImplicitParam(name = "order",value = "排序字段"),
            @ApiImplicitParam(name = "orderid",value = "订单id"),
            @ApiImplicitParam(name = "ismend",value = "是否整改"),
    })
    public Msg getpatrolDetailList(@RequestParam(defaultValue = "0") Integer pageIndex, @RequestParam(defaultValue = "10") Integer pageSize, String sort, String order,
                                  Long orderid, Byte ismend){
        Msg msg = new Msg();
        msg.setCode("200");
        msg.setMessage("success");
        PageInfo pageInfo = new PageInfo(pageIndex, pageSize,sort,order);
        HashMap<String, Object> condition = new HashMap<String, Object>();
        if (orderid != null) {
            condition.put("orderid", orderid);
        }
        if (ismend != null) {
            condition.put("ismend", ismend);
        }
        pageInfo.setCondition(condition);
        patrolDetailService.selectDataGrid(pageInfo);
        msg.setResult(pageInfo);
        return msg;
    }
    @PostMapping("/mendPatrol")
    @ApiOperation(value = "上报整改",response = Msg.class)
    @ApiImplicitParams({
            @ApiImplicitParam(name = "id",value = "单据id"),
            @ApiImplicitParam(name = "file",value = "整改后图片文件"),
            @ApiImplicitParam(name = "ismend",value = "是否整改"),
    })
    public Msg mendPatrol(Long id, MultipartFile file, Byte ismend) throws Exception {
        Msg msg = new Msg();
        msg.setCode("200");
        msg.setMessage("success");
        if (id == null){
            msg.setCode("999");
            msg.setMessage("单据id不能为空");
            return msg;
        }
        PatrolDetailInfo patrolDetailInfo = patrolDetailService.getById(id);
        if (patrolDetailInfo == null){
            msg.setCode("999");
            msg.setMessage("未找到单据");
            return msg;
        }
        if (file != null){
            String origincontract = UploadUtil.uploadFile(file,patrolPath);
            patrolDetailInfo.setAfterpath(patrolUrl+origincontract);
        }
        if (ismend != null){
            patrolDetailInfo.setIsmend(ismend);
        }
        patrolDetailService.updateById(patrolDetailInfo);
        //查看所有detail 全为已整改 则修改order为已整改
        int isNotMend = patrolDetailService.selectIsNotMend(patrolDetailInfo.getOrderid());
        if (isNotMend == 0){
            PatrolOrderInfo patrolOrderInfo = patrolOrderService.getById(patrolDetailInfo.getOrderid());
            if (patrolOrderInfo != null){
                patrolOrderInfo.setIsmend((byte)1);
                patrolOrderService.updateById(patrolOrderInfo);
            }
        }
        return msg;
    }
    @PostMapping("/appMendPatrol")
    @ApiOperation(value = "APP上报整改",response = Msg.class)
    @ApiImplicitParams({
            @ApiImplicitParam(name = "id",value = "单据id"),
            @ApiImplicitParam(name = "afterpath",value = "整改后图片文件"),
            @ApiImplicitParam(name = "ismend",value = "是否整改"),
    })
    public Msg mendPatrol(Long id, String afterpath, Byte ismend) throws Exception {
        Msg msg = new Msg();
        msg.setCode("200");
        msg.setMessage("success");
        if (id == null){
            msg.setCode("999");
            msg.setMessage("单据id不能为空");
            return msg;
        }
        PatrolDetailInfo patrolDetailInfo = patrolDetailService.getById(id);
        if (patrolDetailInfo == null){
            msg.setCode("999");
            msg.setMessage("未找到单据");
            return msg;
        }
        patrolDetailInfo.setAfterpath(afterpath);
        if (ismend != null){
            patrolDetailInfo.setIsmend(ismend);
        }
        patrolDetailService.updateById(patrolDetailInfo);
        //查看所有detail 全为已整改 则修改order为已整改
        int isNotMend = patrolDetailService.selectIsNotMend(patrolDetailInfo.getOrderid());
        if (isNotMend == 0){
            PatrolOrderInfo patrolOrderInfo = patrolOrderService.getById(patrolDetailInfo.getOrderid());
            if (patrolOrderInfo != null){
                patrolOrderInfo.setIsmend((byte)1);
                patrolOrderService.updateById(patrolOrderInfo);
            }
        }
        return msg;
    }
}