|
@@ -425,6 +425,146 @@ public class ZwywBtglGlbtServiceImpl implements IZwywBtglGlbtService
|
|
|
return msg.toString();
|
|
|
}
|
|
|
|
|
|
+ public void checkGlbtJobByMonth(String month) {
|
|
|
+ LoginUser user = userService.getUserInfo("admin", SecurityConstants.INNER).getData();
|
|
|
+ SecurityContextHolder.set(SecurityConstants.LOGIN_USER, user);
|
|
|
+ LambdaQueryWrapper<ZwywBtglGlbt> lqw = new LambdaQueryWrapper<ZwywBtglGlbt>()
|
|
|
+ .eq(ZwywBtglGlbt::getStatus, AdvancedStatus.MONTH.getCode())
|
|
|
+ .le(ZwywBtglGlbt::getFfyf, month);
|
|
|
+ List<ZwywBtglGlbt> glbtList = zwywBtglGlbtMapper.selectList(lqw);
|
|
|
+ // 社区分组
|
|
|
+ Map<String, List<ZwywBtglGlbt>> glbtGroupList = glbtList.stream()
|
|
|
+ .collect(Collectors.groupingBy(ZwywBtglGlbt::getXzqh));
|
|
|
+ // 根据等级部门查询该部门创建且启用日期及停用日期符合要求的高领津贴项目
|
|
|
+ LambdaQueryWrapper<ZwywBtglGlbtxm> xmLqw = new LambdaQueryWrapper<ZwywBtglGlbtxm>()
|
|
|
+ .eq(ZwywBtglGlbtxm::getXmzt, GlbtXmztStatus.QY.getCode())
|
|
|
+ .le(ZwywBtglGlbtxm::getQyrq, month + "31")
|
|
|
+ .and(wq -> wq.ge(ZwywBtglGlbtxm::getTyrq, month + "31")
|
|
|
+ .or().isNull(ZwywBtglGlbtxm::getTyrq));
|
|
|
+ List<ZwywBtglGlbtxm> xmList = zwywBtglGlbtxmMapper.selectList(xmLqw);
|
|
|
+ glbtGroupList.forEach((xzqh, v) -> {
|
|
|
+ SysDeptJl dept = sysDeptJlMapper.selectSysDeptJlByCode(xzqh);
|
|
|
+ if (ObjectUtils.isNotEmpty(dept)) {
|
|
|
+ List<String> deptCodeList = Arrays.asList(dept.getAncestors().split(","));
|
|
|
+ ZwywBtglGlbtxm qxXm = xmList.stream().filter(x -> StringUtils.equals(deptCodeList.get(2), x.getXzqh()))
|
|
|
+ .findFirst().orElse(null);
|
|
|
+ ZwywBtglGlbtxm dsXm = xmList.stream().filter(x -> StringUtils.equals(deptCodeList.get(1), x.getXzqh()))
|
|
|
+ .findFirst().orElse(null);
|
|
|
+ ZwywBtglGlbtxm sjXm = xmList.stream().filter(x -> StringUtils.equals(deptCodeList.get(0), x.getXzqh()))
|
|
|
+ .findFirst().orElse(null);
|
|
|
+ List<ZwywBtglGlbtmx> mxList = new ArrayList<>();
|
|
|
+ BigDecimal sum = v.stream().map(d -> {
|
|
|
+ BigDecimal hj = BigDecimal.ZERO;
|
|
|
+ BigDecimal ffje = BigDecimal.ZERO;
|
|
|
+ BigDecimal bfje = BigDecimal.ZERO;
|
|
|
+ BigDecimal zje = BigDecimal.ZERO;
|
|
|
+ BigDecimal cffje = BigDecimal.ZERO;
|
|
|
+ BigDecimal cbfje = BigDecimal.ZERO;
|
|
|
+ BigDecimal czje = BigDecimal.ZERO;
|
|
|
+ BigDecimal sffje = BigDecimal.ZERO;
|
|
|
+ BigDecimal sbfje = BigDecimal.ZERO;
|
|
|
+ BigDecimal szje = BigDecimal.ZERO;
|
|
|
+ int age = DateUtils.getCurrentAge(DateUtils.dateTime(YYYYMMDD, d.getCsrq()));
|
|
|
+ if (80 <= age && age <= 89) {
|
|
|
+ if (ObjectUtils.isNotEmpty(qxXm)) {
|
|
|
+ ffje = new BigDecimal(qxXm.getBtzjE());
|
|
|
+ }
|
|
|
+ if (ObjectUtils.isNotEmpty(dsXm)) {
|
|
|
+ cffje = new BigDecimal(dsXm.getBtzjE());
|
|
|
+ }
|
|
|
+ if (ObjectUtils.isNotEmpty(sjXm)) {
|
|
|
+ sffje = new BigDecimal(sjXm.getBtzjE());
|
|
|
+ }
|
|
|
+ } else if (90 <= age && age <= 99) {
|
|
|
+ if (ObjectUtils.isNotEmpty(qxXm)) {
|
|
|
+ ffje = new BigDecimal(qxXm.getBtzjN());
|
|
|
+ }
|
|
|
+ if (ObjectUtils.isNotEmpty(dsXm)) {
|
|
|
+ cffje = new BigDecimal(dsXm.getBtzjN());
|
|
|
+ }
|
|
|
+ if (ObjectUtils.isNotEmpty(sjXm)) {
|
|
|
+ sffje = new BigDecimal(sjXm.getBtzjN());
|
|
|
+ }
|
|
|
+ } else if (age >= 100) {
|
|
|
+ if (ObjectUtils.isNotEmpty(qxXm)) {
|
|
|
+ ffje = new BigDecimal(qxXm.getBtzjH());
|
|
|
+ }
|
|
|
+ if (ObjectUtils.isNotEmpty(dsXm)) {
|
|
|
+ cffje = new BigDecimal(dsXm.getBtzjH());
|
|
|
+ }
|
|
|
+ if (ObjectUtils.isNotEmpty(sjXm)) {
|
|
|
+ sffje = new BigDecimal(sjXm.getBtzjH());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 判断是否第一个月发放
|
|
|
+ if (StringUtils.equals(d.getFfyf(), month)) {
|
|
|
+ if (StringUtils.equals(d.getIsBf(), WhetherStatus.YES.getCode())) {
|
|
|
+ if (StringUtils.isNotEmpty(d.getBfys())) {
|
|
|
+ if (ObjectUtils.isNotEmpty(qxXm)) {
|
|
|
+ bfje = ffje.multiply(new BigDecimal(d.getBfys()));
|
|
|
+ }
|
|
|
+ if (ObjectUtils.isNotEmpty(dsXm)) {
|
|
|
+ cbfje = cffje.multiply(new BigDecimal(d.getBfys()));
|
|
|
+ }
|
|
|
+ if (ObjectUtils.isNotEmpty(sjXm)) {
|
|
|
+ sbfje = sffje.multiply(new BigDecimal(d.getBfys()));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ zje = ffje.add(bfje);
|
|
|
+ czje = cffje.add(cbfje);
|
|
|
+ szje = sffje.add(sbfje);
|
|
|
+ hj = zje.add(czje).add(szje);
|
|
|
+ ZwywBtglGlbtmx mx = new ZwywBtglGlbtmx();
|
|
|
+ mx.setGlbtId(d.getId());
|
|
|
+ mx.setFfje(String.valueOf(ffje));
|
|
|
+ mx.setBfje(String.valueOf(bfje));
|
|
|
+ mx.setZje(String.valueOf(zje));
|
|
|
+ mx.setCffje(String.valueOf(cffje));
|
|
|
+ mx.setCbfje(String.valueOf(cbfje));
|
|
|
+ mx.setCzje(String.valueOf(czje));
|
|
|
+ mx.setSffje(String.valueOf(sffje));
|
|
|
+ mx.setSbfje(String.valueOf(sbfje));
|
|
|
+ mx.setSzje(String.valueOf(szje));
|
|
|
+ mxList.add(mx);
|
|
|
+ return hj;
|
|
|
+ }).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ ZwywBtglGlbtqd qd = new ZwywBtglGlbtqd();
|
|
|
+ qd.setFfyf(month);
|
|
|
+ qd.setFfdq(xzqh);
|
|
|
+ qd.setZrs(String.valueOf(mxList.size()));
|
|
|
+ qd.setZje(String.valueOf(sum));
|
|
|
+ ZwywBtglGlbtqd glbtqd = zwywBtglGlbtqdMapper.selectOne(new LambdaQueryWrapper<ZwywBtglGlbtqd>()
|
|
|
+ .eq(ZwywBtglGlbtqd::getFfyf, qd.getFfyf())
|
|
|
+ .eq(ZwywBtglGlbtqd::getFfdq, qd.getFfdq()));
|
|
|
+ // 单月内多次运行逻辑-首次运行插入新数据-再次运行更新数据
|
|
|
+ if (ObjectUtils.isEmpty(glbtqd)) {
|
|
|
+ zwywBtglGlbtqdMapper.insert(qd);
|
|
|
+ mxList.forEach(m -> {
|
|
|
+ m.setGlbtqdId(qd.getId());
|
|
|
+ zwywBtglGlbtmxMapper.insert(m);
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ qd.setId(glbtqd.getId());
|
|
|
+ zwywBtglGlbtqdMapper.updateById(qd);
|
|
|
+ mxList.forEach(m -> {
|
|
|
+ ZwywBtglGlbtmx glbtmx = zwywBtglGlbtmxMapper.selectOne(new LambdaQueryWrapper<ZwywBtglGlbtmx>()
|
|
|
+ .eq(ZwywBtglGlbtmx::getGlbtId, m.getGlbtId())
|
|
|
+ .eq(ZwywBtglGlbtmx::getGlbtqdId, qd.getId()));
|
|
|
+ if (ObjectUtils.isEmpty(glbtmx)) {
|
|
|
+ m.setGlbtqdId(qd.getId());
|
|
|
+ zwywBtglGlbtmxMapper.insert(m);
|
|
|
+ } else {
|
|
|
+ m.setId(glbtmx.getId());
|
|
|
+ zwywBtglGlbtmxMapper.updateById(m);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
public void checkGlbtJob() {
|
|
|
LoginUser user = userService.getUserInfo("admin", SecurityConstants.INNER).getData();
|
|
|
SecurityContextHolder.set(SecurityConstants.LOGIN_USER, user);
|