Commit 784708c6 by wangqi

帮扶组分档评价

parent 23712bc8
......@@ -12,8 +12,7 @@ import com.qianhe.common.utils.StringUtils;
import com.qianhe.domain.*;
import com.qianhe.mapper.SjGfjsZdgzMapper;
import com.qianhe.mapper.SjGfjsBfzjcMapper;
import com.qianhe.service.ISjGfjsZsdwkhpjService;
import com.qianhe.service.ISjGfjsZsdwkhpjZbService;
import com.qianhe.service.*;
import com.qianhe.system.mapper.SysDeptMapper;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.ss.util.CellRangeAddress;
......@@ -29,6 +28,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;
......@@ -79,6 +79,19 @@ public class SjGfjsBfzkhpjController extends BaseController
return getDataTable(list);
}
// 定义默认的最大值
private static final BigDecimal DEFAULT_MAX = new BigDecimal("99999");
// 定义默认的最小值
private static final BigDecimal DEFAULT_MIN = BigDecimal.ZERO;
@Autowired
private ISjGfjsZdgzService sjGfjsZdgzService;
@Autowired
private ISjGfjsDxjczService sjGfjsDxjczService;
@Autowired
private ISjGfjsFdgzService sjGfjsFdgzService;
/**
* 查询考核评价
* @return
......@@ -90,11 +103,13 @@ public class SjGfjsBfzkhpjController extends BaseController
Map<String,Object> map=new HashMap<>();
Long deptId = sjGfjsZsdwkhpj.getDeptId();
String nd = sjGfjsZsdwkhpj.getNd();
String yl3 = sjGfjsZsdwkhpj.getYl3(); // 帮扶组的id
sjGfjsZsdwkhpj.setJb("帮扶组");
SysDept dept = sysDeptMapper.selectDeptById(deptId);
String deptLx = dept.getDeptLx();
if(StringUtils.isEmpty(deptLx)){
map.put("code",5);
map.put("msg","该单位未维护单位类型");
map.put("msg","该单位未维护单位分类");
map.put("khpjData",new ArrayList<>());
map.put("fjxData",new ArrayList<>());
return map;
......@@ -112,6 +127,66 @@ public class SjGfjsBfzkhpjController extends BaseController
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);
......@@ -130,6 +205,11 @@ public class SjGfjsBfzkhpjController extends BaseController
sjGfjsZsdwkhpjZbnew.setDeptLx(dept.getDeptLx());
sjGfjsZsdwkhpjZbnew.setDeptYwfl(dept.getDeptYwfl());
sjGfjsZsdwkhpjZbnew.setZt("0");//未提交
sjGfjsZsdwkhpjZbnew.setZdf(totalScore);
sjGfjsZsdwkhpjZbnew.setZhdf(totalScore);
sjGfjsZsdwkhpjZbnew.setFdjb(fdjb);
sjGfjsZsdwkhpjZbnew.setYl3(yl3);
sjGfjsZsdwkhpjZbService.insertSjGfjsZsdwkhpjZb(sjGfjsZsdwkhpjZbnew);
}
......@@ -179,20 +259,22 @@ public class SjGfjsBfzkhpjController extends BaseController
}
//查询考核评价
List<SjGfjsZsdwkhpj> resjGfjsZsdwkhpjs = sjGfjsZsdwkhpjService.selectSjGfjsZsdwkhpjList(sjGfjsZsdwkhpj);
List<SjGfjsZsdwkhpj> resjGfjsZsdwkhpjs = sjGfjsZsdwkhpjService.selectSjGfjsZsdwkhpjList_Bfz(sjGfjsZsdwkhpj);
//查询主表信息
SjGfjsZsdwkhpjZb zb_qry = new SjGfjsZsdwkhpjZb();
zb_qry.setNd(nd);
zb_qry.setDeptId(deptId);
zb_qry.setZqfw(sjGfjsZsdwkhpj.getZqfw());
SjGfjsZsdwkhpjZb zb =sjGfjsZsdwkhpjZbService.selectSjGfjsZsdwkhpjZb(zb_qry);
SjGfjsZsdwkhpjZb zb = new SjGfjsZsdwkhpjZb();
if(resjGfjsZsdwkhpjs.size()>0){
Long zbid = resjGfjsZsdwkhpjs.get(0).getZbId(); //主表的id
zb =sjGfjsZsdwkhpjZbService.selectSjGfjsZsdwkhpjZbById(zbid);
}
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;
}
......@@ -363,7 +445,7 @@ public class SjGfjsBfzkhpjController extends BaseController
@PutMapping("/pledit")
public AjaxResult pledit(@RequestBody List<SjGfjsZsdwkhpj> list)
{
return toAjax(sjGfjsZsdwkhpjService.pledit(list));
return toAjax(sjGfjsZsdwkhpjService.pledit_Bfz(list));
}
/**
* 修改并提交 规范建设-帮扶组考核评价
......
......@@ -110,12 +110,13 @@ public class SjGfjsJcdwkhpjController extends BaseController
String deptLx = dept.getDeptLx();
if(StringUtils.isEmpty(deptLx)){
map.put("code",5);
map.put("msg","该单位未维护单位类型");
map.put("msg","该单位未维护单位分类");
map.put("khpjData",new ArrayList<>());
map.put("fjxData",new ArrayList<>());
return map;
}
String zqfw = sjGfjsZsdwkhpj.getZqfw();
sjGfjsZsdwkhpj.setJb("基层单位");
String startRq=null;
String endRq=null;
......@@ -273,11 +274,11 @@ public class SjGfjsJcdwkhpjController extends BaseController
List<SjGfjsZsdwkhpj> resjGfjsZsdwkhpjs = sjGfjsZsdwkhpjService.selectSjGfjsZsdwkhpjList(sjGfjsZsdwkhpj);
//查询主表信息
SjGfjsZsdwkhpjZb zb_qry = new SjGfjsZsdwkhpjZb();
zb_qry.setNd(nd);
zb_qry.setDeptId(deptId);
zb_qry.setZqfw(sjGfjsZsdwkhpj.getZqfw());
SjGfjsZsdwkhpjZb zb =sjGfjsZsdwkhpjZbService.selectSjGfjsZsdwkhpjZb(zb_qry);
SjGfjsZsdwkhpjZb zb = new SjGfjsZsdwkhpjZb();
if(resjGfjsZsdwkhpjs.size()>0){
Long zbid = resjGfjsZsdwkhpjs.get(0).getZbId(); //主表的id
zb =sjGfjsZsdwkhpjZbService.selectSjGfjsZsdwkhpjZbById(zbid);
}
String zt = zb.getZt();
String fdjb = zb.getFdjb();
......
......@@ -104,9 +104,10 @@ public class SjGfjsZsdwkhpjController extends BaseController
String nd = sjGfjsZsdwkhpj.getNd();
SysDept dept = sysDeptMapper.selectDeptById(deptId);
String deptLx = dept.getDeptLx();
sjGfjsZsdwkhpj.setJb("直属单位");
if(StringUtils.isEmpty(deptLx)){
map.put("code",5);
map.put("msg","该单位未维护单位类型");
map.put("msg","该单位未维护单位分类");
map.put("khpjData",new ArrayList<>());
map.put("fjxData",new ArrayList<>());
return map;
......@@ -258,12 +259,13 @@ public class SjGfjsZsdwkhpjController extends BaseController
//查询考核评价
List<SjGfjsZsdwkhpj> resjGfjsZsdwkhpjs = sjGfjsZsdwkhpjService.selectSjGfjsZsdwkhpjList(sjGfjsZsdwkhpj);
//查询主表信息
SjGfjsZsdwkhpjZb zb_qry = new SjGfjsZsdwkhpjZb();
zb_qry.setNd(nd);
zb_qry.setDeptId(deptId);
zb_qry.setZqfw(sjGfjsZsdwkhpj.getZqfw());
SjGfjsZsdwkhpjZb zb =sjGfjsZsdwkhpjZbService.selectSjGfjsZsdwkhpjZb(zb_qry);
SjGfjsZsdwkhpjZb zb = new SjGfjsZsdwkhpjZb();
if(resjGfjsZsdwkhpjs.size()>0){
Long zbid = resjGfjsZsdwkhpjs.get(0).getZbId(); //主表的id
zb =sjGfjsZsdwkhpjZbService.selectSjGfjsZsdwkhpjZbById(zbid);
}
String zt = zb.getZt();
String fdjb = zb.getFdjb();
......
......@@ -31,7 +31,7 @@ public class SjGfjsZsdwkhpj extends BaseEntity
// @Excel(name = "周期类型", readConverterExp = "季=度、半年度、年度")
private String zqlx;
/** 级别(直属单位(半年度)、基层单位(季度)、三基帮扶组(年度)) */
/** 级别(直属单位(半年度)、基层单位(季度)、帮扶组(年度)) */
// @Excel(name = "级别", readConverterExp = "直=属单位(半年度")
private String jb;
......
......@@ -28,6 +28,8 @@ public interface SjGfjsZsdwkhpjMapper
*/
public List<SjGfjsZsdwkhpj> selectSjGfjsZsdwkhpjList(SjGfjsZsdwkhpj sjGfjsZsdwkhpj);
public List<SjGfjsZsdwkhpj> selectSjGfjsZsdwkhpjList_Bfz(SjGfjsZsdwkhpj sjGfjsZsdwkhpj);
/**
* 新增规范建设-直属单位考核评价
*
......
......@@ -28,6 +28,8 @@ public interface ISjGfjsZsdwkhpjService
*/
public List<SjGfjsZsdwkhpj> selectSjGfjsZsdwkhpjList(SjGfjsZsdwkhpj sjGfjsZsdwkhpj);
public List<SjGfjsZsdwkhpj> selectSjGfjsZsdwkhpjList_Bfz(SjGfjsZsdwkhpj sjGfjsZsdwkhpj);
/**
* 新增规范建设-直属单位考核评价
*
......@@ -64,4 +66,6 @@ public interface ISjGfjsZsdwkhpjService
int pledit(List<SjGfjsZsdwkhpj> list);
int pledit_Bfz(List<SjGfjsZsdwkhpj> list);
}
......@@ -69,6 +69,13 @@ public class SjGfjsZsdwkhpjServiceImpl implements ISjGfjsZsdwkhpjService
return sjGfjsZsdwkhpjMapper.selectSjGfjsZsdwkhpjList(sjGfjsZsdwkhpj);
}
@Override
public List<SjGfjsZsdwkhpj> selectSjGfjsZsdwkhpjList_Bfz(SjGfjsZsdwkhpj sjGfjsZsdwkhpj)
{
return sjGfjsZsdwkhpjMapper.selectSjGfjsZsdwkhpjList_Bfz(sjGfjsZsdwkhpj);
}
/**
* 新增规范建设-直属单位考核评价
*
......@@ -240,6 +247,109 @@ public class SjGfjsZsdwkhpjServiceImpl implements ISjGfjsZsdwkhpjService
return mxint;
}
public int pledit_Bfz(List<SjGfjsZsdwkhpj> list) {
//计算分数
SjGfjsZsdwkhpj sjGfjsZsdwkhpj = list.get(0);
SjGfjsZsdwkhpjZb sjGfjsZsdwkhpjZb = sjGfjsZsdwkhpjZbMapper.selectSjGfjsZsdwkhpjZbById(sjGfjsZsdwkhpj.getZbId());
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);
//更新详情
int mxint = sjGfjsZsdwkhpjMapper.pledit(list);
// 更新本单位的排名
/* String zqfw = sjGfjsZsdwkhpjZb.getZqfw(); // "上半年、全年"
String zqlx = sjGfjsZsdwkhpjZb.getZqlx(); // 半年度
String jb = sjGfjsZsdwkhpjZb.getJb(); // 直属单位
Long parentid = sjGfjsZsdwkhpjZb.getParentDeptId(); // 上级单位*/
return mxint;
}
public static void main(String[] args) {
System.out.println(Double.parseDouble("-5"));
System.out.println(Double.parseDouble("+5"));
......
......@@ -51,12 +51,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
a.create_time,
a.update_by,
a.update_time,
remark,
yl1,
yl2,
yl3,
yl4,
yl5,d.dept_name
a.remark,
a.yl1,
a.yl2,
a.yl3,
a.yl4,
a.yl5,d.dept_name
from sj_gfjs_zsdwkhpj a
left join sys_dept d on a.dept_id=d.dept_id
</sql>
......@@ -87,6 +87,31 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</where>
order by yl1
</select>
<select id="selectSjGfjsZsdwkhpjList_Bfz" parameterType="SjGfjsZsdwkhpj" resultMap="SjGfjsZsdwkhpjResult">
<include refid="selectSjGfjsZsdwkhpjVo"/>
<where>
<if test="zbId != null "> and zb_id = #{zbId}</if>
<if test="deptId != null "> and a.dept_id = #{deptId}</if>
<if test="nd != null and nd != ''"> and nd = #{nd}</if>
<if test="zqfw != null and zqfw != ''"> and zqfw = #{zqfw}</if>
<if test="zqlx != null and zqlx != ''"> and zqlx = #{zqlx}</if>
<if test="jb != null and jb != ''"> and jb = #{jb}</if>
<if test="khnr != null and khnr != ''"> and khnr = #{khnr}</if>
<if test="khxd != null and khxd != ''"> and khxd = #{khxd}</if>
<if test="pjbzid != null and pjbzid != ''"> and pjbzid = #{pjbzid}</if>
<if test="pjbzmc != null and pjbzmc != ''"> and pjbzmc = #{pjbzmc}</if>
<if test="sj != null and sj != ''"> and sj = #{sj}</if>
<if test="wtms != null and wtms != ''"> and wtms = #{wtms}</if>
<if test="khfz != null and khfz != ''"> and khfz = #{khfz}</if>
<if test="yl1 != null and yl1 != ''"> and yl1 = #{yl1}</if>
<if test="yl2 != null and yl2 != ''"> and yl2 = #{yl2}</if>
<if test="yl3 != null and yl3 != ''"> and yl3 = #{yl3}</if>
<if test="yl4 != null and yl4 != ''"> and yl4 = #{yl4}</if>
<if test="yl5 != null and yl5 != ''"> and yl5 = #{yl5}</if>
</where>
order by yl1
</select>
<select id="selectSjGfjsZsdwkhpjById" parameterType="Long" resultMap="SjGfjsZsdwkhpjResult">
<include refid="selectSjGfjsZsdwkhpjVo"/>
......
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