f9feae49eee21286708bcef1cea91be34d9e9241..cf4a5deced71464d424ce5931774f6df0c4c6bb3
2025-11-26 “djh”
修改新增
cf4a5d 对比 | 目录
2025-11-26 heheng
情况汇总
5011eb 对比 | 目录
已添加6个文件
已修改26个文件
734 ■■■■■ 文件已修改
multi-admin/src/main/java/com/gkhy/exam/admin/controller/web/StandingBookController.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
multi-admin/src/main/java/com/gkhy/exam/admin/controller/web/StatisticsController.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
multi-system/src/main/java/com/gkhy/exam/system/domain/AnnualReport.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
multi-system/src/main/java/com/gkhy/exam/system/domain/AnnualVerificationDevice.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
multi-system/src/main/java/com/gkhy/exam/system/domain/CompanyCertificate.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
multi-system/src/main/java/com/gkhy/exam/system/domain/CompanySummary.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
multi-system/src/main/java/com/gkhy/exam/system/domain/ContractLedger.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
multi-system/src/main/java/com/gkhy/exam/system/domain/InternalAuditCheckCatalogue.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
multi-system/src/main/java/com/gkhy/exam/system/domain/QualityTarget.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
multi-system/src/main/java/com/gkhy/exam/system/domain/StandardizedTemplate.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
multi-system/src/main/java/com/gkhy/exam/system/domain/req/EmployeeRecordReq.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
multi-system/src/main/java/com/gkhy/exam/system/domain/vo/statistic/CompanyCertificateVO.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
multi-system/src/main/java/com/gkhy/exam/system/domain/vo/statistic/CompanyResources.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
multi-system/src/main/java/com/gkhy/exam/system/domain/vo/statistic/CompanyStatisticsVo.java 102 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
multi-system/src/main/java/com/gkhy/exam/system/mapper/CompanySummaryMapper.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
multi-system/src/main/java/com/gkhy/exam/system/mapper/ContinuousImproveMapper.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
multi-system/src/main/java/com/gkhy/exam/system/mapper/EmployeeRecordMapper.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
multi-system/src/main/java/com/gkhy/exam/system/mapper/InternalAuditCheckMapper.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
multi-system/src/main/java/com/gkhy/exam/system/service/StatisticsService.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
multi-system/src/main/java/com/gkhy/exam/system/service/impl/AnnualReportServiceImpl.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
multi-system/src/main/java/com/gkhy/exam/system/service/impl/EmployeeRecordServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
multi-system/src/main/java/com/gkhy/exam/system/service/impl/QualityEconomyServiceImpl.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
multi-system/src/main/java/com/gkhy/exam/system/service/impl/QualityInformationExteriorServiceImpl.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
multi-system/src/main/java/com/gkhy/exam/system/service/impl/StatisticsServiceImpl.java 216 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
multi-system/src/main/resources/mapper/system/AnnualReportMapper.xml 78 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
multi-system/src/main/resources/mapper/system/CompanyCertificateMapper.xml 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
multi-system/src/main/resources/mapper/system/CompanySummaryMapper.xml 105 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
multi-system/src/main/resources/mapper/system/ContinuousImproveMapper.xml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
multi-system/src/main/resources/mapper/system/ContractLedgerMapper.xml 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
multi-system/src/main/resources/mapper/system/EmployeeRecordMapper.xml 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
multi-system/src/main/resources/mapper/system/InternalAuditCheckMapper.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
multi-system/src/main/resources/mapper/system/StandardizedTemplateMapper.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
multi-admin/src/main/java/com/gkhy/exam/admin/controller/web/StandingBookController.java
@@ -3,7 +3,6 @@
import com.gkhy.exam.common.annotation.RepeatSubmit;
import com.gkhy.exam.common.api.CommonResult;
import com.gkhy.exam.system.domain.Correction;
import com.gkhy.exam.system.domain.StandingBook;
import com.gkhy.exam.system.service.StandingBookService;
import io.swagger.annotations.Api;
multi-admin/src/main/java/com/gkhy/exam/admin/controller/web/StatisticsController.java
对比新文件
@@ -0,0 +1,33 @@
package com.gkhy.exam.admin.controller.web;
import com.gkhy.exam.common.api.CommonResult;
import com.gkhy.exam.system.service.StatisticsService;
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.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/system/statistics")
@Api(tags = "统计管理")
public class StatisticsController {
    @Autowired
    private StatisticsService statisticsService;
    @ApiOperation(value = "企业的基本情况")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "query", name = "companyId", dataType = "int", required = true, value = "公司id"),
            @ApiImplicitParam(paramType = "query", name = "year", dataType = "String", required = true, value = "年")
    })
    @GetMapping("/getCompanyStatistics")
    public CommonResult getCompanyStatistics(@RequestParam Integer companyId , @RequestParam String year){
        return CommonResult.success(statisticsService.getCompanyStatistics(companyId, year));
    }
}
multi-system/src/main/java/com/gkhy/exam/system/domain/AnnualReport.java
@@ -28,6 +28,10 @@
    @TableField("company_id")
    private Integer companyId;
    @ApiModelProperty(value = "年度")
    @TableField("year")
    private String year;
    @ApiModelProperty(value = "企业名称")
    @TableField(exist = false)
    private String companyName;
