Commit 91bc5fad by wangqi

基层的单位计算单位分档结果

parent 2f06a215
......@@ -12,8 +12,7 @@ import com.qianhe.common.utils.StringUtils;
import com.qianhe.domain.*;
import com.qianhe.mapper.SjGfjsYdjcjlMapper;
import com.qianhe.mapper.SjGfjsZdgzMapper;
import com.qianhe.service.ISjGfjsJcdwkhpjService;
import com.qianhe.service.ISjGfjsJcdwkhpjZbService;
import com.qianhe.service.*;
import com.qianhe.system.mapper.SysDeptMapper;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.ss.util.CellRangeAddress;
......@@ -30,6 +29,7 @@ import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.math.BigDecimal;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.HashMap;
......@@ -83,6 +83,18 @@ public class SjGfjsJcdwkhpjController extends BaseController
return getDataTable(list);
}
@Autowired
private ISjGfjsZdgzService sjGfjsZdgzService;
@Autowired
private ISjGfjsDxjczService sjGfjsDxjczService;
@Autowired
private ISjGfjsFdgzService sjGfjsFdgzService;
// 定义默认的最大值
private static final BigDecimal DEFAULT_MAX = new BigDecimal("99999");
// 定义默认的最小值
private static final BigDecimal DEFAULT_MIN = BigDecimal.ZERO;
/**
* 查询考核评价
* @return
......@@ -121,10 +133,73 @@ public class SjGfjsJcdwkhpjController extends BaseController
endRq=nd+"-12";
}
//查询考核评价是否保存到从表
List<SjGfjsZsdwkhpj> sjGfjsZsdwkhpjs = sjGfjsZsdwkhpjService.selectSjGfjsZsdwkhpjList(sjGfjsZsdwkhpj);
// List<SjGfjsZsdwkhpj>
if(sjGfjsZsdwkhpjs.size()<=0){
// 查询权重系数,
SjGfjsZdgz sjGfjsZdgz_qz = new SjGfjsZdgz();
sjGfjsZdgz_qz.setNd(nd);
sjGfjsZdgz_qz.setLx("基础");
List<SjGfjsZdgz> qzlist = sjGfjsZdgzService.selectSjGfjsZdgzList(sjGfjsZdgz_qz);
// 查询基础值,
SjGfjsDxjcz sjGfjsDxjcz = new SjGfjsDxjcz();
sjGfjsDxjcz.setNd(nd);
List<SjGfjsDxjcz> jczlist = sjGfjsDxjczService.selectSjGfjsDxjczList(sjGfjsDxjcz);
Map<String, BigDecimal> jczMap = new HashMap<>();
for (SjGfjsDxjcz dxjcz : jczlist) {
try {
// 将基础值字符串转换为BigDecimal
BigDecimal jczValue = new BigDecimal(dxjcz.getJcz());
jczMap.put(dxjcz.getJb(), jczValue);
} catch (NumberFormatException e) {
throw new IllegalArgumentException("基础值格式错误,级别:" + dxjcz.getJb() + ",值:" + dxjcz.getJcz(), e);
}
}
// 分档规则
SjGfjsFdgz sjGfjsFdgz = new SjGfjsFdgz();
sjGfjsFdgz.setNd(nd);
List<SjGfjsFdgz> fdgzlist = sjGfjsFdgzService.selectSjGfjsFdgzList(sjGfjsFdgz);
// 计算总得分 初始直接照全是A计算
BigDecimal totalScore = BigDecimal.ZERO;
for(int i=0;i<qzlist.size();i++){
SjGfjsZdgz qzxsMap = qzlist.get(i);
BigDecimal qzxs = new BigDecimal(qzxsMap.getKhnrfs());// 系数
BigDecimal baseValue = jczMap.get("A");
// 计算单项得分并累加
BigDecimal itemScore = qzxs.multiply(baseValue);
totalScore = totalScore.add(itemScore);
}
// 计算单位分档级别
String fdjb = "未知";
for (SjGfjsFdgz fdgz : fdgzlist) {
// 处理最小基础值(null或空字符串视为0)
BigDecimal minJcz = DEFAULT_MIN;
String minStr = fdgz.getMinjcz();
if (minStr != null && !minStr.trim().isEmpty()) {
minJcz = new BigDecimal(minStr.trim());
}
// 处理最大基础值(null或空字符串视为99999)
BigDecimal maxJcz = DEFAULT_MAX;
String maxStr = fdgz.getMaxjcz();
if (maxStr != null && !maxStr.trim().isEmpty()) {
maxJcz = new BigDecimal(maxStr.trim());
}
// 检查总分是否在当前分档的范围内(包含边界值)
// 比较规则:minJcz ≤ totalScore < maxJcz
if (totalScore.compareTo(minJcz) >= 0 && totalScore.compareTo(maxJcz) < 0) {
fdjb = fdgz.getJb(); // 返回匹配的级别
}
}
//查询主表信息
SjGfjsZsdwkhpjZb sjGfjsZsdwkhpjZb=new SjGfjsZsdwkhpjZb();
sjGfjsZsdwkhpjZb.setNd(nd);
......@@ -142,6 +217,9 @@ public class SjGfjsJcdwkhpjController extends BaseController
sjGfjsZsdwkhpjZbnew.setDeptDfl(dept.getDeptDfl());
sjGfjsZsdwkhpjZbnew.setDeptLx(dept.getDeptLx());
sjGfjsZsdwkhpjZbnew.setDeptYwfl(dept.getDeptYwfl());
sjGfjsZsdwkhpjZbnew.setZdf(totalScore);
sjGfjsZsdwkhpjZbnew.setZhdf(totalScore);
sjGfjsZsdwkhpjZbnew.setFdjb(fdjb);
sjGfjsZsdwkhpjZbnew.setZt("0");//未提交
sjGfjsZsdwkhpjZbService.insertSjGfjsZsdwkhpjZb(sjGfjsZsdwkhpjZbnew);
}
......@@ -201,11 +279,13 @@ public class SjGfjsJcdwkhpjController extends BaseController
zb_qry.setZqfw(sjGfjsZsdwkhpj.getZqfw());
SjGfjsZsdwkhpjZb zb =sjGfjsZsdwkhpjZbService.selectSjGfjsZsdwkhpjZb(zb_qry);
String zt = zb.getZt();
String fdjb = zb.getFdjb();
map.put("code",HttpStatus.SUCCESS);
map.put("msg","查询成功");
map.put("khpjData",resjGfjsZsdwkhpjs);
map.put("zt", zt);
map.put("fdjb", fdjb);
return map;
}
......
......@@ -155,4 +155,16 @@ public class SjGfjsZdgzController extends BaseController
return success(sjGfjsZdgzService.getPjbzList(cb));
}
/**
* 修改规范建设-重点工作 原考核评价标准
*/
// @PreAuthorize("@ss.hasPermi('system:sjGfjsZdgz:edit')")
@Log(title = "规范建设-重点工作 原考核评价标准", businessType = BusinessType.UPDATE)
@PutMapping("/editQzxs")
public AjaxResult editQzxs(@RequestBody SjGfjsZdgz sjGfjsZdgz)
{
return toAjax(sjGfjsZdgzService.updateSjGfjsZdgz_QZXS(sjGfjsZdgz));
}
}
......@@ -189,4 +189,9 @@ public class SjGfjsZsdwkhpjZb extends BaseEntity
*/
private String zt;
/**
* ABCD
*/
private String fdjb;
}
......@@ -103,5 +103,7 @@ public interface SjGfjsZdgzMapper
List<SjGfjsZdgzCb> selectSjGfjsZdgzCxBzList(SjGfjsZdgz sjGfjsZdgz);
public int updateSjGfjsZdgz_QZXS(SjGfjsZdgz sjGfjsZdgz);
}
......@@ -71,4 +71,6 @@ public interface ISjGfjsZdgzService
List<SjGfjsZdgzCb> getPjbzList(SjGfjsZdgzCb cb);
public int updateSjGfjsZdgz_QZXS(SjGfjsZdgz sjGfjsZdgz);
}
......@@ -6,18 +6,22 @@ import com.qianhe.common.core.domain.entity.SysDictData;
import com.qianhe.common.utils.DateUtils;
import com.qianhe.common.utils.SecurityUtils;
import com.qianhe.common.utils.StringUtils;
import com.qianhe.domain.SjGfjsZsdwkhpj;
import com.qianhe.domain.SjGfjsZsdwkhpjZb;
import com.qianhe.domain.*;
import com.qianhe.mapper.SjGfjsZsdwkhpjMapper;
import com.qianhe.mapper.SjGfjsZsdwkhpjZbMapper;
import com.qianhe.service.ISjGfjsDxjczService;
import com.qianhe.service.ISjGfjsFdgzService;
import com.qianhe.service.ISjGfjsJcdwkhpjService;
import com.qianhe.service.ISjGfjsZdgzService;
import com.qianhe.system.mapper.SysDeptMapper;
import com.qianhe.system.mapper.SysDictDataMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
......@@ -122,93 +126,110 @@ public class SjGfjsJcdwkhpjServiceImpl implements ISjGfjsJcdwkhpjService
return sjGfjsZsdwkhpjMapper.batchSave(addList);
}
@Autowired
private ISjGfjsZdgzService sjGfjsZdgzService;
@Autowired
private ISjGfjsDxjczService sjGfjsDxjczService;
@Autowired
private ISjGfjsFdgzService sjGfjsFdgzService;
// 定义默认的最大值
private static final BigDecimal DEFAULT_MAX = new BigDecimal("99999");
// 定义默认的最小值
private static final BigDecimal DEFAULT_MIN = BigDecimal.ZERO;
@Override
public int pledit(List<SjGfjsZsdwkhpj> list) {
//计算分数
SjGfjsZsdwkhpj sjGfjsZsdwkhpj = list.get(0);
SjGfjsZsdwkhpjZb sjGfjsZsdwkhpjZb = sjGfjsZsdwkhpjZbMapper.selectSjGfjsZsdwkhpjZbById(sjGfjsZsdwkhpj.getZbId());
SysDept dept = sysDeptMapper.selectDeptById(sjGfjsZsdwkhpjZb.getDeptId());
Map<String,List<SjGfjsZsdwkhpj>> stringListMap = list.stream().collect(Collectors.groupingBy(SjGfjsZsdwkhpj::getKhnr));
List<SysDictData> zdbfKhnr = sysDictDataMapper.selectDictDataByType("gfjs_sslj");
for(SysDictData data:zdbfKhnr){
String dictValue = data.getDictValue();
List<SjGfjsZsdwkhpj> sjGfjsZsdwkhpjs = stringListMap.get(data.getDictValue());
//计算分数
List<Double> doubleList=new ArrayList<>();
if(sjGfjsZsdwkhpjs==null){
continue;
}
// sjGfjsZsdwkhpjs.forEach(item->{
// if(StringUtils.isEmpty(item.getKhfz())){
// item.setKhfz("0");
// }
// doubleList.add(Double.parseDouble(item.getKhfz()));
// });
// double kf = doubleList.stream().mapToDouble(Double::doubleValue).sum();
// if("党建引领".equals(dictValue)){
// //扣分
// sjGfjsZsdwkhpjZb.setDjyjkfs(new BigDecimal(kf));
// //扣分比列
// BigDecimal df = sjGfjsZsdwkhpjZb.getDjyjzfs().add(new BigDecimal(kf));
// BigDecimal kfbl =df.divide(sjGfjsZsdwkhpjZb.getDjyjzfs(),BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_HALF_UP);
// sjGfjsZsdwkhpjZb.setDjyjkfbl(new BigDecimal(100).subtract(kfbl));
// //得分
// sjGfjsZsdwkhpjZb.setDjyjdf(df);
//
//
// } else if ("素质提升".equals(dictValue)) {
////扣分
// sjGfjsZsdwkhpjZb.setSztskfs(new BigDecimal(kf));
// //扣分比列
// BigDecimal df = sjGfjsZsdwkhpjZb.getSztszfs().add(new BigDecimal(kf));
// /* BigDecimal aa = df.divide(sjGfjsZsdwkhpjZb.getSztszfs(),4,BigDecimal.ROUND_HALF_UP);
// BigDecimal bb = aa.multiply(new BigDecimal(100));
// BigDecimal cc = bb.setScale(2, BigDecimal.ROUND_HALF_UP);*/
//
// BigDecimal kfbl =df.divide(sjGfjsZsdwkhpjZb.getSztszfs(),4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_HALF_UP);
// sjGfjsZsdwkhpjZb.setSztsfbl(new BigDecimal(100).subtract(kfbl));
// //得分
// sjGfjsZsdwkhpjZb.setSztsdf(df);
// } else if ("管理精益".equals(dictValue)) {
// sjGfjsZsdwkhpjZb.setGlgfkfs(new BigDecimal(kf));
// //扣分比列
// BigDecimal df = sjGfjsZsdwkhpjZb.getGlgfzfs().add(new BigDecimal(kf));
// BigDecimal kfbl =df.divide(sjGfjsZsdwkhpjZb.getGlgfzfs(),4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_HALF_UP);
// sjGfjsZsdwkhpjZb.setGlgfbl(new BigDecimal(100).subtract(kfbl));
// //得分
// sjGfjsZsdwkhpjZb.setGlgfdf(df);
// } else if ("业务创效".equals(dictValue)) {
// sjGfjsZsdwkhpjZb.setYwcxkfs(new BigDecimal(kf));
// //扣分比列
// BigDecimal df = sjGfjsZsdwkhpjZb.getYwcxzfs().add(new BigDecimal(kf));
// BigDecimal kfbl =df.divide(sjGfjsZsdwkhpjZb.getYwcxzfs(),4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_HALF_UP);
// sjGfjsZsdwkhpjZb.setYwcxbl(new BigDecimal(100).subtract(kfbl));
// //得分
// sjGfjsZsdwkhpjZb.setYwcxdf(df);
// }
//
// }
//
// BigDecimal sum = sjGfjsZsdwkhpjZb.getDjyjzfs().add(sjGfjsZsdwkhpjZb.getSztszfs()).add(sjGfjsZsdwkhpjZb.getGlgfzfs()).add(sjGfjsZsdwkhpjZb.getYwcxzfs());
// //总得分
// BigDecimal sunfs = sjGfjsZsdwkhpjZb.getDjyjdf().add(sjGfjsZsdwkhpjZb.getSztsdf()).add(sjGfjsZsdwkhpjZb.getGlgfdf()).add(sjGfjsZsdwkhpjZb.getYwcxdf());
// sjGfjsZsdwkhpjZb.setZdf(sunfs);
// //总扣分
// sjGfjsZsdwkhpjZb.setZkf(sum.subtract(sunfs));
// //总扣分比例
// BigDecimal bigDecimal = sunfs.divide(sum,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_HALF_UP);
// sjGfjsZsdwkhpjZb.setZkfbl(new BigDecimal(100).subtract(bigDecimal));
// //综合得分
// String deptDfl = dept.getDeptDfl();
// if(StringUtils.isNotEmpty(deptDfl)){
// if ("B类".equals(deptDfl)) {
// sjGfjsZsdwkhpjZb.setZhdf( sunfs.multiply(new BigDecimal(0.9)).setScale(2, BigDecimal.ROUND_HALF_UP));
// }else if ("C类".equals(deptDfl)) {
// sjGfjsZsdwkhpjZb.setZhdf( sunfs.multiply(new BigDecimal(0.85)).setScale(2, BigDecimal.ROUND_HALF_UP));
// }else {
// sjGfjsZsdwkhpjZb.setZhdf(sunfs);
// }
String nd = sjGfjsZsdwkhpjZb.getNd();
// 查询权重系数,
SjGfjsZdgz sjGfjsZdgz_qz = new SjGfjsZdgz();
sjGfjsZdgz_qz.setNd(nd);
sjGfjsZdgz_qz.setLx("基础");
List<SjGfjsZdgz> qzlist = sjGfjsZdgzService.selectSjGfjsZdgzList(sjGfjsZdgz_qz);
// 查询基础值,
SjGfjsDxjcz sjGfjsDxjcz = new SjGfjsDxjcz();
sjGfjsDxjcz.setNd(nd);
List<SjGfjsDxjcz> jczlist = sjGfjsDxjczService.selectSjGfjsDxjczList(sjGfjsDxjcz);
Map<String, BigDecimal> jczMap = new HashMap<>();
for (SjGfjsDxjcz dxjcz : jczlist) {
try {
// 将基础值字符串转换为BigDecimal
BigDecimal jczValue = new BigDecimal(dxjcz.getJcz());
jczMap.put(dxjcz.getJb(), jczValue);
} catch (NumberFormatException e) {
throw new IllegalArgumentException("基础值格式错误,级别:" + dxjcz.getJb() + ",值:" + dxjcz.getJcz(), e);
}
}
// 分档规则
SjGfjsFdgz sjGfjsFdgz = new SjGfjsFdgz();
sjGfjsFdgz.setNd(nd);
List<SjGfjsFdgz> fdgzlist = sjGfjsFdgzService.selectSjGfjsFdgzList(sjGfjsFdgz);
// 计算总得分
BigDecimal totalScore = BigDecimal.ZERO;
for(int i=0;i<qzlist.size();i++){
SjGfjsZdgz qzxsMap = qzlist.get(i);
BigDecimal qzxs = new BigDecimal(qzxsMap.getKhnrfs());// 系数
String khxd = qzxsMap.getKhxd();
List<SjGfjsZsdwkhpj> filteredDetails = list.stream().filter(item -> khxd.equals(item.getKhxd())).collect(Collectors.toList());
// 计算小项得分总和
BigDecimal xmTotal = BigDecimal.ZERO;
int validCount = 0;
for (SjGfjsZsdwkhpj detail : filteredDetails) {
String khfz = detail.getKhfz(); // 小项ABCD结果
BigDecimal jcz = jczMap.get(khfz);
xmTotal = xmTotal.add(jcz);
validCount++;
}
// 计算小项平均分(如果没有有效小项,得分为0)
BigDecimal avgScore = BigDecimal.ZERO;
if (validCount > 0) {
avgScore = xmTotal.divide(new BigDecimal(validCount), 2, RoundingMode.HALF_UP);
}
// 计算单项得分并累加
BigDecimal itemScore = qzxs.multiply(avgScore);
totalScore = totalScore.add(itemScore);
}
// 计算单位分档级别
String fdjb = "未知";
for (SjGfjsFdgz fdgz : fdgzlist) {
// 处理最小基础值(null或空字符串视为0)
BigDecimal minJcz = DEFAULT_MIN;
String minStr = fdgz.getMinjcz();
if (minStr != null && !minStr.trim().isEmpty()) {
minJcz = new BigDecimal(minStr.trim());
}
// 处理最大基础值(null或空字符串视为99999)
BigDecimal maxJcz = DEFAULT_MAX;
String maxStr = fdgz.getMaxjcz();
if (maxStr != null && !maxStr.trim().isEmpty()) {
maxJcz = new BigDecimal(maxStr.trim());
}
// 检查总分是否在当前分档的范围内(包含边界值)
// 比较规则:minJcz ≤ totalScore < maxJcz
if (totalScore.compareTo(minJcz) >= 0 && totalScore.compareTo(maxJcz) < 0) {
fdjb = fdgz.getJb(); // 返回匹配的级别
}
}
sjGfjsZsdwkhpjZb.setZdf(totalScore);
sjGfjsZsdwkhpjZb.setZhdf(totalScore);
sjGfjsZsdwkhpjZb.setFdjb(fdjb);
//更新主表
sjGfjsZsdwkhpjZbMapper.updateSjGfjsZsdwkhpjZb(sjGfjsZsdwkhpjZb);
return sjGfjsZsdwkhpjMapper.pledit(list);
......
......@@ -166,4 +166,11 @@ public class SjGfjsZdgzServiceImpl implements ISjGfjsZdgzService
}
}
}
@Transactional
@Override
public int updateSjGfjsZdgz_QZXS(SjGfjsZdgz sjGfjsZdgz)
{
return sjGfjsZdgzMapper.updateSjGfjsZdgz_QZXS(sjGfjsZdgz);
}
}
......@@ -214,4 +214,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
( #{item.id}, #{item.zbId}, #{item.nd}, #{item.lx}, #{item.khnr}, #{item.khxd}, #{item.pjbz}, #{item.px}, #{item.createBy}, #{item.createTime}, #{item.updateBy}, #{item.updateTime}, #{item.remark}, #{item.yl1}, #{item.yl2}, #{item.yl3}, #{item.yl4}, #{item.yl5})
</foreach>
</insert>
<update id="updateSjGfjsZdgz_QZXS" parameterType="SjGfjsZdgz">
update sj_gfjs_zdgz
<trim prefix="SET" suffixOverrides=",">
<if test="khnrfs != null">khnrfs = #{khnrfs},</if>
</trim>
where id = #{id}
</update>
</mapper>
\ No newline at end of file
......@@ -51,6 +51,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="pm" column="pm" />
<result property="zt" column="zt" />
<result property="fdjb" column="fdjb" />
</resultMap>
<sql id="selectSjGfjsZsdwkhpjZbVo">
......@@ -95,7 +96,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
yl2,
yl3,
yl4,
yl5,d.dept_name,p.dept_name parent_name, a.pm, a.zt
yl5,d.dept_name,p.dept_name parent_name, a.pm, a.zt,a.fdjb
from sj_gfjs_zsdwkhpj_zb a
left join sys_dept d on a.dept_id=d.dept_id
left join sys_dept p on a.parent_dept_id=p.dept_id </sql>
......@@ -140,6 +141,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="yl5 != null and yl5 != ''"> and yl5 = #{yl5}</if>
<if test="pm != null and pm != ''"> and pm = #{pm}</if>
<if test="zt != null and zt != ''"> and zt = #{zt}</if>
<if test="fdjb != null and fdjb != ''"> and fdjb = #{fdjb}</if>
<if test="df != null "> and zdf &lt;= #{df}</if>
<if test="kfbl != null "> and zkfbl >= #{kfbl}</if>
<if test="fjx != null and fjx.toString()=='1'.toString() "> and sffjxs >= #{fjx}</if>
......@@ -203,6 +205,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="yl5 != null">yl5,</if>
<if test="pm != null">pm,</if>
<if test="zt != null">zt,</if>
<if test="fdjb != null">fdjb,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="deptId != null">#{deptId},</if>
......@@ -247,6 +250,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="yl5 != null">#{yl5},</if>
<if test="pm != null">#{pm},</if>
<if test="zt != null">#{zt},</if>
<if test="fdjb != null">#{fdjb},</if>
</trim>
</insert>
......@@ -295,6 +299,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="yl5 != null">yl5 = #{yl5},</if>
<if test="pm != null">pm = #{pm},</if>
<if test="zt != null">zt = #{zt},</if>
<if test="fdjb != null">fdjb = #{fdjb},</if>
</trim>
where id = #{id}
</update>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment