diff --git a/sk-base-common/src/main/java/com/skua/tool/util/JSUtils.java b/sk-base-common/src/main/java/com/skua/tool/util/JSUtils.java
index 8d9df90..52ea2f4 100644
--- a/sk-base-common/src/main/java/com/skua/tool/util/JSUtils.java
+++ b/sk-base-common/src/main/java/com/skua/tool/util/JSUtils.java
@@ -55,6 +55,31 @@ public class JSUtils {
         return format(obj1,null);
     }
 
+
+    public static String dateFormat(String time , String inputFormat,String outputFormat ){
+        String result = time;
+        try {
+            if(StringUtils.isEmpty(inputFormat)){
+                inputFormat = "yyyy-MM-dd";
+            }
+            if(StringUtils.isEmpty(outputFormat)){
+                outputFormat = "yyyy-MM-dd";//yyyy年MM月dd日
+            }
+            // 创建一个SimpleDateFormat对象,指定目标日期格式
+            SimpleDateFormat inputFormatF = new SimpleDateFormat(inputFormat);
+            SimpleDateFormat outputFormatF = new SimpleDateFormat(outputFormat);
+            // 将字符串转换为Date对象
+            Date date = inputFormatF.parse(time);
+            // 将Date对象格式化为指定的字符串格式
+            result = outputFormatF.format(date);
+            // 输出转换后的日期字符串
+            //System.out.println(result);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return result;
+    }
+
     /***
      *  格式化结果,指定格式,默认保留两位小数
      * @param obj1
diff --git a/sk-module-biz/src/main/java/com/skua/modules/edu/controller/PaperController.java b/sk-module-biz/src/main/java/com/skua/modules/edu/controller/PaperController.java
index 19246a9..b6b0790 100644
--- a/sk-module-biz/src/main/java/com/skua/modules/edu/controller/PaperController.java
+++ b/sk-module-biz/src/main/java/com/skua/modules/edu/controller/PaperController.java
@@ -26,8 +26,10 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.skua.modules.edu.vo.PaperVO;
+import com.skua.modules.guest.util.DateUtil;
 import com.skua.modules.system.entity.SysUser;
 import com.skua.modules.system.service.ISysUserService;
+import com.skua.tool.util.JSUtils;
 import lombok.extern.slf4j.Slf4j;
 
 import org.apache.commons.lang3.StringUtils;
@@ -157,18 +159,19 @@ public class PaperController {
 			boolean ok = paperService.updateById(paper);
 			//TODO 返回false说明什么?
 			if(ok) {
-
-				//信息推送
-				String messageTitle =  DateUtils.dateformat(paper.getStartTime(),"yyyy年MM月dd日")+ "考试"+paper.getPaperTitle() +",请准时参加考试";
-				String messageBody = DateUtils.dateformat(paper.getStartTime(),"yyyy年MM月dd日")+ "考试"+paper.getPaperTitle() +",请准时参加考试";
-				//信息推送
-				pushMsgNoProcess(messageTitle,messageBody,paper.getExamUserIds());
-				result.success("修改成功!");
+				if("1".equals(sendStatus)){
+					//信息推送
+					String messageTitle =   "考试任务:"+paper.getPaperTitle() +"";// JSUtils.dateFormat( paper.getStartTime() ,null,"yyyy年MM月dd日") +
+					String messageBody =  "考试任务:"+paper.getPaperTitle() +",考试时间:"+paper.getStartTime() +"至"+paper.getEndTime()+",请准时参加考试";
+					//信息推送
+					pushMsgNoProcess(messageTitle,messageBody,paper.getExamUserIds());
+				}
+				result.success("操作成功!");
 			}
 		}
 		return result;
 	}
-
+	//信息推送
 	private void pushMsgNoProcess(String messageTitle ,String messageBody  ,String userIds) {
 		if(StringUtils.isNotEmpty(userIds)){
 			List<SysUser> sysUserList = userService.getUserByUserIds(userIds);
diff --git a/sk-module-biz/src/main/java/com/skua/modules/edu/entity/Paper.java b/sk-module-biz/src/main/java/com/skua/modules/edu/entity/Paper.java
index b177cf9..0a8ba42 100644
--- a/sk-module-biz/src/main/java/com/skua/modules/edu/entity/Paper.java
+++ b/sk-module-biz/src/main/java/com/skua/modules/edu/entity/Paper.java
@@ -96,12 +96,10 @@ public class Paper {
     @ApiModelProperty(value = "备注")
 	private String remark;
 
-
 	@ApiModelProperty(value = "多选题得分规则:1 全对得分,2 部分得分,3不得分")
 	@Dict(dicCode = "exam_multiple_rule")
 	private String multipleRule;
 
-
 	@ApiModelProperty(value = "开始次数")
 	private Integer examCount;
 	/**上传人*/
diff --git a/sk-module-biz/src/main/java/com/skua/modules/edu/entity/PaperQuestion.java b/sk-module-biz/src/main/java/com/skua/modules/edu/entity/PaperQuestion.java
index a92a0ab..827413c 100644
--- a/sk-module-biz/src/main/java/com/skua/modules/edu/entity/PaperQuestion.java
+++ b/sk-module-biz/src/main/java/com/skua/modules/edu/entity/PaperQuestion.java
@@ -24,7 +24,7 @@ import org.jeecgframework.poi.excel.annotation.Excel;
 @Accessors(chain = true)
 @ApiModel(value="edu_paper_question对象", description="在线考试--试卷试题表")
 public class PaperQuestion {
-    
+
 	/**主键*/
 	@TableId(type = IdType.ID_WORKER_STR)
     @ApiModelProperty(value = "主键")
diff --git a/sk-module-biz/src/main/java/com/skua/modules/edu/entity/UserAnswer.java b/sk-module-biz/src/main/java/com/skua/modules/edu/entity/UserAnswer.java
index 2afdc0f..8eca803 100644
--- a/sk-module-biz/src/main/java/com/skua/modules/edu/entity/UserAnswer.java
+++ b/sk-module-biz/src/main/java/com/skua/modules/edu/entity/UserAnswer.java
@@ -26,7 +26,7 @@ import org.jeecgframework.poi.excel.annotation.Excel;
 @Accessors(chain = true)
 @ApiModel(value="edu_user_answer对象", description="用户答题卡记录")
 public class UserAnswer {
-    
+
 	/**主键*/
 	@TableId(type = IdType.ID_WORKER_STR)
     @ApiModelProperty(value = "主键")
diff --git a/sk-module-biz/src/main/java/com/skua/modules/edu/job/EduSendMsgJob.java b/sk-module-biz/src/main/java/com/skua/modules/edu/job/EduSendMsgJob.java
index 733d6eb..0860c9b 100644
--- a/sk-module-biz/src/main/java/com/skua/modules/edu/job/EduSendMsgJob.java
+++ b/sk-module-biz/src/main/java/com/skua/modules/edu/job/EduSendMsgJob.java
@@ -60,8 +60,9 @@ public class EduSendMsgJob implements Job {
 		List<Paper> paperList = paperService.queryExamUserIds(yesterDate,null);
 		if(paperList	!= null && !paperList.isEmpty()){
 			for(Paper paper : paperList){
-				messageTitle = "明天考试"+paper.getPaperTitle() +",请参加考试";
-				messageBody = "明天考试"+paper.getPaperTitle() +",请参加考试";
+				messageTitle = "考试任务:<"+paper.getPaperTitle() +">明天开始,请参加考试";
+				//messageBody = "明天考试任务:"+paper.getPaperTitle() +",请参加考试";
+				messageBody =  "考试任务:<"+paper.getPaperTitle() +">明天开始,考试时间:"+paper.getStartTime() +"至"+paper.getEndTime()+",请准时参加考试";
 				userIds = getNoExamUserIds(paper.getExamUserIds(),paper.getUserIds());
 				if(StringUtils.isNotEmpty(userIds)){
 					pushMsgNoProcess(messageTitle,messageBody,userIds);
@@ -72,8 +73,9 @@ public class EduSendMsgJob implements Job {
 		paperList = paperService.queryExamUserIds(null,tomorrowDate);
 		if(paperList	!= null && !paperList.isEmpty()){
 			for(Paper paper : paperList){
-				messageTitle = "明天考试"+paper.getPaperTitle() +"结束,请尽快考试";
-				messageBody = "明天考试"+paper.getPaperTitle() +"结束,请尽快参加考试";
+				messageTitle = "考试任务:<"+paper.getPaperTitle() +">明天结束,请尽快考试";
+				//messageBody = "考试:"+paper.getPaperTitle() +"明天结束,请尽快参加考试";
+				messageBody =  "考试任务:<"+paper.getPaperTitle() +">明天结束,考试时间:"+paper.getStartTime() +"至"+paper.getEndTime()+",请准时参加考试";
 				userIds = getNoExamUserIds(paper.getExamUserIds(),paper.getUserIds());
 				if(StringUtils.isNotEmpty(userIds)){
 					pushMsgNoProcess(messageTitle,messageBody,userIds);
diff --git a/sk-module-biz/src/main/java/com/skua/modules/edu/mapper/xml/PaperMapper.xml b/sk-module-biz/src/main/java/com/skua/modules/edu/mapper/xml/PaperMapper.xml
index 2eb8c71..8d6bffb 100644
--- a/sk-module-biz/src/main/java/com/skua/modules/edu/mapper/xml/PaperMapper.xml
+++ b/sk-module-biz/src/main/java/com/skua/modules/edu/mapper/xml/PaperMapper.xml
@@ -48,7 +48,7 @@
 
 
     <!-- 获取考试userIds集合-->
-    <select id="queryMyPaperRecoredByList" resultType="com.skua.modules.edu.entity.Paper">
+    <select id="queryExamUserIds" resultType="com.skua.modules.edu.entity.Paper">
         select aaa.userids, p.id,p.paper_title,p.exam_user_ids  from edu_paper  p
         left join ( select up.paper_id,group_concat(up.user_id) 'userIds' from edu_user_paper  up group by up.paper_id )aaa on aaa.paper_id = p.id
         where  p.send_status = '1'
diff --git a/sk-module-biz/src/main/java/com/skua/modules/edu/service/impl/PaperServiceImpl.java b/sk-module-biz/src/main/java/com/skua/modules/edu/service/impl/PaperServiceImpl.java
index 33d5a0b..537bbe9 100644
--- a/sk-module-biz/src/main/java/com/skua/modules/edu/service/impl/PaperServiceImpl.java
+++ b/sk-module-biz/src/main/java/com/skua/modules/edu/service/impl/PaperServiceImpl.java
@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.google.gson.Gson;
 import com.google.gson.reflect.TypeToken;
 import com.skua.core.context.BaseContextHandler;
+import com.skua.core.util.ConvertUtils;
 import com.skua.modules.edu.entity.*;
 import com.skua.modules.edu.mapper.*;
 import com.skua.modules.edu.service.IPaperService;
@@ -12,6 +13,7 @@ import com.skua.modules.edu.vo.PaperVO;
 import com.skua.modules.edu.vo.UserPaperVO;
 import com.skua.modules.quartz.util.BaseUtil;
 import com.skua.tool.util.DigitalUtils;
+import com.skua.tool.util.JSUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.boot.json.GsonJsonParser;
 import org.springframework.stereotype.Service;
@@ -21,6 +23,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import javax.annotation.Resource;
 import javax.transaction.Transactional;
 import java.lang.reflect.Type;
+import java.util.Arrays;
 import java.util.List;
 
 /**
@@ -204,6 +207,8 @@ public class PaperServiceImpl extends ServiceImpl<PaperMapper, Paper> implements
         //答题卡详情
         String score  = "0";
         String totalScore = "0";
+        //设置多选题部分得分分值
+        List<Question> questionList = questionMapper.selectListByPaperId(paperVO.getPaperId());;
         if( paperVO.getAnswerList() != null ){
             for(UserAnswer  userAnswer  : paperVO.getAnswerList()){
                 userAnswer.setUserPaperId(  userPaper.getId());
@@ -211,16 +216,26 @@ public class PaperServiceImpl extends ServiceImpl<PaperMapper, Paper> implements
                 userAnswer.setUserId( userPaper.getUserId()) ;
                 // 答案排序
                 userAnswer.splitAndSort();
+                if(questionList != null && !questionList.isEmpty()){
+                    for(Question question : questionList){
+                        if(userAnswer.getQuestionId().equals(question.getId())){
+                            score =  calculateScore(question.getQuestionAnswer(),userAnswer.getAnswer(),question.getScore());
+                            break;
+                        }
+                    }
+                }
+                //totalScore +=score;
+                userAnswer.setScore(score);
                 userAnswerMapper.insert(  userAnswer ) ;
             }
-            userAnswerMapper.checkAnswerByUserPaperId( userPaper.getId() );
-            //设置多选题部分得分分值
+            //userAnswerMapper.checkAnswerByUserPaperId( userPaper.getId() );
+            /*//设置多选题部分得分分值
             if("2".equals( paper.getMultipleRule())){
                 userAnswerMapper.setScoreByMultiple(userPaper.getId());
-            }
+            }*/
             totalScore = userPaperMapper.queryPaperScore(userPaper.getId());
         }
-        userPaper.setScore(totalScore ) ;
+        userPaper.setScore(totalScore+"" ) ;
         userPaperMapper.updateById( userPaper);
 
         // 修改开始人次
@@ -229,8 +244,53 @@ public class PaperServiceImpl extends ServiceImpl<PaperMapper, Paper> implements
         //计算分数
         // answer.setScore( totalScore );
         // answerMapper.updateById( answer ) ;
-        return totalScore;
+        return totalScore+"";
     }
    /* public  String queryPaperScore(String paperId,String userId){
     }*/
+
+
+    /**
+     * 计算多选题得分
+     * @param correctAnswer 正确答案字符串,例如 "ABCD"
+     * @param studentAnswer 学生答案字符串,例如 "ABEF"
+     * @param fullScore 题目满分值
+     * @return 学生得分
+     */
+    public String calculateScore(String correctAnswer, String studentAnswer, String fullScore) {
+        if(correctAnswer.equalsIgnoreCase(studentAnswer)){
+            return fullScore;
+        }
+
+        List<Character> correctList = toCharacterList(correctAnswer);
+        List<Character> studentList = toCharacterList(studentAnswer);
+        // 计算学生答对的选项数量
+        int correctCount = 0;
+        for (Character option : studentList) {
+            if (correctList.contains(option)) {
+                correctCount++;
+            }
+        }
+        // 计算得分
+        String score;
+        if (correctCount == correctList.size() && correctCount == studentList.size()) {
+            // 完全答对
+            score = fullScore;
+        } else if (correctCount > 0) {
+            // 部分答对
+            score =  ConvertUtils.getDouble(fullScore ,0d) / 2 +"";
+        } else {
+            // 完全答错
+            score = "0";
+        }
+        return score;
+    }
+    /**
+     * 将字符串转换为字符列表
+     * @param str 输入字符串
+     * @return 字符列表
+     */
+    private  List<Character> toCharacterList(String str) {
+        return Arrays.asList(str.chars().mapToObj(c -> (char) c).toArray(Character[]::new));
+    }
 }
diff --git a/sk-module-biz/src/main/java/com/skua/modules/erp/service/impl/DistributContractTempServiceImpl.java b/sk-module-biz/src/main/java/com/skua/modules/erp/service/impl/DistributContractTempServiceImpl.java
index 5064ff4..fca72fa 100644
--- a/sk-module-biz/src/main/java/com/skua/modules/erp/service/impl/DistributContractTempServiceImpl.java
+++ b/sk-module-biz/src/main/java/com/skua/modules/erp/service/impl/DistributContractTempServiceImpl.java
@@ -25,7 +25,7 @@ public class DistributContractTempServiceImpl extends ServiceImpl<DistributContr
         JdbcTemplate masterDB = (JdbcTemplate) SpringContextUtils.getBean("master");
         //# 插入到分销合同表
         String sql = "insert into  erp_distribut_contract(id,depart_id,project_name,contract_name,apply_user,purchase_time,contract_year, contract_code,status,start_time,end_time,create_time)";
-        sql +="select id,'af880d6a13404a67825e94bc0f2f3808',project_name,contract_name,apply_user,DATE_FORMAT(purchase_time, '%Y-%m-%d'),contract_year, contract_code,status,DATE_FORMAT(start_time, '%Y-%m-%d %H:%i:%s'),DATE_FORMAT(end_time, '%Y-%m-%d %H:%i:%s')  ,now()  from erp_distribut_contract_temp";
+        sql +="select id,'af880d6a13404a67825e94bc0f2f3808',project_name,contract_name,apply_user,DATE_FORMAT(purchase_time, '%Y-%m-%d'),contract_year, contract_code,status,DATE_FORMAT(start_time, '%Y-%m-%d'),DATE_FORMAT(end_time, '%Y-%m-%d')  ,now()  from erp_distribut_contract_temp";
         sql +=" where id in (select min(id) from erp_distribut_contract_temp group by  contract_code )";
         masterDB.execute(sql);
         //# 修改状态
@@ -36,7 +36,10 @@ public class DistributContractTempServiceImpl extends ServiceImpl<DistributContr
 
         //  # 插入分销物料表
         sql =" insert into erp_distribut_material( id,contract_id ,depart_id, good_code,material_num,distribut_price, tax_amount, distribut_total_price) ";
-        sql +=" select id,id, depart_id,good_code, material_num,distribut_price, tax_amount, distribut_total_price  from erp_distribut_contract_temp";
+        sql +=" select id,contract_code, depart_id,good_code, material_num,distribut_price, tax_amount, distribut_total_price  from erp_distribut_contract_temp";
+        masterDB.execute(sql);
+        //  # 修改分销合同编号
+        sql  ="update erp_distribut_material pm , erp_distribut_contract pc set pm.contract_id = pc.id  where pm.contract_id = pc.contract_code ";
         masterDB.execute(sql);
 
         //#修改部门编号
diff --git a/sk-module-biz/src/main/java/com/skua/modules/erp/service/impl/PurchaseContractTempServiceImpl.java b/sk-module-biz/src/main/java/com/skua/modules/erp/service/impl/PurchaseContractTempServiceImpl.java
index 5a7f252..58c2969 100644
--- a/sk-module-biz/src/main/java/com/skua/modules/erp/service/impl/PurchaseContractTempServiceImpl.java
+++ b/sk-module-biz/src/main/java/com/skua/modules/erp/service/impl/PurchaseContractTempServiceImpl.java
@@ -24,7 +24,7 @@ public class PurchaseContractTempServiceImpl extends ServiceImpl<PurchaseContrac
         //#赋值sql--统购合同创建
         String sql = "";
         sql = "Insert into erp_purchase_contract(id,depart_id,purchase_name,bid_inquiry_code ,purchase_type,project_time,project_name,in_warehouse_name,contract_name,contract_code,start_time ,end_time,purchase_money,create_time,status,use_flag)";
-        sql += " select  id,depart_name,purchase_name,bid_inquiry_code ,purchase_type, DATE_FORMAT(project_time, '%Y-%m-%d'),project_name,in_warehouse_name,contract_name,contract_code,DATE_FORMAT(start_time, '%Y-%m-%d %H:%i:%s') ,DATE_FORMAT(end_time, '%Y-%m-%d %H:%i:%s'),total_price,now(),'0','0'";
+        sql += " select  id,depart_name,purchase_name,bid_inquiry_code ,purchase_type, DATE_FORMAT(project_time, '%Y-%m-%d'),project_name,in_warehouse_name,contract_name,contract_code,DATE_FORMAT(start_time, '%Y-%m-%d') ,DATE_FORMAT(end_time, '%Y-%m-%d'),total_price,now(),'0','0'";
         sql += " from erp_purchase_contract_temp where id in (select min(id) from erp_purchase_contract_temp group by  contract_code )";
        // commonSqlMapper.update()
         masterDB.execute( sql );
@@ -44,8 +44,12 @@ public class PurchaseContractTempServiceImpl extends ServiceImpl<PurchaseContrac
 
         //# 插入统购合同物料信息
         sql ="Insert into erp_purchase_material(id,depart_id,contract_id,sparepart_code,supplier_id,good_code,purchase_num,unit_price,total_price)";
-        sql +="select id,us_depart_name,id,sparepart_code,supplier_name,good_code,purchase_num,unit_price,total_price  from erp_purchase_contract_temp" ;
+        sql +="select id,us_depart_name,contract_code,sparepart_code,supplier_name,good_code,purchase_num,unit_price,total_price  from erp_purchase_contract_temp" ;
         masterDB.execute( sql );
+        // 修改统购合同编号
+        sql = "update erp_purchase_material pm , erp_purchase_contract pc set pm.contract_id = pc.id  where pm.contract_id = pc.contract_code ";
+        masterDB.update( sql );
+
         sql =" update erp_purchase_material pm, equipment_sparepart_supplies ss ";
         sql +=" set pm.sparepart_type = ss.sparepart_type,   pm.sparepart_id = ss.id,  pm.sparepart_name = ss.sparepart_name,pm.specification = ss.specification,pm.measuring_unit = ss.measuring_unit";
         sql +=" where pm.sparepart_code = ss.sparepart_code ";
diff --git a/sk-module-equipment/src/main/java/com/skua/modules/equipment/controller/EquipmentCenterController.java b/sk-module-equipment/src/main/java/com/skua/modules/equipment/controller/EquipmentCenterController.java
index ad6c24c..659d8a3 100644
--- a/sk-module-equipment/src/main/java/com/skua/modules/equipment/controller/EquipmentCenterController.java
+++ b/sk-module-equipment/src/main/java/com/skua/modules/equipment/controller/EquipmentCenterController.java
@@ -190,7 +190,7 @@ public class EquipmentCenterController {
     public Result<List<Map>> maintainCompleteRateDetails(ReportStatisticsDTO reportStatisticsDTO) {
         Result<List<Map>> result = new Result<>();
         setDepartIds(reportStatisticsDTO);
-        List<Map> maintainCompleteRateDetails = iProductionEquipmentService.getMaintainCompleteRateDetails(reportStatisticsDTO);
+        List<Map> maintainCompleteRateDetails = iProductionEquipmentService.getMaintainCompleteRateDetailsNew(reportStatisticsDTO);
         result.setResult(maintainCompleteRateDetails);
         result.setSuccess(true);
         return result;
diff --git a/sk-module-equipment/src/main/java/com/skua/modules/equipment/dto/ReportStatisticsDTO.java b/sk-module-equipment/src/main/java/com/skua/modules/equipment/dto/ReportStatisticsDTO.java
index c85892d..e5f6f6c 100644
--- a/sk-module-equipment/src/main/java/com/skua/modules/equipment/dto/ReportStatisticsDTO.java
+++ b/sk-module-equipment/src/main/java/com/skua/modules/equipment/dto/ReportStatisticsDTO.java
@@ -55,6 +55,25 @@ public class ReportStatisticsDTO {
     private Integer isCompany;
 
 
+    @ApiModelProperty(value = "去年同比开始时间")
+    private String lastYearStartTime;
+    @ApiModelProperty(value = "去年同比结束时间")
+    private String lastYearEndTime;
+
+    public String getLastYearStartTime() {
+        if(StringUtils.isEmpty(lastYearStartTime)){
+            lastYearStartTime = DateUtils.getTbDate(lastYearStartTime);
+        }
+        return lastYearStartTime;
+    }
+
+    public String getLastYearEndTime() {
+        if(StringUtils.isEmpty(lastYearEndTime)){
+            lastYearEndTime = DateUtils.getTbDate(lastYearEndTime);
+        }
+        return lastYearEndTime;
+    }
+
     public String getTime() {
         if(StringUtils.isEmpty(time)){//判断time如果为空,获取starttime的年份数据,否则获取当前年
             if( StringUtils.isNotEmpty(startTime) ){
diff --git a/sk-module-equipment/src/main/java/com/skua/modules/equipment/mapper/ProductionEquipmentMapper.java b/sk-module-equipment/src/main/java/com/skua/modules/equipment/mapper/ProductionEquipmentMapper.java
index cf228ef..ec2ce08 100644
--- a/sk-module-equipment/src/main/java/com/skua/modules/equipment/mapper/ProductionEquipmentMapper.java
+++ b/sk-module-equipment/src/main/java/com/skua/modules/equipment/mapper/ProductionEquipmentMapper.java
@@ -191,4 +191,6 @@ public interface ProductionEquipmentMapper {
     List<Map> getContrastCostDetails(ReportStatisticsDTO reportStatisticsDTO);
     //设备完好率详情(新)
     List<Map> getEquipmentIntactRateDetailsNew(ReportStatisticsDTO reportStatisticsDTO);
+    //完成率详情
+    List<Map> getMaintainCompleteRateDetails(ReportStatisticsDTO reportStatisticsDTO);
 }
diff --git a/sk-module-equipment/src/main/java/com/skua/modules/equipment/mapper/xml/ProductionEquipmentMapper.xml b/sk-module-equipment/src/main/java/com/skua/modules/equipment/mapper/xml/ProductionEquipmentMapper.xml
index 9ee6b5b..534d414 100644
--- a/sk-module-equipment/src/main/java/com/skua/modules/equipment/mapper/xml/ProductionEquipmentMapper.xml
+++ b/sk-module-equipment/src/main/java/com/skua/modules/equipment/mapper/xml/ProductionEquipmentMapper.xml
@@ -1014,7 +1014,7 @@
         SELECT IFNULL(SUM(SUBSTRING(eor.run_time, 1, 2)), 0) / 24 AS runTime,
                sd.depart_name                                     AS departName,sd.id as departId
         FROM equipment_operation_record eor
-                 LEFT JOIN sys_depart sd ON eor.depart_id = sd.id
+                 LEFT JOIN sys_depart sd ON eor.factory_id = sd.id
         WHERE (eor.del_flag IS NULL OR eor.del_flag = 0)
           AND SUBSTRING(eor.create_time, 1, 7) = #{time}
           AND sd.parent_id = #{companyId}
@@ -1026,7 +1026,7 @@
                sd1.depart_name                                    AS departName,
                sd1.id as departId
         FROM equipment_operation_record eor
-                 LEFT JOIN sys_depart sd ON eor.depart_id = sd.id
+                 LEFT JOIN sys_depart sd ON eor.factory_id = sd.id
                  LEFT JOIN sys_depart sd1 ON sd1.id = sd.parent_id
         WHERE (eor.del_flag IS NULL OR eor.del_flag = 0)
           AND SUBSTRING(eor.create_time, 1, 7) = #{time}
@@ -1039,7 +1039,7 @@
                sd.depart_name                                     AS departName,
                sd.id as departId
         FROM equipment_operation_record eor
-                 LEFT JOIN sys_depart sd ON eor.depart_id = sd.id
+                 LEFT JOIN sys_depart sd ON eor.factory_id = sd.id
         WHERE (eor.del_flag IS NULL OR eor.del_flag = 0)
           AND SUBSTRING(eor.create_time, 1, 7) = #{time}
           AND sd.id = #{companyId}
@@ -1270,4 +1270,32 @@ FROM
           AND sd.id = #{companyId}
         GROUP BY sd.id
     </select>
+
+    <!-- 完成率详情-->
+    <select id="getMaintainCompleteRateDetails"  parameterType="com.skua.modules.equipment.dto.ReportStatisticsDTO"   resultType="java.util.Map">
+        select d.id depart_id , d.depart_name 'departName' ,
+        round(ifnull(aaa.completeNum/aaa.planNum*100,0),2) 'complete',
+        round(ifnull(bbb.completeNum/bbb.planNum*100,0),2) 'lastYearComplete'
+        from sys_depart  d
+        left join (
+        select emt.depart_id, count(emt.id) 'planNum' ,
+        ifnull( SUM( CASE WHEN emt.results_enforcement >2 THEN 1 ELSE 0 END ),0) as completeNum
+        from equipment_maintain_task emt
+        where    emt.del_flag = 0 and emt.maintain_time &gt; #{startTime} and emt.maintain_time  &lt;= #{endTime}
+        group by emt.depart_id
+        )aaa on aaa.depart_id = d.id
+
+        left join (
+        select emt.depart_id, count(emt.id) 'planNum' ,
+        ifnull( SUM( CASE WHEN emt.results_enforcement >2 THEN 1 ELSE 0 END ),0) as completeNum
+        from equipment_maintain_task emt
+        where    emt.del_flag = 0 and  LEFT( emt.maintain_time, 10 ) &gt; #{lastYearStartTime} and  LEFT( emt.maintain_time, 10 )  &lt;= #{lastYearEndTime}
+        group by emt.depart_id
+        )bbb on bbb.depart_id = d.id
+        where d.depart_type = 1
+        <if test="departIds != null ">
+            and d.id in (${departIds})
+        </if>
+
+    </select>
 </mapper>
diff --git a/sk-module-equipment/src/main/java/com/skua/modules/equipment/service/IProductionEquipmentService.java b/sk-module-equipment/src/main/java/com/skua/modules/equipment/service/IProductionEquipmentService.java
index 2eaa2a4..cc4f0ca 100644
--- a/sk-module-equipment/src/main/java/com/skua/modules/equipment/service/IProductionEquipmentService.java
+++ b/sk-module-equipment/src/main/java/com/skua/modules/equipment/service/IProductionEquipmentService.java
@@ -53,8 +53,14 @@ public interface IProductionEquipmentService {
 
     //维护完成率趋势
     List<ContrastVO> getMaintainCompleteRate(ReportStatisticsDTO reportStatisticsDTO);
-
+    //维护完成率趋势详情
     List<Map> getMaintainCompleteRateDetails(ReportStatisticsDTO reportStatisticsDTO);
+    /***
+     * 完成率详情(新)
+     * @param reportStatisticsDTO
+     * @return
+     */
+    public List<Map> getMaintainCompleteRateDetailsNew(ReportStatisticsDTO reportStatisticsDTO);
 
     //维修维护费用对比
     List<ContrastVO> getContrastCost(ReportStatisticsDTO reportStatisticsDTO);
diff --git a/sk-module-equipment/src/main/java/com/skua/modules/equipment/service/impl/ProductionEquipmentServiceImpl.java b/sk-module-equipment/src/main/java/com/skua/modules/equipment/service/impl/ProductionEquipmentServiceImpl.java
index 0c32a6e..e971ef2 100644
--- a/sk-module-equipment/src/main/java/com/skua/modules/equipment/service/impl/ProductionEquipmentServiceImpl.java
+++ b/sk-module-equipment/src/main/java/com/skua/modules/equipment/service/impl/ProductionEquipmentServiceImpl.java
@@ -637,7 +637,7 @@ public class ProductionEquipmentServiceImpl implements IProductionEquipmentServi
         //平均修复时间
         List<Map> MTTR = new ArrayList<>();
         if (reportStatisticsDTO.getTimeUnit() == 6) {
-            MTBF = productionEquipmentMapper.getHalfIntactMTBF();
+            MTBF = productionEquipmentMapper.getHalfIntactMTBF(); //平均故障时间
             MTTR = productionEquipmentMapper.getHalfIntactMTTR();
         } else {
             MTBF = productionEquipmentMapper.getOneYearMTBF();
@@ -828,6 +828,14 @@ public class ProductionEquipmentServiceImpl implements IProductionEquipmentServi
         return contrastVOS;
     }
 
+    /***
+     * 完成率详情
+     * @param reportStatisticsDTO
+     * @return
+     */
+    public List<Map> getMaintainCompleteRateDetailsNew(ReportStatisticsDTO reportStatisticsDTO) {
+        return productionEquipmentMapper.getMaintainCompleteRateDetails(reportStatisticsDTO);
+    }
     @Override
     public List<Map> getMaintainCompleteRateDetails(ReportStatisticsDTO reportStatisticsDTO) {
         List<Map> list = new ArrayList<>();