Commit f18931ee authored by huyuchen's avatar huyuchen

Merge remote-tracking branch 'origin/MVP1.6.4' into MVP1.6.4

parents 5b5e2550 29628a34
......@@ -965,4 +965,64 @@ public class TSocialInfo extends BaseEntity {
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty(value ="首次至缴纳地时间")
private Date firstPayTime;
// 社保士兵新增字段:
/**
* 养工失状态:(0空、1待办理、2自动办理中、3继续办理、4终止办理、5人工处理)
*/
@NotBlank(message = "养工失状态不能为空" )
@Length(max = 32, message = "养工失状态 不能超过32个字符" )
@ExcelAttribute(name = "养工失状态", isNotEmpty = true, errorInfo = "办理状态不能为空", maxLength = 32)
@Schema(description = "养工失状态:(0空、1待办理、2自动办理中、3继续办理、4终止办理、5人工处理)" )
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("养工失状态" )
private String ygsHandleStatus;
/**
* 医生大状态:(0空、1待办理、2自动办理中、3继续办理、4终止办理、5人工处理)
*/
@NotBlank(message = "医生大状态不能为空" )
@Length(max = 32, message = "医生大状态 不能超过32个字符" )
@ExcelAttribute(name = "医生大状态", isNotEmpty = true, errorInfo = "办理状态不能为空", maxLength = 32)
@Schema(description = "医生大状态:(0空、1待办理、2自动办理中、3继续办理、4终止办理、5人工处理)" )
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("医生大状态" )
private String ysdHandleStatus;
/**
* 养工失反馈
*/
@Length(max = 500, message = "养工失反馈 不能超过500个字符" )
@ExcelAttribute(name = "养工失反馈", maxLength = 1)
@Schema(description = "养工失反馈" )
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("养工失反馈" )
private String ygsRemark;
/**
* 医生大反馈
*/
@Length(max = 500, message = "医生大反馈 不能超过500个字符" )
@ExcelAttribute(name = "医生大反馈", maxLength = 1)
@Schema(description = "医生大反馈" )
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("医生大反馈" )
private String ysdRemark;
/**
* 养工失反馈-原反馈
*/
@Length(max = 500, message = "养工失反馈-原反馈 不能超过500个字符" )
@ExcelAttribute(name = "养工失反馈-原反馈", maxLength = 1)
@Schema(description = "养工失反馈-原反馈" )
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("养工失反馈-原反馈" )
private String ygsRemarkOld;
/**
* 医生大反馈-原反馈
*/
@Length(max = 500, message = "医生大反馈-原反馈 不能超过500个字符" )
@ExcelAttribute(name = "医生大反馈-原反馈", maxLength = 1)
@Schema(description = "医生大反馈-原反馈" )
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("医生大反馈-原反馈" )
private String ysdRemarkOld;
}
package com.yifu.cloud.plus.v1.yifu.social.vo;
import lombok.Data;
import java.io.Serializable;
/**
* @Author fxj
* @Date 2024/5/10
* @Description
* @Version 1.0
*/
@Data
public class AutoFlagVo implements Serializable {
// 派单ID
private String dispatchId;
// 自动化标识 0
private String autoFlag;
}
package com.yifu.cloud.plus.v1.yifu.social.vo;
import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.HeadFontStyle;
import com.baomidou.mybatisplus.annotation.TableField;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.ExcelAttribute;
import com.yifu.cloud.plus.v1.yifu.social.entity.TDispatchInfo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotBlank;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Set;
......@@ -127,4 +131,18 @@ public class SocialHandleSearchVo extends TDispatchInfo {
@ExcelIgnore
@Schema(description = "审核状态")
private String auditStatus;
// 社保士兵新增字段:
@ExcelProperty("养工失状态" )
@ExcelIgnore
private String ygsHandleStatus;
@ExcelProperty("医生大状态" )
@ExcelIgnore
private String ysdHandleStatus;
@ExcelProperty("养工失反馈" )
@ExcelIgnore
private String ygsRemark;
@ExcelProperty("医生大反馈" )
@ExcelIgnore
private String ysdRemark;
}
......@@ -522,10 +522,10 @@ public class TDispatchInfoExportVo {
private Date firstPayTime;
/**
* 社保自动化标识 0 是 1 否
* 社保自动化标识 0 是 1 否 2 无
*/
@ExcelAttribute(name = "是否自动化审核",isNotEmpty = false)
@Schema(description = "是否自动化审核:0 是 1 否" )
@ExcelAttribute(name = "是否自动化审核",isNotEmpty = false,readConverterExp = "0=是,1=否,2=无")
@Schema(description = "是否自动化审核:0 是 1 否2 无" )
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty(value ="是否自动化审核")
private String autoFlag;
......
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the yifu4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.yifu.cloud.plus.v1.yifu.social.vo;
import com.alibaba.excel.annotation.ExcelProperty;
import com.yifu.cloud.plus.v1.yifu.common.core.vo.RowIndex;
import lombok.Data;
import java.io.Serializable;
/**
* 社保士兵反馈文件解析
*
* @author hgw
* @date 2024-5-9 16:39:10
*/
@Data
public class TSocialSoldierReturnErrorVo extends RowIndex implements Serializable {
@ExcelProperty("错误信息")
private String errorInfo;
@ExcelProperty("是否处理完成")
private String isDoCompleted;
@ExcelProperty("是否成功")
private String isSuccess;
@ExcelProperty("反馈结果")
private String msg;
@ExcelProperty("身份证号码")
private String idCard;
// 医保增减
@ExcelProperty("证件号码")
private String empIdCard;
}
package com.yifu.cloud.plus.v1.yifu.social.config;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.google.gson.Gson;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.CacheConstants;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.CommonConstants;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.SecurityConstants;
import com.yifu.cloud.plus.v1.yifu.common.core.exception.CheckedException;
import com.yifu.cloud.plus.v1.yifu.common.core.util.Common;
import com.yifu.cloud.plus.v1.yifu.common.core.util.R;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.codec.binary.Hex;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.ByteArrayResource;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.http.*;
import org.springframework.security.authentication.AuthenticationServiceException;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestTemplate;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.TimeUnit;
/**
* @Author: hgw
* @Date: 2024-5-8 15:00:58
* @Description:
* @return: 企业微信配置
**/
@Configuration
@Data
@Slf4j
public class SocialConfig {
// 秘钥
@Value("${soldier.authorizations}")
private String authorizations;
// url前缀
@Value("${soldier.urlPre}")
private String urlPre;
// 社保士兵——1功能列表的KEY
private final String APP_GET_MODULE_DETAIL = "APP_GET_MODULE_DETAIL";
// 社保士兵——2可执行设备
private final String TERMINALS_BY_FUNCTION = "TERMINALS_BY_FUNCTION";
// 社保士兵——5查看结果
private final String GET_FIVE_JOB = "GET_FIVE_JOB";
@Autowired
private RedisTemplate redisTemplate;
/**
* @Description: 1:获取功能列表接口
* @Author: hgw
* @Date: 2024-5-8 15:07:45
* @return: java.lang.String
**/
public Map<String, String> getOneModuleDetailMap(RestTemplate restTemplate) {
Map<String, String> sheMap = new HashMap<>();
Object wxToken = redisTemplate.opsForValue().get(APP_GET_MODULE_DETAIL);
if (null != wxToken) {
return (Map<String, String>) wxToken;
} else {
String moduleDetailUrl = urlPre + "/api/basedata/appgetmoduledetail";
HttpHeaders headers = new HttpHeaders();
MediaType type = MediaType.parseMediaType("application/json; charset=UTF-8");
headers.setContentType(type);
headers.add("accept", MediaType.TEXT_PLAIN.toString());
headers.add("Authorization", authorizations);
HttpEntity<String> formEntity = new HttpEntity<>(headers);
ResponseEntity response = restTemplate.exchange(moduleDetailUrl, HttpMethod.GET, formEntity, String.class);
if (Common.isEmpty(response) || Common.isEmpty(response.getBody())) {
throw new CheckedException("获取社保士兵功能列表接口失败");
}
int status = response.getStatusCodeValue();
if (status != 200) {
throw new CheckedException("获取社保士兵功能列表接口失败,status="+status);
}
String body = (String) response.getBody();
JSONObject bodyObject = JSON.parseObject(body);
String code = bodyObject.getString("code");
if (!"200".equals(code)) {
throw new CheckedException("获取社保士兵功能列表接口失败,code="+code);
}
JSONArray dataArr = (JSONArray) bodyObject.get("data");
JSONObject dataArrObj;
JSONObject childrenArrObj;
JSONObject sheBaoArrObj;
JSONArray childrenArr;
JSONArray sheBaoArr;
for (int i = 0; i<dataArr.size(); i++) {
dataArrObj = (JSONObject) dataArr.get(i);
if ("合肥".equals(dataArrObj.get("label"))) {
childrenArr = (JSONArray) dataArrObj.get("children");
for (int j = 0; j<childrenArr.size(); j++) {
childrenArrObj = (JSONObject) childrenArr.get(j);
if ("社保".equals(childrenArrObj.get("label"))) {
sheBaoArr = (JSONArray) childrenArrObj.get("children");
for (int k = 0; k<sheBaoArr.size(); k++) {
sheBaoArrObj = (JSONObject) sheBaoArr.get(k);
if ("社保增员".equals(sheBaoArrObj.get("label"))) {
sheMap.put("社保增员", sheBaoArrObj.getString("value"));
} else if ("社保减员".equals(sheBaoArrObj.get("label"))) {
sheMap.put("社保减员", sheBaoArrObj.getString("value"));
}
}
} else if ("医保".equals(childrenArrObj.get("label"))) {
sheBaoArr = (JSONArray) childrenArrObj.get("children");
for (int k = 0; k<sheBaoArr.size(); k++) {
sheBaoArrObj = (JSONObject) sheBaoArr.get(k);
if ("医保增员".equals(sheBaoArrObj.get("label"))) {
sheMap.put("医保增员", sheBaoArrObj.getString("value"));
} else if ("医保减员".equals(sheBaoArrObj.get("label"))) {
sheMap.put("医保减员", sheBaoArrObj.getString("value"));
}
}
}
}
}
}
}
if (Common.isEmpty(sheMap)) {
throw new CheckedException("获取社保士兵功能列表接口数据失败!");
}
redisTemplate.opsForValue().set(APP_GET_MODULE_DETAIL, sheMap);
redisTemplate.expire(APP_GET_MODULE_DETAIL, 3600, TimeUnit.SECONDS);
return sheMap;
}
/**
* @Description: 2:获取可执行的设备接口Id
* @Author: hgw
* @Date: 2024-5-8 15:07:45
* @return: java.lang.String
**/
public String getTwoTerminalId(RestTemplate restTemplate, String moduleId) {
if (Common.isEmpty(moduleId)) {
return null;
}
String terminalId = null;
Object wxToken = redisTemplate.opsForValue().get(TERMINALS_BY_FUNCTION);
if (null != wxToken) {
return (String) wxToken;
} else {
String moduleDetailUrl = urlPre + "/api/terminal/getterminalsbyfunction?id="+moduleId;
HttpHeaders headers = new HttpHeaders();
MediaType type = MediaType.parseMediaType("application/json; charset=UTF-8");
headers.setContentType(type);
headers.add("accept", MediaType.TEXT_PLAIN.toString());
headers.add("Authorization", authorizations);
HttpEntity<String> formEntity = new HttpEntity<>(headers);
ResponseEntity response = restTemplate.exchange(moduleDetailUrl, HttpMethod.GET, formEntity, String.class);
if (Common.isEmpty(response) || Common.isEmpty(response.getBody())) {
throw new CheckedException("获取社保士兵【可执行的设备接口】失败");
}
int status = response.getStatusCodeValue();
if (status != 200) {
throw new CheckedException("获取社保士兵【可执行的设备接口】失败,status="+status);
}
String body = (String) response.getBody();
JSONObject bodyObject = JSON.parseObject(body);
String code = bodyObject.getString("code");
if (!"200".equals(code)) {
throw new CheckedException("获取社保士兵【可执行的设备接口】失败,code="+code);
}
JSONArray dataArr = (JSONArray) bodyObject.get("data");
if (dataArr != null && !dataArr.isEmpty()) {
terminalId = ((JSONObject)dataArr.get(0)).getString("value");
}
}
if (Common.isEmpty(terminalId)) {
throw new CheckedException("获取社保士兵【可执行的设备接口】数据失败!");
}
redisTemplate.opsForValue().set(TERMINALS_BY_FUNCTION, terminalId);
redisTemplate.expire(TERMINALS_BY_FUNCTION, 3600, TimeUnit.SECONDS);
return terminalId;
}
/**
* @Description: 3:上传任务文件与附件接口
* @Author: hgw
* @Date: 2024-5-8 15:07:45
* @return: java.lang.String
**/
public String getThreeTerminalId(RestTemplate restTemplate, MultipartFile file) {
String fileUrl;
String moduleDetailUrl = urlPre + "/api/file/upload";
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.MULTIPART_FORM_DATA);
headers.add("accept", MediaType.TEXT_PLAIN.toString());
headers.add("Authorization", authorizations);
MultiValueMap<String, Object> resultMap = new LinkedMultiValueMap<>();
try {
ByteArrayResource fileAsResource = new ByteArrayResource(file.getBytes()) {
@Override
public String getFilename() {
return file.getOriginalFilename();
}
@Override
public long contentLength() {
return file.getSize();
}
};
resultMap.add("file", fileAsResource);
} catch (IOException e) {
e.printStackTrace();
}
HttpEntity<MultiValueMap<String, Object>> formEntity = new HttpEntity<>(resultMap,headers);
String dataResultList = restTemplate.postForObject(moduleDetailUrl, formEntity, String.class);
JSONObject bodyObject = JSON.parseObject(dataResultList);
String code = bodyObject.getString("code");
if (!"200".equals(code)) {
throw new CheckedException("获取社保士兵【上传任务文件与附件接口】失败,code="+code);
}
fileUrl = bodyObject.getString("data");
return fileUrl;
}
/**
* @Description: 4:新增任务接口
* @Author: hgw
* @Date: 2024-5-8 15:07:45
* @return: java.lang.String
**/
public String getFourAppAdd(RestTemplate restTemplate, String jobFile, String moduleDetailId, String terminalId) {
String addId;
String appAddUrl = urlPre + "/api/job/appadd";
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
headers.add("accept", MediaType.TEXT_PLAIN.toString());
headers.add("Authorization", authorizations);
JSONObject json = new JSONObject();
json.put("jobFile", jobFile);
json.put("jobAnnex", null);
json.put("moduleDetailId", moduleDetailId);
json.put("terminalId", terminalId);
HttpEntity<String> formEntity = new HttpEntity<>(json.toString(), headers);
String dataResultList = restTemplate.postForObject(appAddUrl, formEntity, String.class);
JSONObject bodyObject = JSON.parseObject(dataResultList);
String code = bodyObject.getString("code");
if (!"200".equals(code)) {
throw new CheckedException("获取社保士兵【新增任务接口】失败,code="+code);
}
addId = bodyObject.getString("data");
return addId;
}
/**
* @Description: 5:任务查询接口
* @Author: hgw
* @Date: 2024-5-8 15:07:45
* @return: java.lang.String
**/
public R<String> getFiveJob(RestTemplate restTemplate, String addId) {
if (Common.isEmpty(addId)) {
return null;
}
String resultFile = null;
String moduleDetailUrl = urlPre + "/api/job/getjob?id="+addId;
HttpHeaders headers = new HttpHeaders();
MediaType type = MediaType.parseMediaType("application/json; charset=UTF-8");
headers.setContentType(type);
headers.add("accept", MediaType.TEXT_PLAIN.toString());
headers.add("Authorization", authorizations);
HttpEntity<String> formEntity = new HttpEntity<>(headers);
ResponseEntity response = restTemplate.exchange(moduleDetailUrl, HttpMethod.GET, formEntity, String.class);
if (Common.isEmpty(response) || Common.isEmpty(response.getBody())) {
throw new CheckedException("获取社保士兵【任务查询接口】失败");
}
int status = response.getStatusCodeValue();
if (status != 200) {
throw new CheckedException("获取社保士兵【任务查询接口】失败,status="+status);
}
String body = (String) response.getBody();
JSONObject bodyObject = JSON.parseObject(body);
JSONObject dataObject = (JSONObject) bodyObject.get("data");
String statusStr = dataObject.getString("status");
if (!"完成".equals(statusStr)) {
return R.failed(statusStr);
}
resultFile = dataObject.getString("resultFile");
if (Common.isEmpty(resultFile)) {
return R.failed(resultFile);
}
return R.ok(resultFile);
}
}
......@@ -209,6 +209,25 @@ public class TDispatchInfoController {
return new R<>(tDispatchInfoService.getTDispatchInfoPageAudit(page,tDispatchInfo));
}
/**
* @Description: 简单分页查询--社保士兵列表
* @Author: hgw
* @Date: 2024/5/9 20:26
* @return: com.yifu.cloud.plus.v1.yifu.common.core.util.R<com.baomidou.mybatisplus.core.metadata.IPage < com.yifu.cloud.plus.v1.yifu.social.entity.TDispatchInfo>>
**/
@Operation(description = "简单分页查询--社保士兵列表")
@GetMapping("/pageSocialSoldier")
public R<IPage<TDispatchInfo>> pageSocialSoldier(Page<TDispatchInfo> page, SocialHandleSearchVo tDispatchInfo) {
tDispatchInfo.setDeleteFlag(CommonConstants.ZERO_STRING);
YifuUser user = SecurityUtils.getUser();
menuUtil.setAuthSql(user, tDispatchInfo);
if (Common.isNotNull(tDispatchInfo.getAuthSql()) && tDispatchInfo.getAuthSql().contains(CommonConstants.A_DEPT_ID)) {
tDispatchInfo.setAuthSql(tDispatchInfo.getAuthSql().replace(CommonConstants.A_DEPT_ID, "a.SETTLE_DOMAIN"));
}
tDispatchInfo.setCreateBy(user.getId());
return new R<>(tDispatchInfoService.getTSocialSoldierHandlePage(page,tDispatchInfo));
}
/**
* 简单分页查询--社保办理列表
* @param page 分页对象
......
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the yifu4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.yifu.cloud.plus.v1.yifu.social.controller;
import com.yifu.cloud.plus.v1.yifu.common.core.util.R;
import com.yifu.cloud.plus.v1.yifu.social.service.TSocialSoldierService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* 社保士兵
*
* @author hgw
* @date 2024-5-8 14:37:00
*/
@RestController
@RequiredArgsConstructor
@RequestMapping("/tsocialsoldier")
@Tag(name = "社保士兵")
public class TSocialSoldierController {
private final TSocialSoldierService tSocialSoldierService;
@Operation(description = "获取社保士兵相关信息")
@GetMapping("/getOneAppGetModuleDetail")
public R<String> getOneAppGetModuleDetail() {
return tSocialSoldierService.getOneAppGetModuleDetail();
}
}
......@@ -93,6 +93,17 @@ public interface TDispatchInfoMapper extends BaseMapper<TDispatchInfo> {
**/
int getSocialRecordRosterListCount(@Param("tDispatchInfo") SocialHandleSearchVo dispatchInfo,
@Param("idsStr") List<String> idsStr);
/**
* @Description: 社保士兵列表查询
* @Author: hgw
* @Date: 2024/5/10 11:50
* @return: com.baomidou.mybatisplus.core.metadata.IPage<com.yifu.cloud.plus.v1.yifu.social.entity.TDispatchInfo>
**/
IPage<TDispatchInfo> getTSocialSoldierHandlePage(Page<TDispatchInfo> page,
@Param("tDispatchInfo") SocialHandleSearchVo tDispatchInfo,
@Param("idsStr") List<String> idsStr);
/**
* 社保页面查询
* @Author fxj
......@@ -251,5 +262,5 @@ public interface TDispatchInfoMapper extends BaseMapper<TDispatchInfo> {
HouseNameConfigVo getFundSumExportVoTwo(@Param("houseName") String houseName,@Param("tDispatchInfo") SocialHandleSearchVo dispatchInfo);
Map<String, String> getAutoFlag(@Param("idsList")List<String> idsList);
List<AutoFlagVo> getAutoFlag(@Param("idsList")List<String> idsList);
}
......@@ -85,6 +85,14 @@ public interface TDispatchInfoService extends IService<TDispatchInfo> {
void doexportSocialRecordRoster(HttpServletResponse response, SocialHandleSearchVo searchVo, String idStr, String[] exportFields);
/**
* @Description: 社保士兵列表查询
* @Author: hgw
* @Date: 2024/5/10 11:51
* @return: com.baomidou.mybatisplus.core.metadata.IPage<com.yifu.cloud.plus.v1.yifu.social.entity.TDispatchInfo>
**/
IPage<TDispatchInfo> getTSocialSoldierHandlePage(Page<TDispatchInfo> page, SocialHandleSearchVo tDispatchInfo);
IPage<TDispatchInfo> getTDispatchSocialHandlePage(Page<TDispatchInfo> page, SocialHandleSearchVo tDispatchInfo);
IPage<TDispatchInfo> getTDispatchFundHandlePage(Page<TDispatchInfo> page, SocialHandleSearchVo tDispatchInfo);
......@@ -135,4 +143,14 @@ public interface TDispatchInfoService extends IService<TDispatchInfo> {
void doexportFundInfoOne(HttpServletResponse response, SocialHandleSearchVo searchVo);
/**
* @param searchVo
* @param idStr
* @Description: 导出社保花名册
* @Author: hgw
* @Date: 2024/5/8 19:18
* @return: java.util.List<com.yifu.cloud.plus.v1.yifu.social.vo.SocialHandleExportVo>
**/
List<SocialHandleExportVo> getRecordRosterList(SocialHandleSearchVo searchVo, String idStr);
}
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the yifu4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.yifu.cloud.plus.v1.yifu.social.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yifu.cloud.plus.v1.yifu.common.core.util.R;
import com.yifu.cloud.plus.v1.yifu.social.entity.TSocialInfo;
/**
* 社保士兵
*
* @author hgw
* @date 2024-5-8 14:55:24
*/
public interface TSocialSoldierService extends IService<TSocialInfo> {
R<String> getOneAppGetModuleDetail();
}
......@@ -3324,10 +3324,8 @@ public class TDispatchInfoServiceImpl extends ServiceImpl<TDispatchInfoMapper, T
// 获取所有派单信息
List<TDispatchInfo> dispatchs = baseMapper.selectList(Wrappers.<TDispatchInfo>query().lambda().in(TDispatchInfo::getId, idsList));
// 获取所有派单对应的自动化配置信息
Map<String,String> autoFlagMap = baseMapper.getAutoFlag(idsList);
if (Common.isNotNull(autoFlagMap)){
autoFlagMap = new HashMap<>();
}
Map<String,String> autoFlagMap = new HashMap<>();
autoFlagMap = getAutoFlagMap(idsList, autoFlagMap);
if (Common.isNotNull(dispatchs)) {
// 获取所有派单查询信息
Map<String,TSocialFundInfo> socialFundMap = initSocialFundMap(dispatchs);
......@@ -3646,6 +3644,19 @@ public class TDispatchInfoServiceImpl extends ServiceImpl<TDispatchInfoMapper, T
return errorList;
}
private Map<String, String> getAutoFlagMap(List<String> idsList, Map<String, String> autoFlagMap) {
List<AutoFlagVo> autoFlagList = baseMapper.getAutoFlag(idsList);
if (Common.isNotNull(autoFlagList)){
if (Common.isNotNull(autoFlagMap)){
autoFlagMap = new HashMap<>();
}
for (AutoFlagVo flagVo:autoFlagList){
autoFlagMap.put(flagVo.getDispatchId(),flagVo.getAutoFlag());
}
}
return autoFlagMap;
}
private void initReduceStatus(TSocialFundInfo sf, TSocialInfo socialInfo) {
// 各个明细项的可派减项为待办理
if (CommonConstants.ONE_STRING.equals(sf.getPensionHandle()) || CommonConstants.FOUR_STRING.equals(sf.getPensionHandle())){
......@@ -5086,13 +5097,19 @@ public class TDispatchInfoServiceImpl extends ServiceImpl<TDispatchInfoMapper, T
* @Param
* @return
**/
private List<SocialHandleExportVo> getRecordRosterList(SocialHandleSearchVo searchVo, String idStr) {
@Override
public List<SocialHandleExportVo> getRecordRosterList(SocialHandleSearchVo searchVo, String idStr) {
return baseMapper.getSocialRecordRosterList(searchVo,Common.getList(idStr));
}
private boolean updateSocialRecords(SocialHandleSearchVo searchVo, String idStr) {
return baseMapper.updateSocialRecords(searchVo,Common.getList(idStr)) >= 0;
}
@Override
public IPage<TDispatchInfo> getTSocialSoldierHandlePage(Page<TDispatchInfo> page, SocialHandleSearchVo tDispatchInfo) {
return baseMapper.getTSocialSoldierHandlePage(page,tDispatchInfo,null);
}
@Override
public IPage<TDispatchInfo> getTDispatchSocialHandlePage(Page<TDispatchInfo> page, SocialHandleSearchVo tDispatchInfo) {
return baseMapper.getTDispatchSocialHandlePage(page,tDispatchInfo,null);
......
......@@ -284,8 +284,10 @@ public class TSocialDeadlineInfoServiceImpl extends ServiceImpl<TSocialDeadlineI
for (TSocialDeadlineInfo sd:baseLists){
save = new TSocialDeadlineInfo();
BeanUtil.copyProperties(sd,save);
save.setId(null);
initSocialEndDate(holidayMap, save);
initMedicalEndDate(holidayMap, save);
saveList.add(save);
}
if (Common.isNotNull(saveList)){
this.saveBatch(saveList);
......
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the yifu4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.yifu.cloud.plus.v1.yifu.social.service.impl;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.EasyExcelFactory;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.read.listener.ReadListener;
import com.alibaba.excel.read.metadata.holder.ReadRowHolder;
import com.alibaba.excel.util.ListUtils;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.CommonConstants;
import com.yifu.cloud.plus.v1.yifu.common.core.util.*;
import com.yifu.cloud.plus.v1.yifu.salary.vo.TSalaryAccountExportByEkpVo;
import com.yifu.cloud.plus.v1.yifu.social.config.SocialConfig;
import com.yifu.cloud.plus.v1.yifu.social.entity.TSocialInfo;
import com.yifu.cloud.plus.v1.yifu.social.mapper.TSocialInfoMapper;
import com.yifu.cloud.plus.v1.yifu.social.service.TDispatchInfoService;
import com.yifu.cloud.plus.v1.yifu.social.service.TSocialSoldierService;
import com.yifu.cloud.plus.v1.yifu.social.vo.SocialHandleExportVo;
import com.yifu.cloud.plus.v1.yifu.social.vo.SocialHandleSearchVo;
import com.yifu.cloud.plus.v1.yifu.social.vo.TSocialInfoVo;
import com.yifu.cloud.plus.v1.yifu.social.vo.TSocialSoldierReturnErrorVo;
import lombok.AllArgsConstructor;
import lombok.extern.log4j.Log4j2;
import org.apache.commons.compress.utils.IOUtils;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.commons.CommonsMultipartFile;
import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
* 社保士兵
*
* @author hgw
* @date 2024-5-8 14:55:36
*/
@AllArgsConstructor
@Log4j2
@Service
public class TSocialSoldierServiceImpl extends ServiceImpl<TSocialInfoMapper, TSocialInfo> implements TSocialSoldierService {
private RestTemplate restTemplate = new RestTemplate();
private final SocialConfig socialConfig;
private final TDispatchInfoService tDispatchInfoService;
@Override
public R<String> getOneAppGetModuleDetail() {
/*Map<String, String> moduleDetailMap = socialConfig.getOneModuleDetailMap(restTemplate);
if (moduleDetailMap != null && !moduleDetailMap.isEmpty() && moduleDetailMap.get("社保增员") != null) {
String terminalId = socialConfig.getTwoTerminalId(restTemplate, moduleDetailMap.get("社保增员"));
if (Common.isNotNull(terminalId)) {
// TODO-需要重写导出sql
MultipartFile file = this.getFile();
String fileUrl = socialConfig.getThreeTerminalId(restTemplate, file);
System.out.println(fileUrl);
String addId = socialConfig.getFourAppAdd(restTemplate, fileUrl, moduleDetailMap.get("社保增员"), terminalId);
System.out.println(addId);
R<String> resultFile = socialConfig.getFiveJob(restTemplate, addId);
System.out.println("resultFile="+resultFile);
}
}*/
R<String> resultFile = socialConfig.getFiveJob(restTemplate, "9");
System.out.println("resultFile="+resultFile);
HttpURLConnection conn = null;
try {
// 解决中文文件名的乱码问题
String fileUrl = resultFile.getData();
String dowloadUrl = fileUrl;
int indexOf = fileUrl.lastIndexOf("/")+1;
fileUrl = fileUrl.substring(indexOf);
try {
fileUrl = URLEncoder.encode(fileUrl, "UTF-8");
} catch (UnsupportedEncodingException e) {
log.info("编码异常!");
}
dowloadUrl = dowloadUrl.substring(0,indexOf) + fileUrl;
URL url = new URL(dowloadUrl);
conn = (HttpURLConnection) url.openConnection();
//设置超时间为30秒
conn.setConnectTimeout(30 * 1000);
InputStream in = conn.getInputStream();
importDiy(in);
} catch (Exception e) {
e.printStackTrace();
}
return R.ok();
}
public MultipartFile getFile() {
File file = null;
SocialHandleSearchVo searchVo = new SocialHandleSearchVo();
searchVo.setEmpIdcard("340103196311171019");
searchVo.setLimitStart(0);
//searchVo.setLimitEnd(CommonConstants.EXCEL_EXPORT_LIMIT);
searchVo.setLimitEnd(1);
// TODO-需要重写导出sql
List<SocialHandleExportVo> list = tDispatchInfoService.getRecordRosterList(searchVo, null);
if (list != null) {
System.out.println(list.get(0).getEmpIdcard() + list.get(0).getPensionStart());
String filePath = "socialFile" + DateUtil.getThisTime();
EasyExcelFactory.write(filePath, TSalaryAccountExportByEkpVo.class).sheet("社保明细").doWrite(list);
file = new File(filePath);
}
if (file != null) {
return getMultipartFile(file);
}
return null;
}
public static MultipartFile getMultipartFile(File file) {
FileItem item = new DiskFileItemFactory().createItem("file", MediaType.MULTIPART_FORM_DATA_VALUE, true, file.getName());
try (InputStream input = new FileInputStream(file); OutputStream os = item.getOutputStream()) {
// 流转移
IOUtils.copy(input, os);
} catch (Exception e) {
throw new IllegalArgumentException("Invalid file: " + e, e);
}
return new CommonsMultipartFile(item);
}
public R<List<ErrorMessage>> importDiy(InputStream inputStream) {
List<ErrorMessage> errorMessageList = new ArrayList<>();
ExcelUtil<TSocialSoldierReturnErrorVo> util1 = new ExcelUtil<>(TSocialSoldierReturnErrorVo.class);
// 写法2:
// 匿名内部类 不用额外写一个DemoDataListener
// 这里 需要指定读用哪个class去读,然后读取第一个sheet 文件流会自动关闭
try {
EasyExcel.read(inputStream, TSocialSoldierReturnErrorVo.class, new ReadListener<TSocialSoldierReturnErrorVo>() {
/**
* 单次缓存的数据量
*/
public static final int BATCH_COUNT = CommonConstants.BATCH_COUNT;
/**
*临时存储
*/
private List<TSocialSoldierReturnErrorVo> cachedDataList = ListUtils.newArrayListWithExpectedSize(BATCH_COUNT);
@Override
public void invoke(TSocialSoldierReturnErrorVo data, AnalysisContext context) {
ReadRowHolder readRowHolder = context.readRowHolder();
Integer rowIndex = readRowHolder.getRowIndex();
data.setRowIndex(rowIndex+1);
ErrorMessage errorMessage = util1.checkEntity(data, data.getRowIndex());
if (Common.isNotNull(errorMessage)){
errorMessageList.add(errorMessage);
}else {
cachedDataList.add(data);
}
if (cachedDataList.size() >= BATCH_COUNT) {
saveData();
// 存储完成清理 list
cachedDataList = ListUtils.newArrayListWithExpectedSize(BATCH_COUNT);
}
}
@Override
public void doAfterAllAnalysed(AnalysisContext context) {
saveData();
}
/**
* 加上存储数据库
*/
private void saveData() {
log.info("{}条数据,开始存储数据库!", cachedDataList.size());
importTSocialInfo(cachedDataList,errorMessageList);
log.info("存储数据库成功!");
}
}).sheet().doRead();
}catch (Exception e){
log.error(CommonConstants.IMPORT_DATA_ANALYSIS_ERROR,e);
return R.failed(CommonConstants.IMPORT_DATA_ANALYSIS_ERROR);
}
return R.ok(errorMessageList);
}
private void importTSocialInfo(List<TSocialSoldierReturnErrorVo> excelVOList, List<ErrorMessage> errorMessageList) {
// 个性化校验逻辑
// 执行数据插入操作 组装
TSocialSoldierReturnErrorVo excel;
for (int i = 0; i < excelVOList.size(); i++) {
excel = excelVOList.get(i);
// 插入
System.out.println(excel.getErrorInfo());
errorMessageList.add(new ErrorMessage(excel.getRowIndex(),CommonConstants.SAVE_SUCCESS));
}
}
}
......@@ -50,4 +50,8 @@ spring:
redis:
host: 127.0.0.1
port: 6379
password: '@yf_2017'
\ No newline at end of file
password: '@yf_2017'
#社保士兵相关属性配置
soldier:
authorizations : Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJmODA2ZjRlYzYzZjY0NjVlOGFlZjRmZmVlOTYwMzcxNiIsInN1YiI6IjIiLCJ1c2VyX3Bob25lIjoiIiwidXNlcl90eXBlIjoiMTAiLCJ1c2VyX25hbWUiOiLmtYvor5UiLCJpc19hcHAiOiIxIiwiVXNlcklkIjoiMiIsIm5iZiI6MTcxMjg5Mjk1OCwiZXhwIjoxNzIzMjYwOTU4LCJpYXQiOjE3MTI4OTI5NTh9.oTmhLfv1tLq8aPOfO3LeqM1IDYT76YGXkqpz3dwBX4M
urlPre : http://172.16.24.66:55555
\ No newline at end of file
......@@ -50,4 +50,8 @@ spring:
redis:
host: 192.168.0.153
port: 22379
password: '@yf_2022'
\ No newline at end of file
password: '@yf_2022'
#社保士兵相关属性配置
soldier:
authorizations: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJmODA2ZjRlYzYzZjY0NjVlOGFlZjRmZmVlOTYwMzcxNiIsInN1YiI6IjIiLCJ1c2VyX3Bob25lIjoiIiwidXNlcl90eXBlIjoiMTAiLCJ1c2VyX25hbWUiOiLmtYvor5UiLCJpc19hcHAiOiIxIiwiVXNlcklkIjoiMiIsIm5iZiI6MTcxMjg5Mjk1OCwiZXhwIjoxNzIzMjYwOTU4LCJpYXQiOjE3MTI4OTI5NTh9.oTmhLfv1tLq8aPOfO3LeqM1IDYT76YGXkqpz3dwBX4M
urlPre: http://172.16.24.66:55555
\ No newline at end of file
......@@ -50,4 +50,8 @@ spring:
redis:
host: 192.168.1.65
port: 22379
password: '@yf_2017'
\ No newline at end of file
password: '@yf_2017'
#社保士兵相关属性配置
soldier:
authorizations : Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJmODA2ZjRlYzYzZjY0NjVlOGFlZjRmZmVlOTYwMzcxNiIsInN1YiI6IjIiLCJ1c2VyX3Bob25lIjoiIiwidXNlcl90eXBlIjoiMTAiLCJ1c2VyX25hbWUiOiLmtYvor5UiLCJpc19hcHAiOiIxIiwiVXNlcklkIjoiMiIsIm5iZiI6MTcxMjg5Mjk1OCwiZXhwIjoxNzIzMjYwOTU4LCJpYXQiOjE3MTI4OTI5NTh9.oTmhLfv1tLq8aPOfO3LeqM1IDYT76YGXkqpz3dwBX4M
urlPre : http://172.16.24.66:55555
\ No newline at end of file
......@@ -1238,6 +1238,18 @@
<include refid="where_getSocialRecordRoster"/>) a
</select>
<!-- hgw 2024-5-10 10:42:33 社保士兵列表查询 -->
<select id="getTSocialSoldierHandlePage" resultMap="dispatchPageMap">
SELECT
<include refid="Base_Column_List"/>
,a.SOCIAL_HOUSEHOLD_NAME,s.YGS_HANDLE_STATUS,s.YSD_HANDLE_STATUS
,s.YGS_REMARK,s.YSD_REMARK,s.YGS_REMARK_OLD,s.YSD_REMARK_OLD
FROM t_dispatch_info a
left join t_social_info s on a.SOCIAL_ID = s.id
left join t_dispatch_social_fund_info h on a.id = h.REDUCE_SOCIAL_FUND_ID
<include refid="where_getSocialSoldier"/>
</select>
<!--tDispatchInfo 社保办理数据查询-->
<select id="getTDispatchSocialHandlePage" resultMap="dispatchPageMap">
SELECT
......@@ -1247,6 +1259,7 @@
left join t_social_info s on a.SOCIAL_ID = s.id
left join t_dispatch_social_fund_info h on a.id = h.REDUCE_SOCIAL_FUND_ID
<include refid="where_getSocialRecordRoster"/>
and s.DELETE_FLAG = 0
</select>
<!--tDispatchInfo 社保办理数据查询-->
......@@ -1618,21 +1631,18 @@
order by a.APPLY_NO desc
</where>
</select>
<!-- 社保办理查询 -->
<sql id="where_getSocialRecordRoster">
<where>
s.DELETE_FLAG = 0
<if test="idsStr != null and idsStr.size > 0">
AND a.ID in
<foreach item="items" index="index" collection="idsStr" open="(" separator="," close=")">
#{items}
</foreach>
</if>
/** 社保办理状态:0待办理/1已办理2办理失败3已派减4 办理中 5 部分办理失败 派单社保办理状态 0 未办理 1 全部办理成功(原-已办理) 2 全部办理失败(原-办理失败) 3 部分办理成功 4 办理中 **/
/*社保代办理 1.派单审核通过 2.派增(type=0):待办理(social_handle_status='0') or 派减(type=1):已办理完成或部分办理失败 且已派减*/
AND a.social_id is not null
AND a.STATUS = "2"
and (( a.type = '0' AND (s.HANDLE_STATUS = "0" or s.HANDLE_STATUS = "4") ) or ( a.type ='1' AND (if(ifnull(h.id,0) != '0',h.HANDLE_STATUS,s.HANDLE_STATUS) in ('1','5','6','3','7') or (s.HANDLE_STATUS in ('1','5','6','3','7') and s.REDUCE_CAN = '1')) ))
and a.SOCIAL_HANDLE_STATUS in ('0','4')
and (s.YGS_HANDLE_STATUS in ('0','5') or s.YSD_HANDLE_STATUS in ('0','5') )
<!--<if test="tDispatchInfo.status != null and tDispatchInfo.status.trim() != ''">
/*待办理组合判断*/
......@@ -1654,13 +1664,75 @@
</if>
</if>
</if>-->
<include refid="where_getSocialRecordRoster_base"/>
</where>
</sql>
<!-- 社保士兵列表查询 -->
<sql id="where_getSocialSoldier">
<where>
s.DELETE_FLAG = 0
/** 社保办理状态:0待办理/1已办理2办理失败3已派减4 办理中 5 部分办理失败 派单社保办理状态 0 未办理 1 全部办理成功(原-已办理) 2 全部办理失败(原-办理失败) 3 部分办理成功 4 办理中 **/
/*社保代办理 1.派单审核通过 2.派增(type=0):待办理(social_handle_status='0') or 派减(type=1):已办理完成或部分办理失败 且已派减*/
AND a.social_id is not null
AND a.STATUS = "2"
and (( a.type = '0' AND (s.HANDLE_STATUS = "0" or s.HANDLE_STATUS = "4") ) or ( a.type ='1' AND (if(ifnull(h.id,0) != '0',h.HANDLE_STATUS,s.HANDLE_STATUS) in ('1','5','6','3','7') or (s.HANDLE_STATUS in ('1','5','6','3','7') and s.REDUCE_CAN = '1')) ))
and a.SOCIAL_HANDLE_STATUS in ('0','4')
and a.AUTO_FLAG = '0'
<!--<if test="tDispatchInfo.status != null and tDispatchInfo.status.trim() != ''">
/*待办理组合判断*/
<if test="'2'.toString() == tDispatchInfo.status.trim() and tDispatchInfo.typeSub != null ">
/*社保代办理*/
<if test=" '0'.toString()==tDispatchInfo.typeSub.trim() ">
<if test="tDispatchInfo.socialHandleStatus != null and tDispatchInfo.socialHandleStatus != ''">
</if>
<if test="tDispatchInfo.socialHandleStatus == null or tDispatchInfo.socialHandleStatus == ''">
and (( a.type = '0' AND b.HANDLE_STATUS in ('0','4')) or ( a.type ='1' AND b.HANDLE_STATUS in ('1','5') and b.REDUCE_CAN = '1'))
and a.SOCIAL_HANDLE_STATUS in ('0','4')
</if>
</if>
/* 公积金办理*/
<if test=" '1'.toString()==tDispatchInfo.typeSub.trim() ">
and (( a.type = '0' AND c.HANDLE_STATUS = '0') or ( a.type ='1' AND c.HANDLE_STATUS = '1' and c.REDUCE_CAN = '1'))
and a.FUND_HANDLE_STATUS='0'
</if>
</if>
</if>-->
<include refid="where_getSocialRecordRoster_base"/>
<if test="tDispatchInfo != null">
<if test="tDispatchInfo.ygsHandleStatus != null and tDispatchInfo.ygsHandleStatus.trim() != ''">
AND s.YGS_HANDLE_STATUS = #{tDispatchInfo.ygsHandleStatus}
</if>
<if test="tDispatchInfo.ysdHandleStatus != null and tDispatchInfo.ysdHandleStatus.trim() != ''">
AND s.YSD_HANDLE_STATUS = #{tDispatchInfo.ysdHandleStatus}
</if>
<if test="tDispatchInfo.ygsRemark != null and tDispatchInfo.ygsRemark.trim() != ''">
AND s.YGS_REMARK like concat('%',#{tDispatchInfo.ygsRemark},'%')
</if>
<if test="tDispatchInfo.ysdRemark != null and tDispatchInfo.ysdRemark.trim() != ''">
AND s.YSD_REMARK like concat('%',#{tDispatchInfo.ysdRemark},'%')
</if>
</if>
</where>
</sql>
<sql id="where_getSocialRecordRoster_base">
<if test="idsStr != null and idsStr.size > 0">
AND a.ID in
<foreach item="items" index="index" collection="idsStr" open="(" separator="," close=")">
#{items}
</foreach>
</if>
<if test="tDispatchInfo != null">
<if test="tDispatchInfo.empTypeList != null and tDispatchInfo.empTypeList.length>0">
AND a.EMP_TYPE IN
<foreach collection="tDispatchInfo.empTypeList" item="item" index="index" open="(" separator="," close=")">
#{item}
</foreach>
</if>
<if test="tDispatchInfo != null">
<if test="tDispatchInfo.dispatchItems != null and tDispatchInfo.dispatchItems.size >0">
AND
<foreach item="item" index="index" collection="tDispatchInfo.dispatchItems" open="(" separator="or" close=")">
......@@ -1736,9 +1808,9 @@
AND a.EXPORT_SOCIAL_FLAG = ${tDispatchInfo.exportSocialFlag}
</if>
</if>
</where>
</sql>
<sql id="where_getSocialRecordNoPage">
<where>
s.DELETE_FLAG = 0
......@@ -2224,14 +2296,19 @@
OR ( APPLY_END_DATE IS NULL OR APPLY_END_DATE = '' ))
GROUP BY A.`NAME`
</select>
<select id="getAutoFlag" resultType="java.util.Map">
select a.id,b.AUTO_STATUS
<resultMap id="autoFlagMap" type="com.yifu.cloud.plus.v1.yifu.social.vo.AutoFlagVo">
<result property="dispatchId" column="dispatchId"/>
<result property="autoFlag" column="autoFlag"/>
</resultMap>
<select id="getAutoFlag" resultMap="autoFlagMap">
select a.id as "dispatchId",
b.AUTO_STATUS as 'autoFlag'
FROM t_dispatch_info a
LEFT JOIN sys_house_hold_info b on a.SOCIAL_HOUSEHOLD_NAME=b.`NAME` and b.TYPE='0'
where a.SOCIAL_HOUSEHOLD_NAME is not null
and a.id in
<foreach item="item" index="index" collection="idsList" open="(" separator="," close=")">
#{item.id}
#{item}
</foreach>
</select>
</mapper>
......@@ -136,6 +136,14 @@
<result property="personalSocialSum" column="PERSONAL_SOCIAL_SUM"/>
<result property="firstPayTime" column="FIRST_PAY_TIME"/>
<!-- 社保士兵新增字段: -->
<result property="ygsHandleStatus" column="YGS_HANDLE_STATUS"/>
<result property="ysdHandleStatus" column="YSD_HANDLE_STATUS"/>
<result property="ygsRemark" column="YGS_REMARK"/>
<result property="ysdRemark" column="YSD_REMARK"/>
<result property="ygsRemarkOld" column="YGS_REMARK_OLD"/>
<result property="ysdRemarkOld" column="YSD_REMARK_OLD"/>
</resultMap>
<sql id="Base_Column_List">
a.ID,
......@@ -239,7 +247,15 @@
a.PAY_POLICY,
a.LOWER_LIMIT,
a.UPPER_LIMIT,a.UNIT_SOCIAL_SUM,a.PERSONAL_SOCIAL_SUM,
a.FIRST_PAY_TIME
a.FIRST_PAY_TIME,
a.YGS_HANDLE_STATUS,
a.YSD_HANDLE_STATUS,
a.YGS_REMARK,
a.YSD_REMARK,
a.YGS_REMARK_OLD,
a.YSD_REMARK_OLD
</sql>
<sql id="tSocialInfo_where">
<if test="tSocialInfo != null">
......@@ -534,7 +550,21 @@
<if test="tSocialInfo.updateTime != null">
AND a.UPDATE_TIME = #{tSocialInfo.updateTime}
</if>
</if>
<if test="tSocialInfo.ygsHandleStatus != null and tSocialInfo.ygsHandleStatus.trim() != ''">
AND a.YGS_HANDLE_STATUS = #{tSocialInfo.ygsHandleStatus}
</if>
<if test="tSocialInfo.ysdHandleStatus != null and tSocialInfo.ysdHandleStatus.trim() != ''">
AND a.YSD_HANDLE_STATUS = #{tSocialInfo.ysdHandleStatus}
</if>
<if test="tSocialInfo.ygsRemark != null and tSocialInfo.ygsRemark.trim() != ''">
AND a.YGS_REMARK like concat('%',#{tSocialInfo.ygsRemark},'%')
</if>
<if test="tSocialInfo.ysdRemark != null and tSocialInfo.ysdRemark.trim() != ''">
AND a.YSD_REMARK like concat('%',#{tSocialInfo.ysdRemark},'%')
</if>
</if>
</sql>
<!--tSocialInfo简单分页查询-->
<select id="getTSocialInfoPage" resultMap="tSocialInfoMap">
......
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