zf
2023-08-30 9ca0dc6e7833715b875cc9b6b91d5c497b2bae8b
src/main/java/com/gk/hotwork/Service/ServiceImpl/SafetySelfInspectionImpl.java
@@ -5,6 +5,7 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.gk.hotwork.Domain.*;
import com.gk.hotwork.Domain.Do.CompanyStatisticInspectionDO;
import com.gk.hotwork.Domain.Do.SafetySelfInspectionItemQualifiedCountDO;
import com.gk.hotwork.Domain.Exception.BusinessException;
import com.gk.hotwork.Domain.Utils.BeanUtils;
@@ -53,9 +54,11 @@
    private InspectionExpertService expertService;
    @Autowired
    private InspectionHiddenDangerService dangerService;
    @Autowired
    private AttachmentInfoService attachmentInfoService;
    /**
     * @Description: 分页
     * @Description: 自查分页
     */
    @Override
    public IPage<SafetySelfInspection> selectPage(Page<SafetySelfInspection> page, Map<String, Object> filter, UserInfo user) {
@@ -72,24 +75,22 @@
            filter.put("city",user.getCity());
            filter.put("area",user.getCounty());
        }
        filter.put("flag",0);
        filter.put("flag",(byte)2);
        IPage<SafetySelfInspection> res = safetySelfInspectionMapper.selectPages(page, filter);
        List<SafetySelfInspection> records = res.getRecords();
        if (CollectionUtils.isNotEmpty(records)){
            DecimalFormat df = new DecimalFormat("0.00%");
            records = records.stream().map((safetySelfInspection) -> {
                if (safetySelfInspection.getStatus() == 2) {
                    Long id = safetySelfInspection.getId();
                    SafetySelfInspectionItemQualifiedCountDO countDO = safetySelfInspectionItemMapper.countQualifiedDataById(id);
                    safetySelfInspection.setUnqualifiedItem(countDO.getItemSum() - countDO.getQualifiedItem());
                    if (countDO != null && countDO.getItemSum() != 0 && countDO.getItemSum() != null) {
                        BigDecimal rate = new BigDecimal(countDO.getQualifiedItem())
                                .divide(new BigDecimal(countDO.getItemSum()), 4, BigDecimal.ROUND_HALF_UP);
                        String qualifiedRate = df.format(rate);
                        safetySelfInspection.setQualifiedRate(qualifiedRate);
                        safetySelfInspection.setItemSum(countDO.getItemSum());
                    }
                Long id = safetySelfInspection.getId();
                SafetySelfInspectionItemQualifiedCountDO countDO = safetySelfInspectionItemMapper.countQualifiedDataById(id);
                safetySelfInspection.setUnqualifiedItem(countDO.getItemSum() - countDO.getQualifiedItem());
                if (countDO != null && countDO.getItemSum() != 0 && countDO.getItemSum() != null) {
                    BigDecimal rate = new BigDecimal(countDO.getQualifiedItem())
                            .divide(new BigDecimal(countDO.getItemSum()), 4, BigDecimal.ROUND_HALF_UP);
                    String qualifiedRate = df.format(rate);
                    safetySelfInspection.setQualifiedRate(qualifiedRate);
                    safetySelfInspection.setItemSum(countDO.getItemSum());
                }
                return safetySelfInspection;
            }).collect(Collectors.toList());
@@ -99,7 +100,7 @@
    }
    /**
     * @Description: 分页
     * @Description: 监管检查分页
     */
    @Override
    public IPage<SafetySelfInspection> selectSupervisePage(Page<SafetySelfInspection> page, Map<String, Object> filter, UserInfo user) {
@@ -116,59 +117,13 @@
            filter.put("city",user.getCity());
            filter.put("area",user.getCounty());
        }
        filter.put("flag",1);
        filter.put("flag",(byte)1);
        IPage<SafetySelfInspection> res = safetySelfInspectionMapper.selectPages(page, filter);
        List<SafetySelfInspection> records = res.getRecords();
        if (CollectionUtils.isNotEmpty(records)){
            DecimalFormat df = new DecimalFormat("0.00%");
            records = records.stream().map((safetySelfInspection) -> {
                if (safetySelfInspection.getStatus() == 2) {
                    Long id = safetySelfInspection.getId();
                    SafetySelfInspectionItemQualifiedCountDO countDO = safetySelfInspectionItemMapper.countQualifiedDataById(id);
                    safetySelfInspection.setUnqualifiedItem(countDO.getItemSum() - countDO.getQualifiedItem());
                    if (countDO != null && countDO.getItemSum() != 0 && countDO.getItemSum() != null) {
                        BigDecimal rate = new BigDecimal(countDO.getQualifiedItem())
                                .divide(new BigDecimal(countDO.getItemSum()), 4, BigDecimal.ROUND_HALF_UP);
                        String qualifiedRate = df.format(rate);
                        safetySelfInspection.setQualifiedRate(qualifiedRate);
                        safetySelfInspection.setItemSum(countDO.getItemSum());
                    }
                }
                return safetySelfInspection;
            }).collect(Collectors.toList());
            res.setRecords(records);
        }
        return res;
    }
   /* @Override
    public IPage<SafetySelfInspection> selectPage(Page<SafetySelfInspection> page, Map<String, Object> filter, UserInfo user) {
        Integer type = user.getType();
        //普通用户
        if (type.equals(3)) {
            Long companyid = user.getCompanyid();
            filter.put("companyid",companyid);
        }
        //监管用户
        if (type.equals(2)) {
            Long companyid = user.getCompanyid();
            //获取企业信息
            CompanyInfo companyInfo = companyService.getById(companyid);
            filter.put("province",companyInfo.getProvince());
            filter.put("city",companyInfo.getCity());
            filter.put("area",companyInfo.getArea());
        }
        IPage<SafetySelfInspection> res = safetySelfInspectionMapper.selectPages(page, filter);
        List<SafetySelfInspection> records = res.getRecords();
        if (CollectionUtils.isNotEmpty(records)){
            DecimalFormat df = new DecimalFormat("0.00%");
            records = records.stream().map((safetySelfInspection) -> {
                //总分
                Integer totalScore = 0;
                //扣分
                Integer delScore =0;
                Long id = safetySelfInspection.getId();
                SafetySelfInspectionItemQualifiedCountDO countDO = safetySelfInspectionItemMapper.countQualifiedDataById(id);
                safetySelfInspection.setUnqualifiedItem(countDO.getItemSum() - countDO.getQualifiedItem());
@@ -179,81 +134,13 @@
                    safetySelfInspection.setQualifiedRate(qualifiedRate);
                    safetySelfInspection.setItemSum(countDO.getItemSum());
                }
                //计算总分以及得分
                //获取要素
                List<SafetyInspectionElementA> inspectionElementAList = safetyInspectionElementAService.getBySafetySelfInspectionId(id);
                //获取检查项
                List<SafetySelfInspectionItem> safetySelfInspectionItemList = safetySelfInspectionItemMapper.getBySafetySelfInspectionId2(id);
                //循环要素
                for(SafetyInspectionElementA elementA : inspectionElementAList){
                    //获取该要素的树
                    List<ElementTree> elementTree = elementManagementService.getElementTreeByParentId(elementA.getElementA());
                    //二级要素
                    if (CollectionUtils.isNotEmpty(elementTree)) {
                        List<ElementTree> elementBList = elementTree.get(0).getChildren();
                        for(ElementTree stree : elementBList){
                            //三级要素为空
                            if(CollectionUtils.isEmpty(stree.getChildren())){
                                //总分累计
                                totalScore += stree.getPoint();
                                //无三级要素过滤出二级要素检查内容
                                List<SafetySelfInspectionItem> sItemList = safetySelfInspectionItemList
                                        .stream()
                                        .filter(item -> item.getElementC() == null && item.getElementB().equals(stree.getValue()))
                                        .collect(Collectors.toList());
                                //判断是否有否决项
                                List<SafetySelfInspectionItem> rejectList = sItemList
                                        .stream()
                                        .filter(item -> item.getSafetyInspectionItemResult().equals(0))
                                        .collect(Collectors.toList());
                                if(rejectList.size() > 0){
                                    delScore += stree.getPoint();
                                }else {
                                    //计算出不合格扣分
                                    delScore += unqualifiedItemDelScore(sItemList);
                                }
                            } else {
                                List<ElementTree> elementCList = stree.getChildren();
                                for(ElementTree ttree : elementCList){
                                    //计算总分
                                    totalScore += ttree.getPoint();
                                    //过滤该三级要素检查项目
                                    List<SafetySelfInspectionItem> tItemList = safetySelfInspectionItemList
                                            .stream()
                                            .filter(item -> item.getElementC() != null && item.getElementC().equals(ttree.getValue()))
                                            .collect(Collectors.toList());
                                    //判断是否有被否决
                                    List<SafetySelfInspectionItem> rejectList = tItemList
                                            .stream()
                                            .filter(item -> item.getSafetyInspectionItemResult().equals(0))
                                            .collect(Collectors.toList());
                                    if(rejectList.size() > 0){
                                        delScore += ttree.getPoint();
                                    }else {
                                        //计算出不合格扣分
                                        totalScore += unqualifiedItemDelScore(tItemList);
                                    }
                                }
                            }
                        }
                    }
                }
                //得分
                Integer score = totalScore - delScore;
                safetySelfInspection.setTotalScore(totalScore.toString());
                safetySelfInspection.setScore(score.toString());
                return safetySelfInspection;
            }).collect(Collectors.toList());
            res.setRecords(records);
        }
        return res;
    }*/
    }
    //累计过出不合格扣分
    private Integer unqualifiedItemDelScore(List<SafetySelfInspectionItem> itemList){
        int delScore = 0;
@@ -287,7 +174,7 @@
        Date date = new Date();
        String username = user.getRealname();
        param.setValidFlag(Boolean.TRUE);
        param.setFlag((byte) 0);
        param.setFlag((byte) 2);
        param.setUpdateBy(username);
        param.setCreateBy(username);
        param.setUpdateTime(date);
@@ -324,6 +211,7 @@
     * @param param
     * @param user
     */
    @Transactional
    @Override
    public void addSupervise(SafetySelfInspection param, UserInfo user) {
        requiredSuperviseVerification(param);
@@ -459,6 +347,7 @@
    /**
     * @Description: 删除
     */
    @Transactional
    @Override
    public void delOne(Long id, UserInfo user) {
        selectVerification(id);
@@ -523,25 +412,30 @@
        BeanUtils.copyProperties(safetySelfInspection,safetySelfInspectionRespDTO);
        //获取所有检查项
        List<SafetySelfInspectionItem> itemList= safetySelfInspectionItemMapper.getDetailBySafetySelfInspectionId(id,unqualified);
        //获取关联要素
        List<SafetyInspectionElementA> inspectionElementAList = safetyInspectionElementAService.getBySafetySelfInspectionId(id);
        //获取要素树
        List<ElementTree> elementTreeList = elementManagementService.getMenuType1Tree();
        //获取附件
        List<AttachmentInfo> byBusinessId = attachmentInfoService.findByBusinessId(id);
        safetySelfInspectionRespDTO.setAttachmentList(byBusinessId);
        List<SafetySelfInspectionElementRespDTO> arespDTOList = new ArrayList<>();
        if (CollectionUtils.isNotEmpty(inspectionElementAList)) {
            for (SafetyInspectionElementA elementA : inspectionElementAList) {
                //获取该要素的树
                List<ElementTree> elementTree = elementManagementService.getElementTreeByParentId(elementA.getElementA());
                if (CollectionUtils.isNotEmpty(elementTree)) {
                    //一级要素
                    ElementTree otree = elementTree.get(0);
        if (CollectionUtils.isNotEmpty(elementTreeList)) {
            for (ElementTree elementA : elementTreeList) {
                List<SafetySelfInspectionItem> selectElementList = itemList
                        .stream()
                        .filter(item -> item.getElementA() != null &&
                        item.getElementA().equals(elementA.getValue()))
                        .collect(Collectors.toList());
                if (CollectionUtils.isNotEmpty(selectElementList)) {
                    SafetySelfInspectionElementRespDTO elementARespDTO = new SafetySelfInspectionElementRespDTO();
                    elementARespDTO.setElementId(otree.getValue());
                    elementARespDTO.setElementName(otree.getLabel());
                    elementARespDTO.setType(otree.getType());
                    elementARespDTO.setElementId(elementA.getValue());
                    elementARespDTO.setElementName(elementA.getLabel());
                    elementARespDTO.setType(elementA.getType());
                    List<SafetySelfInspectionElementRespDTO> brespDTOList = new ArrayList<>();
                    //二级要素
                    List<ElementTree> elementBList = otree.getChildren();
                    List<ElementTree> elementBList = elementA.getChildren();
                    if(CollectionUtils.isNotEmpty(elementBList)){
                        for (ElementTree stree : elementBList) {
                            SafetySelfInspectionElementRespDTO elementBRespDTO = new SafetySelfInspectionElementRespDTO();
@@ -560,7 +454,9 @@
                                //无三级要素过滤出二级要素检查内容
                                List<SafetySelfInspectionItem> sItemList = itemList
                                        .stream()
                                        .filter(item -> item.getElementC() == null && item.getElementB().equals(stree.getValue()))
                                        .filter(item -> item.getElementC() == null
                                                && item.getElementB() != null
                                                && item.getElementB().equals(stree.getValue()))
                                        .collect(Collectors.toList());
                                //填充检查项
                                elementBRespDTO.setItemList(assemblyDeduction(sItemList));
@@ -671,6 +567,7 @@
        SafetySelfInspectionItem safetySelfInspectionItem = safetySelfInspectionItemMapper.getDetailById(id);
        List<SafetySelfInspectionItemDeduction> selfDeductionList = safetySelfInspectionItemDeductionMapper.getBySafetySelfInspectionItemId(safetySelfInspectionItem.getId());
        List<InspectionHiddenDanger> inspectionHiddenDangerList = dangerService.getBySafetySelfInspectionItemId(id);
        List<AttachmentInfo> byBusinessId = attachmentInfoService.findByBusinessId(id);
        if (CollectionUtils.isNotEmpty(selfDeductionList)){
            safetySelfInspectionItem.setSelfDeductionList(selfDeductionList);
@@ -691,10 +588,25 @@
                safetySelfInspectionItem.setSelfDeductionList(new ArrayList<>());
            }
        }
        for (InspectionHiddenDanger inspectionHiddenDanger : inspectionHiddenDangerList) {
            if(StringUtils.isNotBlank(inspectionHiddenDanger.getUrl())){
                List<Long> attachmentIds = new ArrayList<>();
                String[] split = inspectionHiddenDanger.getUrl().split(",");
                for (String s : split) {
                    attachmentIds.add(Long.valueOf(s));
                }
                List<AttachmentInfo> dangerAttachList = attachmentInfoService.findByIds(attachmentIds);
                inspectionHiddenDanger.setAttachmentList(dangerAttachList);
            }
        }
        safetySelfInspectionItem.setAttachmentList(byBusinessId);
        safetySelfInspectionItem.setDangerList(inspectionHiddenDangerList);
        return safetySelfInspectionItem;
    }
    @Transactional
    @Override
    public void modItemInfo(SafetySelfInspectionItem param, UserInfo user) {
@@ -706,11 +618,22 @@
        param.setUpdateTime(date);
        param.setUpdateBy(username);
        safetySelfInspectionItemMapper.updateById(param);
        //附件
        List<AttachmentInfo> attachmentInfoList = new ArrayList<>();
        if(CollectionUtils.isNotEmpty(param.getAttachmentList())){
            for (AttachmentInfo attachmentInfo : param.getAttachmentList()) {
                attachmentInfo.setBusinessId(param.getId());
                attachmentInfoList.add(attachmentInfo);
            }
        }
        if (param.getSafetyInspectionItemResult()==0 || param.getSafetyInspectionItemResult() == 2){
            //否决 合格--删除扣分记录
            safetySelfInspectionItemDeductionMapper.delBySafetySelfInspectionItemId(param.getId(),username,date);
            //删除隐患
            dangerService.delByInspectionItemId(param.getSafetyInspectionItemId(),user);
            dangerService.delByInspectionItemId(param.getId(),user);
            //删除附件
            attachmentInfoService.deleteByBusinessId(param.getId());
        }else{
            //扣分
            List<SafetySelfInspectionItemDeduction> list = safetySelfInspectionItemDeductionMapper.getBySafetySelfInspectionItemId(param.getId());
@@ -748,23 +671,53 @@
                    dangerService.delByIds(idList);
                }
                for (InspectionHiddenDanger inspectionHiddenDanger : param.getDangerList()) {
                    StringBuffer stringBuffer = new StringBuffer();
                    //附件
                    if(CollectionUtils.isNotEmpty(inspectionHiddenDanger.getAttachmentList())){
                        for (AttachmentInfo attachmentInfo : inspectionHiddenDanger.getAttachmentList()) {
                            stringBuffer.append(attachmentInfo.getId().toString()).append(",");
                        }
                        stringBuffer = stringBuffer.deleteCharAt(stringBuffer.length()-1);
                    }
                    if(inspectionHiddenDanger.getId() == null){
                        inspectionHiddenDanger.setCreateBy(user.getRealname());
                        inspectionHiddenDanger.setCreateTime(new Date());
                        inspectionHiddenDanger.setUpdateBy(user.getRealname());
                        inspectionHiddenDanger.setUpdateTime(new Date());
                        inspectionHiddenDanger.setStatus((byte)0);
                        inspectionHiddenDanger.setStatus((byte)-1);
                        inspectionHiddenDanger.setValidFlag(true);
                        inspectionHiddenDanger.setSelfInspectionId(param.getSafetySelfInspectionId());
                        inspectionHiddenDanger.setSelfInspectionItemId(param.getId());
                        inspectionHiddenDanger.setUrl(stringBuffer.toString());
                        dangerService.save(inspectionHiddenDanger);
                        //附件
                        if(StringUtils.isNotBlank(inspectionHiddenDanger.getUrl())){
                            for (AttachmentInfo attachmentInfo : inspectionHiddenDanger.getAttachmentList()) {
                                attachmentInfo.setBusinessId(inspectionHiddenDanger.getId());
                                attachmentInfoList.add(attachmentInfo);
                            }
                        }
                    }else {
                        inspectionHiddenDanger.setUpdateBy(user.getRealname());
                        inspectionHiddenDanger.setUpdateTime(new Date());
                        inspectionHiddenDanger.setUrl(stringBuffer.toString());
                        dangerService.updateById(inspectionHiddenDanger);
                        //附件
                        if(CollectionUtils.isNotEmpty(inspectionHiddenDanger.getAttachmentList())){
                            for (AttachmentInfo attachmentInfo : inspectionHiddenDanger.getAttachmentList()) {
                                attachmentInfo.setBusinessId(inspectionHiddenDanger.getId());
                                attachmentInfoList.add(attachmentInfo);
                            }
                        }
                    }
                }
            }
        }
        //附件信息更新
        if(CollectionUtils.isNotEmpty(attachmentInfoList)){
            attachmentInfoService.updateBusinessIdBatch(attachmentInfoList);
        }
    }
@@ -778,6 +731,7 @@
        safetySelfInspection.setStatus(2);
        safetySelfInspection.setUpdateTime(date);
        safetySelfInspection.setUpdateBy(username);
        safetySelfInspection.setInspectionEndTime(new Date());
        safetySelfInspectionMapper.updateById(safetySelfInspection);
    }
@@ -788,6 +742,55 @@
            item.setUpdateTime(new Date());
        });
        safetySelfInspectionItemMapper.updateBatch(itemList);
    }
    @Override
    public void addCheckAttachment(List<AttachmentInfo> attachmentList, UserInfo user) {
        requiredAttachmentVerification(attachmentList);
        for (AttachmentInfo attachmentInfo : attachmentList) {
            attachmentInfo.setUpdateTime(new Date());
            attachmentInfo.setUpdateUid(user.getId());
            attachmentInfo.setUpdateUname(user.getRealname());
        }
        attachmentInfoService.updateBusinessIdBatch(attachmentList);
    }
    @Override
    public Date selectLastTimeByCompanyId(Long companyId,Date startTime,Date endTime) {
        SafetySelfInspection inspection = safetySelfInspectionMapper.selectOne(new LambdaQueryWrapper<SafetySelfInspection>()
                 .eq(SafetySelfInspection::getValidFlag,1)
                .eq(SafetySelfInspection::getFlag, 2)
                .eq(SafetySelfInspection::getCheckedCompanyId, companyId)
                .ge(startTime != null,SafetySelfInspection::getInspectionTime,startTime)
                .le(endTime != null,SafetySelfInspection::getInspectionTime,endTime)
                .orderByDesc(SafetySelfInspection::getInspectionTime)
                .last("limit 1"));
        if(inspection != null){
            return inspection.getInspectionTime();
        }
       return null;
    }
    @Override
    public CompanyStatisticInspectionDO companyStatisticInspection(Map<String, Object> params) {
        return safetySelfInspectionMapper.companyStatisticInspection(params);
    }
    private void requiredAttachmentVerification(List<AttachmentInfo> attachmentList) {
        if(CollectionUtils.isEmpty(attachmentList)){
            throw new BusinessException("附件信息为空");
        }
        for (AttachmentInfo attachmentInfo : attachmentList) {
            if(attachmentInfo.getId() == null){
                throw new BusinessException("附件主键信息不能为空");
            }
            if(attachmentInfo.getBusinessId() == null){
                throw new BusinessException("附件信息关联业务id不能为空");
            }
        }
    }
    /**
@@ -845,13 +848,7 @@
        if (param.getCheckedCompanyId() == null){
            throw new BusinessException("请选择被检查公司");
        }
        if(CollectionUtils.isEmpty(param.getElementAList())){
            throw new BusinessException("请选择A检查要素");
        }
        for(SafetyInspectionElementA elementA : param.getElementAList()){
            if(elementA.getElementA() == null){
                throw new BusinessException("请选择A检查要素");
            }
        }
    }
}