multi-system/src/main/java/com/gkhy/exam/system/domain/AnnualVerificationDevice.java
@@ -11,6 +11,8 @@
import lombok.Getter;
import lombok.Setter;
import javax.validation.constraints.NotNull;
/**
 * <p>
 * 年度检定计划设备表
@@ -70,6 +72,11 @@
    @TableField("status")
    private String status;
    @ApiModelProperty("类型1软件2硬件")
    @NotNull(message = "类型不能为空")
    @TableField("plan_type")
    private Integer planType;
    @ApiModelProperty("删除标志(0为删除,1删除,默认0)")
    @TableField("del_flag")
    private Integer delFlag;
multi-system/src/main/java/com/gkhy/exam/system/domain/CompanyCertificate.java
@@ -4,15 +4,14 @@
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.Date;
@Getter
@Setter
@@ -44,6 +43,11 @@
    @TableField("effective_time")
    private LocalDateTime effectiveTime;
    @ApiModelProperty(value = "企业证书获取时间")
    @TableField("get_time")
    @NotNull(message = "获取时间不能为空")
    private LocalDateTime getTime;
    @ApiModelProperty(value = "证书名称")
    @TableField("file_name")
    private String fileName;
multi-system/src/main/java/com/gkhy/exam/system/domain/CompanySummary.java
@@ -12,7 +12,6 @@
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.Date;
@Getter
@Setter
@@ -37,6 +36,35 @@
    @TableField("company_summary")
    private String companySummary;
    @ApiModelProperty(value = "企业类型1民营2私营3企事业单位")
    @TableField("company_type")
    private Integer companyType;
    @ApiModelProperty(value = "行业")
    @TableField("industry")
    private String industry;
    @ApiModelProperty(value = "法人编号")
    @TableField("legal_person_code")
    private String legalPersonCode;
    @ApiModelProperty(value = "法人代表")
    @TableField("legal_person")
    private String legalPerson;
    @ApiModelProperty(value = "注册资本")
    @TableField("registered_capital")
    private String registeredCapital;
    @ApiModelProperty(value = "总办公地址")
    @TableField("office_address")
    private String officeAddress;
    @ApiModelProperty(value = "其他分场所地址")
    @TableField("other_address")
    private String otherAddress;
    @ApiModelProperty(value = "营业执照")
    @TableField("file_path")
    private String filePath;
multi-system/src/main/java/com/gkhy/exam/system/domain/ContractLedger.java
@@ -42,6 +42,10 @@
    @JsonFormat(pattern = "yyyy-MM-dd")
    private LocalDate signDate;
    @ApiModelProperty(value = "交付0否1是")
    @TableField("deliver")
    private Integer deliver;
    @TableField("del_flag")
    private Integer delFlag;
multi-system/src/main/java/com/gkhy/exam/system/domain/InternalAuditCheckCatalogue.java
@@ -14,7 +14,7 @@
@Getter
@Setter
@TableName("InternalAuditCheckCatalogue")
@TableName("internal_audit_check_catalogue")
@ApiModel(value = "internalAuditCheckCatalogue对象", description = "内审检查标准款项")
public class InternalAuditCheckCatalogue implements Serializable {
multi-system/src/main/java/com/gkhy/exam/system/domain/QualityTarget.java
@@ -84,6 +84,7 @@
    @TableField("update_time")
    private LocalDateTime updateTime;
    @TableField(exist = false)
    private List<QualityTargetMess> qualityTargetMesses;
multi-system/src/main/java/com/gkhy/exam/system/domain/StandardizedTemplate.java
@@ -38,7 +38,7 @@
    @NotBlank(message = "模板名称不可为空")
    private String templateName;
    @ApiModelProperty(value = "类型1体系标准2技术标准3应用标准4程序文件5作业指导书6记录及表单7技术类8生产类9其他知识产权10程序文件模块")
    @ApiModelProperty(value = "类型1体系标准2技术标准3应用标准4程序文件5作业指导书6记录及表单7技术类8生产类9其他知识产权10程序文件模块11记录表单模块")
    @TableField("template_type")
    @NotNull(message = "类型不可为空")
    private Integer templateType;
@@ -64,6 +64,9 @@
    @TableField(exist = false)
    private String industryTypeName;
    @TableField("department")
    private String department;
    @ApiModelProperty(value = "文件路径")
    @TableField("file_path")
    @NotBlank(message = "文件路径不可为空")
multi-system/src/main/java/com/gkhy/exam/system/domain/req/EmployeeRecordReq.java
@@ -29,4 +29,9 @@
    @ApiModelProperty("职称1、初级2中级3高级")
    private String positional;
    @ApiModelProperty("开始时间")
    private String startTime;
    @ApiModelProperty("结束时间")
    private String endTime;
}
multi-system/src/main/java/com/gkhy/exam/system/domain/vo/statistic/CompanyCertificateVO.java
对比新文件
@@ -0,0 +1,27 @@
package com.gkhy.exam.system.domain.vo.statistic;
import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.time.LocalDateTime;
@Data
@ApiModel("企业证书统计")
public class CompanyCertificateVO {
    @ApiModelProperty(value = "企业资质证书名称")
    private String certificateName;
    @ApiModelProperty(value = "企业资质证书编号")
    private String certificateNum;
    @ApiModelProperty(value = "企业证书有效期")
    private LocalDateTime effectiveTime;
    @ApiModelProperty(value = "企业证书获取时间")
    private LocalDateTime getTime;
}
multi-system/src/main/java/com/gkhy/exam/system/domain/vo/statistic/CompanyResources.java
对比新文件
@@ -0,0 +1,20 @@
//package com.gkhy.exam.system.domain.vo.statistic;
//
//import io.swagger.annotations.ApiModel;
//import io.swagger.annotations.ApiModelProperty;
//import lombok.Data;
//
//@Data
//@ApiModel("企业资源和能力情况")
//public class CompanyResources {
//
//    @ApiModelProperty("计算机总数")
//    private Integer computerTotal;
//    @ApiModelProperty("其他办公设备")
//    private Integer otherOfficeEquipment;
//    @ApiModelProperty("生产设备")
//    private Integer productionEquipment;
//    @ApiModelProperty("检测设备")
//    private Integer detectionEquipment;
//
//}
multi-system/src/main/java/com/gkhy/exam/system/domain/vo/statistic/CompanyStatisticsVo.java
对比新文件
@@ -0,0 +1,102 @@
package com.gkhy.exam.system.domain.vo.statistic;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
@Data
@ApiModel("企业的基本情况统计")
public class CompanyStatisticsVo {
    @ApiModelProperty(value = "企业ID")
    private Integer companyId;
    @ApiModelProperty(value = "企业名称")
    private String companyName;
    @ApiModelProperty(value = "企业类型1民营2私营3企事业单位")
    private Integer companyType;
    @ApiModelProperty(value = "行业")
    private String industry;
    @ApiModelProperty(value = "法人编号")
    private String legalPersonCode;
    @ApiModelProperty(value = "法人代表")
    private String legalPerson;
    @ApiModelProperty(value = "注册资本")
    private String registeredCapital;
    @ApiModelProperty(value = "总办公地址")
    private String officeAddress;
    @ApiModelProperty(value = "其他分场所地址")
    private String otherAddress;
    @ApiModelProperty(value = "员工总数")
    private Integer totalEmployee;
    @ApiModelProperty(value = "专业技术人员")
    private Integer professionalEmployee;
    @ApiModelProperty(value = "企业证书列表")
    List<CompanyCertificateVO> companyCertificateVOList;
    @ApiModelProperty("2)计算机总数")
    private Integer computerTotal;
    @ApiModelProperty("2)其他办公设备数量")
    private Integer otherOfficeEquipment;
    @ApiModelProperty("2)生产设备数量")
    private Integer productionEquipment;
    @ApiModelProperty("2)检测设备数量")
    private Integer detectionEquipment;
    @ApiModelProperty("3)质量方针内容")
    private String companyQualityPolicy;
    @ApiModelProperty("3)年份")
    private String year;
    @ApiModelProperty("3)公司质量目标内容")
    private List<String> companyQualityTarget;
    @ApiModelProperty("4)合同数量")
    private Integer contractLedger;
    @ApiModelProperty("4)已交付合同")
    private Integer deliveredContract;
    @ApiModelProperty("4)满意度")
    private String sumSatisficing;
    @ApiModelProperty("4)专利数量")
    private Integer patent;
    @ApiModelProperty("5)培训计划")
    private String trainPlanName;
    @ApiModelProperty("6)内审不符合数目")
    private Integer internalAuditCheckResult;
    @ApiModelProperty("6)管审时间改进项")
    private Integer conStatisticNum;
    @ApiModelProperty("7)外包过程")
    private String outsourcedProduct;
    @ApiModelProperty(value = "8)员工总数新增数")
    private Integer totalEmployeeAdd;
    @ApiModelProperty(value = "8)专业技术人员新增数")
    private Integer professionalEmployeeAdd;
    @ApiModelProperty("8)检测设备数量新增数")
    private Integer detectionEquipmentAdd;
    @ApiModelProperty("8)培训计划已完成数")
    private Integer trainPlanCompleted;
}
multi-system/src/main/java/com/gkhy/exam/system/mapper/CompanySummaryMapper.java
@@ -2,6 +2,7 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.gkhy.exam.system.domain.CompanySummary;
import com.gkhy.exam.system.domain.vo.statistic.CompanyStatisticsVo;
import org.mapstruct.Mapper;
import java.util.List;
@@ -11,4 +12,6 @@
    List<CompanySummary> selectCompanySummaryList(Integer companyId);
    int updateSummaryById(CompanySummary companySummary);
    CompanyStatisticsVo selectCompanyStatistics(Integer companyId);
}
multi-system/src/main/java/com/gkhy/exam/system/mapper/ContinuousImproveMapper.java
@@ -14,4 +14,6 @@
    List<ContinuousImprove> selectByCompanyId(ContinuousImprove continuousImprove);
    ContinuousImprove selectListById(@Param("improveId") Integer improveId);
    int getConStatistic(@Param("companyId") Integer companyId, @Param("year") String year);
}
multi-system/src/main/java/com/gkhy/exam/system/mapper/EmployeeRecordMapper.java
@@ -20,5 +20,5 @@
public interface EmployeeRecordMapper extends BaseMapper<EmployeeRecord> {
    List<EmployeeRecordVO> selectEmployeeRecordList(EmployeeRecordReq req);
    List<EmployeeRecord> getEmployeeRecordList(Long companyId);
    List<EmployeeRecordVO> getEmployeeRecordList(Long companyId);
}
multi-system/src/main/java/com/gkhy/exam/system/mapper/InternalAuditCheckMapper.java
@@ -20,5 +20,7 @@
public interface InternalAuditCheckMapper extends BaseMapper<InternalAuditCheck> {
    List<InternalAuditCheck> selectInternalAuditCheckList(@Param("companyId") Integer companyId);
    int getStatisticData(@Param("companyId") Integer companyId, @Param("startTime") String startTime, @Param("endTime") String endTime);
}
multi-system/src/main/java/com/gkhy/exam/system/service/StatisticsService.java
对比新文件
@@ -0,0 +1,8 @@
package com.gkhy.exam.system.service;
import com.gkhy.exam.system.domain.vo.statistic.CompanyStatisticsVo;
public interface StatisticsService {
    CompanyStatisticsVo getCompanyStatistics(Integer companyId,String year);
}
multi-system/src/main/java/com/gkhy/exam/system/service/impl/AnnualReportServiceImpl.java
@@ -1,5 +1,6 @@
package com.gkhy.exam.system.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.gkhy.exam.common.api.CommonPage;
import com.gkhy.exam.common.api.CommonResult;
@@ -24,8 +25,8 @@
    @Override
    public CommonPage selectAnnualList(AnnualReport annualReport) {
        if (!SecurityUtils.adminUser()){
            if (annualReport.getCompanyId()==null){
        if (!SecurityUtils.adminUser()) {
            if (annualReport.getCompanyId() == null) {
                throw new ApiException("非管理员操作,企业id不可为空");
            }
        }
@@ -36,6 +37,13 @@
    @Override
    public CommonResult insertAnnual(AnnualReport annualReport) {
        LambdaQueryWrapper<AnnualReport> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(AnnualReport::getCompanyId, annualReport.getCompanyId())
                .eq(AnnualReport::getYear, annualReport.getYear())
                .eq(AnnualReport::getDelFlag, 1);
        if (annualReportMapper.selectCount(queryWrapper) > 0) {
            return CommonResult.failed("该年度报表已存在");
        }
        annualReport.setCreateBy(SecurityUtils.getUsername());
        annualReport.setCreateTime(LocalDateTime.now());
        annualReportMapper.insert(annualReport);
@@ -44,6 +52,14 @@
    @Override
    public CommonResult updateAnnual(AnnualReport annualReport) {
        LambdaQueryWrapper<AnnualReport> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(AnnualReport::getCompanyId, annualReport.getCompanyId())
                .eq(AnnualReport::getYear, annualReport.getYear())
                .eq(AnnualReport::getDelFlag, 1)
                .ne(AnnualReport::getId, annualReport.getId());
        if (annualReportMapper.selectCount(queryWrapper) > 0) {
            return CommonResult.failed("该年度报表已存在");
        }
        annualReport.setUpdateBy(SecurityUtils.getUsername());
        annualReport.setUpdateTime(LocalDateTime.now());
        annualReportMapper.updateById(annualReport);
multi-system/src/main/java/com/gkhy/exam/system/service/impl/EmployeeRecordServiceImpl.java
@@ -54,7 +54,7 @@
//        LambdaQueryWrapper<EmployeeRecord>  queryWrapper = new LambdaQueryWrapper<>();
//        queryWrapper.eq(EmployeeRecord::getCompanyId, companyId);
//        queryWrapper.eq(EmployeeRecord::getDelFlag, 0);
        List<EmployeeRecord> employeeRecords = employeeRecordMapper.getEmployeeRecordList(companyId);
        List<EmployeeRecordVO> employeeRecords = employeeRecordMapper.getEmployeeRecordList(companyId);
        return CommonResult.success(employeeRecords);
    }
}
multi-system/src/main/java/com/gkhy/exam/system/service/impl/QualityEconomyServiceImpl.java
@@ -4,6 +4,7 @@
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.gkhy.exam.common.api.CommonPage;
import com.gkhy.exam.common.api.CommonResult;
import com.gkhy.exam.common.exception.ApiException;
import com.gkhy.exam.common.utils.PageUtils;
import com.gkhy.exam.common.utils.SecurityUtils;
import com.gkhy.exam.system.domain.QualityEconomy;
@@ -25,7 +26,7 @@
    public CommonPage selectQualityEconomyList(QualityEconomy qualityEconomy) {
        if (!SecurityUtils.adminUser()){
            if (qualityEconomy.getCompanyId()==null){
                throw new RuntimeException("非管理员操作,查询条件不可为空");
                throw new ApiException("非管理员操作,查询条件不可为空");
            }
        }
        PageUtils.startPage();
multi-system/src/main/java/com/gkhy/exam/system/service/impl/QualityInformationExteriorServiceImpl.java
@@ -3,6 +3,7 @@
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.gkhy.exam.common.api.CommonPage;
import com.gkhy.exam.common.api.CommonResult;
import com.gkhy.exam.common.exception.ApiException;
import com.gkhy.exam.common.utils.PageUtils;
import com.gkhy.exam.common.utils.SecurityUtils;
import com.gkhy.exam.system.domain.QualityInformationExterior;
@@ -24,7 +25,7 @@
    public CommonPage selectQualityInformationExteriorList(QualityInformationExterior qualityInformationExterior) {
        if (!SecurityUtils.adminUser()){
            if (qualityInformationExterior.getCompanyId()==null){
                throw new RuntimeException("非管理员操作,查询条件不可为空");
                throw new ApiException("非管理员操作,查询条件不可为空");
            }
        }
        PageUtils.startPage();
multi-system/src/main/java/com/gkhy/exam/system/service/impl/StatisticsServiceImpl.java
对比新文件
@@ -0,0 +1,216 @@
package com.gkhy.exam.system.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.gkhy.exam.common.exception.ApiException;
import com.gkhy.exam.system.domain.*;
import com.gkhy.exam.system.domain.req.EmployeeRecordReq;
import com.gkhy.exam.system.domain.vo.EmployeeRecordVO;
import com.gkhy.exam.system.domain.vo.statistic.CompanyStatisticsVo;
import com.gkhy.exam.system.mapper.*;
import com.gkhy.exam.system.service.StatisticsService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.stream.Collectors;
@Service
public class StatisticsServiceImpl implements StatisticsService {
    @Autowired
    private CompanySummaryMapper companySummaryMapper;
    @Autowired
    private EmployeeRecordMapper employeeRecordMapper;
    @Autowired
    private StandingBookMapper standingBookMapper;
    @Autowired
    private AnnualVerificationPlanMapper annualVerificationPlanMapper;
    @Autowired
    private AnnualVerificationDeviceMapper annualVerificationDeviceMapper;
    @Autowired
    private CompanyQualityPolicyMapper companyQualityPolicyMapper;
    @Autowired
    private QualityMapper qualityMapper;
    @Autowired
    private QualityTargetMapper qualityTargetMapper;
    @Autowired
    private ContractLedgerMapper contractLedgerMapper;
    @Autowired
    private AnnualReportMapper annualReportMapper;
    @Autowired
    private InternalKnowledgeMapper internalKnowledgeMapper;
    @Autowired
    private TrainPlanMapper trainPlanMapper;
    @Autowired
    private InternalAuditCheckMapper internalAuditCheckMapper;
    @Autowired
    private ContinuousImproveMapper continuousImproveMapper;
    @Autowired
    private OutsourcedProductMapper outsourcedProductMapper;
    @Override
    public CompanyStatisticsVo getCompanyStatistics(Integer companyId, String year) {
        String yearBegin = year + "-01-01 00:00:00";
        String yearEnd = year + "-12-31 23:59:59";
        CompanyStatisticsVo companyStatisticsVo = companySummaryMapper.selectCompanyStatistics(companyId);
        if (companyStatisticsVo == null) {
            return companyStatisticsVo;
        }
        companyStatisticsVo.setYear(year);
        EmployeeRecordReq req = new EmployeeRecordReq();
        req.setCompanyId(companyId.longValue());
        List<EmployeeRecordVO> sysUsers = employeeRecordMapper.selectEmployeeRecordList(req);
        int totalUser = sysUsers.size();
        long countJS = sysUsers.stream()
                .filter(user -> user.getPersonType() != null)
                .filter(user -> user.getPersonType() == 1)  // 技术类
                .count();
        companyStatisticsVo.setTotalEmployee(totalUser);
        companyStatisticsVo.setProfessionalEmployee(
                countJS > 0 ? (int) countJS : 0
        );
        //企业资源和能力情况
        LambdaQueryWrapper<StandingBook> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(StandingBook::getCompanyId, companyId);
        queryWrapper.eq(StandingBook::getDelFlag, 0);
        List<StandingBook> standingBooks = standingBookMapper.selectList(queryWrapper);
        //计算计算机总数
        long computerTotal = standingBooks.stream()
                .filter(st -> st.getDeviceType() != null)
                .filter(st -> st.getDeviceType() == 1)
                .count();
        //生成设备
        long productionEquipment = standingBooks.stream()
                .filter(st -> st.getDeviceType() != null)
                .filter(st -> st.getDeviceType() == 5)
                .count();
        companyStatisticsVo.setComputerTotal(computerTotal > 0 ? (int) computerTotal : 0);
        companyStatisticsVo.setProductionEquipment(productionEquipment > 0 ? (int) productionEquipment : 0);
        companyStatisticsVo.setOtherOfficeEquipment(standingBooks.size() - (int) computerTotal - (int) productionEquipment);
        LambdaQueryWrapper<AnnualVerificationPlan> queryWrapper1 = new LambdaQueryWrapper<>();
        queryWrapper1.eq(AnnualVerificationPlan::getCompanyId, companyId).eq(AnnualVerificationPlan::getDelFlag, 0).eq(AnnualVerificationPlan::getYear, year);
        List<AnnualVerificationPlan> annualVerificationPlans = annualVerificationPlanMapper.selectList(queryWrapper1);
        if (!annualVerificationPlans.isEmpty()) {
            AnnualVerificationPlan annualVerificationPlan = annualVerificationPlans.get(0);
            LambdaQueryWrapper<AnnualVerificationDevice> queryWrapper2 = new LambdaQueryWrapper<>();
            queryWrapper2.eq(AnnualVerificationDevice::getAnnualVerificationId, annualVerificationPlan.getId()).eq(AnnualVerificationDevice::getDelFlag, 0).eq(AnnualVerificationDevice::getPlanType, 2);
            List<AnnualVerificationDevice> annualVerificationDevices = annualVerificationDeviceMapper.selectList(queryWrapper2);
            companyStatisticsVo.setDetectionEquipment(annualVerificationDevices.size());
            queryWrapper2.between(AnnualVerificationDevice::getCreateTime, yearBegin, yearEnd);
            List<AnnualVerificationDevice> annualVerificationDevices1 = annualVerificationDeviceMapper.selectList(queryWrapper2);
            companyStatisticsVo.setDetectionEquipmentAdd(annualVerificationDevices1.size());
        } else {
            companyStatisticsVo.setDetectionEquipment(0);
        }
        LambdaQueryWrapper<CompanyQualityPolicy> queryWrapper3 = new LambdaQueryWrapper<>();
        queryWrapper3.eq(CompanyQualityPolicy::getCompanyId, companyId).eq(CompanyQualityPolicy::getDelFlag, 1);
        List<CompanyQualityPolicy> qualities = companyQualityPolicyMapper.selectList(queryWrapper3);
        if (!qualities.isEmpty()) {
            companyStatisticsVo.setCompanyQualityPolicy(qualities.get(0).getPolicy());
        }
        LambdaQueryWrapper<Quality> queryWrapper4 = new LambdaQueryWrapper<>();
        queryWrapper4.eq(Quality::getCompanyId, companyId).eq(Quality::getDelFlag, 1).eq(Quality::getYear, year);
        List<Quality> qualities1 = qualityMapper.selectList(queryWrapper4);
        if (!qualities1.isEmpty()) {
            LambdaQueryWrapper<QualityTarget> queryWrapper5 = new LambdaQueryWrapper<>();
            queryWrapper5.eq(QualityTarget::getQualityId, qualities1.get(0).getId()).eq(QualityTarget::getDelFlag, 1).orderByDesc(QualityTarget::getCreateTime);
            List<QualityTarget> qualityTargets = qualityTargetMapper.selectList(queryWrapper5);
            if (!qualityTargets.isEmpty()) {
                List<String> collect = qualityTargets.stream().map(QualityTarget::getMessage).collect(Collectors.toList());
                companyStatisticsVo.setCompanyQualityTarget(collect);
            }
        }
        LambdaQueryWrapper<ContractLedger> queryWrapper6 = new LambdaQueryWrapper<>();
        queryWrapper6.eq(ContractLedger::getCompanyId, companyId).eq(ContractLedger::getDelFlag, 1).between(ContractLedger::getSignDate, yearBegin, yearEnd);
        List<ContractLedger> contractLedgers = contractLedgerMapper.selectList(queryWrapper6);
        companyStatisticsVo.setContractLedger(contractLedgers.size());
        if (!contractLedgers.isEmpty()) {
            Long count = contractLedgers.stream().filter(contractLedger -> contractLedger.getDeliver() == 1).count();
            companyStatisticsVo.setDeliveredContract(count.intValue());
        } else {
            companyStatisticsVo.setDeliveredContract(0);
        }
        //满意度
        LambdaQueryWrapper<AnnualReport> queryWrapper7 = new LambdaQueryWrapper<>();
        queryWrapper7.eq(AnnualReport::getCompanyId, companyId).eq(AnnualReport::getDelFlag, 1).eq(AnnualReport::getYear, year);
        AnnualReport annualReport = annualReportMapper.selectOne(queryWrapper7);
        if (annualReport != null) {
            companyStatisticsVo.setSumSatisficing(annualReport.getSumSatisficing());
        } else {
            companyStatisticsVo.setSumSatisficing("0");
        }
        //只是产权数量
        LambdaQueryWrapper<InternalKnowledge> queryWrapper8 = new LambdaQueryWrapper<>();
        queryWrapper8.eq(InternalKnowledge::getCompanyId, companyId).eq(InternalKnowledge::getDelFlag, 0)
                .between(InternalKnowledge::getCreateTime, yearBegin, yearEnd);
        Long l = internalKnowledgeMapper.selectCount(queryWrapper8);
        companyStatisticsVo.setPatent(l.intValue());
        //培训计划名称
        LambdaQueryWrapper<TrainPlan> queryWrapper9 = new LambdaQueryWrapper<>();
        queryWrapper9.eq(TrainPlan::getCompanyId, companyId).eq(TrainPlan::getDelFlag, 1).between(TrainPlan::getTrainTime, yearBegin, yearEnd);
        List<TrainPlan> trainPlans = trainPlanMapper.selectList(queryWrapper9);
        if (!trainPlans.isEmpty()) {
            String courseNames = trainPlans.stream()
                    .map(TrainPlan::getTrainName)
                    .collect(Collectors.joining(","));
            companyStatisticsVo.setTrainPlanName(courseNames);
        }
        //内审检查不符合
        int statisticData = internalAuditCheckMapper.getStatisticData(companyId, yearBegin, yearEnd);
        companyStatisticsVo.setInternalAuditCheckResult(statisticData);
        //改进项
        int conStatistic = continuousImproveMapper.getConStatistic(companyId, year);
        companyStatisticsVo.setConStatisticNum(conStatistic);
        LambdaQueryWrapper<OutsourcedProduct> queryWrapper10 = new LambdaQueryWrapper<>();
        queryWrapper10.eq(OutsourcedProduct::getCompanyId, companyId).eq(OutsourcedProduct::getDelFlag, 0)
                .between(OutsourcedProduct::getCreateTime, yearBegin, yearEnd);
        List<OutsourcedProduct> outsourcedProducts = outsourcedProductMapper.selectList(queryWrapper10);
        if (!outsourcedProducts.isEmpty()){
            String ps = outsourcedProducts.stream()
                    .map(OutsourcedProduct::getProductName)
                    .collect(Collectors.joining(","));
            companyStatisticsVo.setOutsourcedProduct(ps);
        }
        req.setCompanyId(companyId.longValue());
        req.setStartTime(yearBegin);
        req.setEndTime(yearEnd);
        List<EmployeeRecordVO> sysUsersAdd = employeeRecordMapper.selectEmployeeRecordList(req);
        int totalUserAdd = sysUsersAdd.size();
        long countJSAdd = sysUsersAdd.stream()
                .filter(user -> user.getPersonType() != null)
                .filter(user -> user.getPersonType() == 1)  // 技术类
                .count();
        companyStatisticsVo.setTotalEmployeeAdd(totalUserAdd);
        companyStatisticsVo.setProfessionalEmployeeAdd(
                countJSAdd > 0 ? (int) countJSAdd : 0
        );
        queryWrapper9.eq(TrainPlan::getStatus, 0);
        Long l1 = trainPlanMapper.selectCount(queryWrapper9);
        companyStatisticsVo.setTrainPlanCompleted(l1.intValue());
        return companyStatisticsVo;
    }
}
multi-system/src/main/resources/mapper/system/AnnualReportMapper.xml
@@ -4,45 +4,49 @@
    <select id="selectAnnualList" resultType="com.gkhy.exam.system.domain.AnnualReport">
        SELECT
            ar.`id`,
            ar.`company_id`,
            sc.`name` AS company_name,
            ar.`report_name`,
            ar.`number`,
            ar.`dept_id`,
            sd.dept_name,
            ar.`end_time`,
            ar.`grant_amount`,
            ar.`recycle_amount`,
            ar.`recycle_rate`,
            ar.`check_amount`,
            ar.`year_rate`,
            ar.`anciently_rate`,
            ar.`research_satisficing`,
            ar.`delivery_satisficing`,
            ar.`sum_satisficing`,
            ar.`suggest`,
            ar.`agent_id`,
            su1.`name` AS agent_name,
            ar.`dept_user`,
            su2.`name` AS dept_user_name,
            ar.`del_flag`,
            ar.`create_by`,
            ar.`create_time`,
            ar.`update_by`,
            ar.`update_time`
        ar.`id`,
        ar.`company_id`,
        sc.`name` AS company_name,
        ar.`report_name`,
        ar.`number`,
        ar.`dept_id`,
        sd.dept_name,
        ar.`end_time`,
        ar.`grant_amount`,
        ar.`recycle_amount`,
        ar.`recycle_rate`,
        ar.`check_amount`,
        ar.`year_rate`,
        ar.`anciently_rate`,
        ar.`research_satisficing`,
        ar.`delivery_satisficing`,
        ar.`sum_satisficing`,
        ar.`suggest`,
        ar.`agent_id`,
        su1.`name` AS agent_name,
        ar.`dept_user`,
        su2.`name` AS dept_user_name,
        ar.`del_flag`,
        ar.`create_by`,
        ar.`create_time`,
        ar.`update_by`,
        ar.`update_time`,
        ar.`year`
        FROM
            `annual_report` ar
                LEFT JOIN sys_company sc ON ar.company_id = sc.id
                LEFT JOIN sys_user su1 ON ar.agent_id = su1.id
                LEFT JOIN sys_user su2 ON ar.dept_user = su2.id
                LEFT JOIN sys_dept sd ON ar.dept_id = sd.dept_id
        `annual_report` ar
        LEFT JOIN sys_company sc ON ar.company_id = sc.id
        LEFT JOIN sys_user su1 ON ar.agent_id = su1.id
        LEFT JOIN sys_user su2 ON ar.dept_user = su2.id
        LEFT JOIN sys_dept sd ON ar.dept_id = sd.dept_id
        WHERE
            ar.del_flag = 1
          <if test="companyId!=null">
              AND ar.company_id = 24
          </if>
        ar.del_flag = 1
        <if test="companyId!=null">
            AND ar.company_id = 24
        </if>
        <if test="year!=null">
            AND ar.year = #{year}
        </if>
        ORDER BY
            ar.create_time DESC
        ar.create_time DESC
    </select>
</mapper>
multi-system/src/main/resources/mapper/system/CompanyCertificateMapper.xml
@@ -28,6 +28,9 @@
            <if test="delFlag != null and delFlag != ''" >
                del_flag = #{delFlag},
            </if>
            <if test="getTime != null" >
                get_time = #{getTime},
            </if>
            <if test="createBy != null" >
                create_by = #{createBy},
            </if>
@@ -59,7 +62,8 @@
            cc.`create_by`,
            cc.`create_time`,
            cc.`update_by`,
            cc.`update_time`
            cc.`update_time`,
            cc.get_time
        FROM
            company_certificate cc
        left join sys_company sc on cc.company_id = sc.id
multi-system/src/main/resources/mapper/system/CompanySummaryMapper.xml
@@ -13,6 +13,27 @@
            <if test="companySummary != null and companySummary !=''" >
                company_summary = #{companySummary},
            </if>
            <if test="companyType != null " >
                company_type = #{companyType},
            </if>
            <if test="industry != null and industry != ''" >
                industry = #{industry},
            </if>
            <if test="legalPersonCode != null and legalPersonCode != ''" >
                legal_person_code = #{legalPersonCode},
            </if>
            <if test="legalPerson != null and legalPerson != ''" >
                legal_person = #{legalPerson},
            </if>
            <if test="registeredCapital != null and registeredCapital != ''" >
                registered_capital = #{registeredCapital},
            </if>
            <if test="officeAddress != null and officeAddress != ''" >
                office_address = #{officeAddress},
            </if>
            <if test="otherAddress != null and otherAddress != ''" >
                other_address = #{otherAddress},
            </if>
            <if test="filePath!=null and filePath != ''">
                file_path = #{filePath},
            </if>
@@ -40,26 +61,82 @@
    <select id="selectCompanySummaryList" resultType="com.gkhy.exam.system.domain.CompanySummary">
        SELECT
            cs.`id`,
            cs.`company_id`,
            sc.`name` as company_name,
            cs.`company_summary`,
            cs.file_path,
            cs.file_name,
            cs.`del_flag`,
            cs.`create_by`,
            cs.`create_time`,
            cs.`update_by`,
            cs.`update_time`
        cs.`id`,
        cs.`company_id`,
        sc.`name` as company_name,
        cs.`company_summary`,
        cs.file_path,
        cs.file_name,
        cs.`del_flag`,
        cs.`create_by`,
        cs.`create_time`,
        cs.`update_by`,
        cs.`update_time`,
        cs.company_type,
        cs.industry,
        cs.legal_person_code,
        cs.legal_person,
        cs.registered_capital,
        cs.office_address,
        cs.other_address
        FROM
            company_summary cs
        company_summary cs
        left join sys_company sc on cs.company_id = sc.id
        WHERE
             cs.del_flag = 1
        cs.del_flag = 1
        <if test="companyId!=null and companyId!=''">
            and cs.company_id = #{companyId}
        </if>
        ORDER BY
            cs.create_time DESC
        cs.create_time DESC
    </select>
    <resultMap id="CompanyStatisticsMap" type="com.gkhy.exam.system.domain.vo.statistic.CompanyStatisticsVo">
        <result property="companyId" column="company_id"/>
        <result property="companyName" column="company_name"/>
        <result property="companyType" column="company_type"/>
        <result property="industry" column="industry"/>
        <result property="legalPersonCode" column="legal_person_code"/>
        <result property="legalPerson" column="legal_person"/>
        <result property="registeredCapital" column="registered_capital"/>
        <result property="officeAddress" column="office_address"/>
        <result property="otherAddress" column="other_address"/>
<!--        <result property="totalEmployee" column="total_employee"/>-->
<!--        <result property="professionalEmployee" column="professional_employee"/>-->
        <collection property="companyCertificateVOList" javaType="java.util.List" resultMap="CompanyCertificateVO"/>
    </resultMap>
    <resultMap id="CompanyCertificateVO" type="com.gkhy.exam.system.domain.vo.statistic.CompanyCertificateVO">
        <result property="certificateName" column="certificate_name"/>
        <result property="certificateNum" column="certificate_num"/>
        <result property="effectiveTime" column="effective_time"/>
        <result property="getTime" column="get_time"/>
    </resultMap>
    <select id="selectCompanyStatistics" resultMap="CompanyStatisticsMap" parameterType="int">
        SELECT cs.`company_id`,
               sc.`name` as company_name,
               cs.company_type,
               cs.industry,
               cs.legal_person_code,
               cs.legal_person,
               cs.registered_capital,
               cs.office_address,
               cs.other_address,
               cc.certificate_name,
               cc.certificate_num,
               cc.effective_time,
               cc.get_time
        FROM company_summary cs
                 inner join sys_company sc on cs.company_id = sc.id and sc.del_flag = 0
                 left join company_certificate cc on cs.company_id = cc.company_id and cc.del_flag = 1
        WHERE cs.del_flag = 1
          and cs.company_id = #{companyId}
    </select>
</mapper>
multi-system/src/main/resources/mapper/system/ContinuousImproveMapper.xml
@@ -90,4 +90,10 @@
            ci.del_flag = 0
            and ci.id = #{improveId}
    </select>
    <select id="getConStatistic" resultType="int">
        SELECT count(*) FROM `continuous_improve_plan` aa
                                 INNER JOIN continuous_improve bb on aa.improve_id =bb.id
        where bb.del_flag = 0 and bb.company_id = #{companyId} and bb.`year` = #{year}
    </select>
</mapper>
multi-system/src/main/resources/mapper/system/ContractLedgerMapper.xml
@@ -14,7 +14,8 @@
            cl.`create_by`,
            cl.`create_time`,
            cl.`update_by`,
            cl.`update_time`
            cl.`update_time`,
            cl.`deliver`
        FROM
            `contract_ledger` cl
                LEFT JOIN sys_company sc ON cl.company_id = sc.id
multi-system/src/main/resources/mapper/system/EmployeeRecordMapper.xml
@@ -32,10 +32,17 @@
        <if test="positional != null">
            and aa.positional = #{positional}
        </if>
        <if test="startTime != '' and startTime != null" >
            and aa.create_time &gt;= #{startTime}
        </if>
        <if test="endTime != '' and endTime != null" >
            and aa.create_time &lt;= #{endTime}
        </if>
        order by aa.create_time desc
    </select>
    <select id="getEmployeeRecordList" parameterType="long"
            resultType="com.gkhy.exam.system.domain.EmployeeRecord">
            resultType="com.gkhy.exam.system.domain.vo.EmployeeRecordVO">
        select
        a.name,
        aa.employee_id employeeId, aa.user_id userId
multi-system/src/main/resources/mapper/system/InternalAuditCheckMapper.xml
@@ -33,4 +33,17 @@
            resultType="com.gkhy.exam.system.domain.InternalAuditCheckCatalogue">
    </select>
    <select id ="getStatisticData" resultType="int">
        select count(*)
        from internal_audit_check_content aa
                 INNER JOIN internal_audit_check_catalogue bb on aa.check_catalogue_id = bb.id
                 INNER JOIN internal_audit_check cc on bb.check_id = cc.id
        where aa.del_flag = 0
          and bb.del_flag = 0
          and cc.del_flag = 0
          and aa.result != 1
          and cc.company_id = #{companyId} and cc.check_time between #{startTime} and #{endTime}
    </select>
</mapper>
multi-system/src/main/resources/mapper/system/StandardizedTemplateMapper.xml
@@ -31,6 +31,9 @@
            <if test="deptId !=null">
                dept_id = #{deptId},
            </if>
            <if test="department !=null">
                department = #{department},
            </if>
            <if test="stage != null and stage != ''">
                stage = #{stage},
            </if>
@@ -104,6 +107,7 @@
        st. `update_by`,
        st. `update_time`,
        st.industry_type_id,
        st.`department`,
        cit.`name` as industryTypeName
        FROM
        standardized_template st