Commit db9b1c9d authored by hongguangwu's avatar hongguangwu

Merge branch 'MVP1.7.10-Friend' into MVP1.7.11

parents 96feba11 4048f3ff
......@@ -65,7 +65,7 @@ public class TSocialFriendBackLog {
@ExcelAttribute(name = "类型")
@ExcelProperty("类型")
@Schema(description = "类型1社保增 2社保减 3医保增 4医保减 5推送的日志 6社保图片路径7医保图片路径11社保增拉取 12社保减拉取 13医保增拉取 14医保减拉取")
@Schema(description = "类型1社保增 2社保减 3医保增 4医保减 5推送的日志 6社保图片路径7医保图片路径11社保增拉取 12社保减拉取 13医保增拉取 14医保减拉取16社保单个图片17医保单个图片")
private Integer type;
/**
......
......@@ -5,6 +5,7 @@ import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* @Author hgw
......@@ -82,6 +83,8 @@ public class SociaFriendYgsAddVo implements Serializable {
// 企业职工社会保险增员花名册 qyzgshbxzyhmc
private String qyzgshbxzyhmc;
// 单个附件list
private List<String> imgList;
// 当前行政经办区——2025-3-31 10:23:02 盛宇与税友沟通,可以默认安徽省,暂时不用这个字段了,后面有特殊要求再加
/*@ExcelProperty("当前行政经办区
private String dqxzjbq*/
......@@ -109,4 +112,10 @@ public class SociaFriendYgsAddVo implements Serializable {
@ExcelProperty("备案解除二级原因")
private String bajcejyy;
@ExcelProperty("是否单个")
private String isSingle;
// 用来获取单个推送的附件
@ExcelProperty("派单ID")
private String dispatchId;
}
......@@ -152,12 +152,20 @@ public class SocialFriendConfig {
if (Common.isNotNull(vo.getQyzgshbxzyhmc())) {
JSONArray qyzgshbxzyhmclbArr = new JSONArray();
qyzgshbxzyhmclbArr.add(vo.getQyzgshbxzyhmc());
if (vo.getImgList() != null && !vo.getImgList().isEmpty()) {
// 税友新附件接口说用原来的:那就一批任务里面用一份文件就可以了 还是原来的那个字段 2025-5-16 16:57:00 王赣松
qyzgshbxzyhmclbArr.addAll(vo.getImgList());
}
json.put("qyzgshbxzyhmclb", qyzgshbxzyhmclbArr);
} else if (Common.isNotNull(vo.getQyzgjbylbxcbdjb())) {
JSONArray qyzgshbxzyhmclbArr = new JSONArray();
qyzgshbxzyhmclbArr.add(vo.getQyzgjbylbxcbdjb());
if (vo.getImgList() != null && !vo.getImgList().isEmpty()) {
qyzgshbxzyhmclbArr.addAll(vo.getImgList());
}
json.put("qyzgshbxzyhmclb", qyzgshbxzyhmclbArr);
}
HttpEntity<String> formEntity = new HttpEntity<>(json.toString(), headers);
// 推的json
TSocialFriendBackLog backLogPush = new TSocialFriendBackLog();
......@@ -245,12 +253,13 @@ public class SocialFriendConfig {
// 行政区划代码 户里的缴纳地,精确到市 "340100"
HttpEntity<String> formEntity = new HttpEntity<>(json.toString(), headers);
backLog.setLogInfo(String.valueOf(formEntity));
backLog.setCreateTime(LocalDateTime.now());
String dataResultList = restTemplate.postForObject(appAddUrl, formEntity, String.class);
// {"head":{"code":"00000000","description":"成功","msg":"成功","time":"2024-12-06 17:10:26","status":"Y"
// ,"body":{"requestId":"85440b327d71466abcd9c5c81d5bb172"
if (Common.isNotNull(dataResultList)) {
backLog.setLogInfo(dataResultList);
backLog.setCreateTime(LocalDateTime.now());
JSONObject dataObject = JSON.parseObject(dataResultList);
String head = dataObject.getString("head");
if (Common.isNotNull(head)) {
......@@ -262,6 +271,8 @@ public class SocialFriendConfig {
urlStr = bodyObject.getString("wjlj");
}
}
} else {
backLog.setSocialId(appAddUrl+"返回dataResultList为空");
}
return urlStr;
}
......
......@@ -531,7 +531,7 @@ public class TDispatchInfoController {
try {
if (Common.isNotNull(requestId)) {
//主动释放锁
return tDispatchInfoService.addApplyAudit(idList,auditStatus,auditRemark,remark);
return tDispatchInfoService.addApplyAudit(idList,auditStatus,auditRemark,remark, isSingleAudit);
} else {
return R.failed(ResultConstants.NO_GETLOCK_DATA);
}
......
......@@ -295,4 +295,13 @@ public interface TDispatchInfoMapper extends BaseMapper<TDispatchInfo> {
HouseNameConfigVo getFundSumExportVoTwo(@Param("houseName") String houseName,@Param("tDispatchInfo") SocialHandleSearchVo dispatchInfo);
List<AutoFlagVo> getAutoFlag(@Param("idsList")List<String> idsList);
/**
* @param idsList 派单IDlist
* @Description: 获取单个的推送的户的派单ID
* @Author: hgw
* @Date: 2025/5/12 18:31
* @return: java.util.List<java.lang.String>
**/
List<String> getSingleFlagMap(@Param("idsList")List<String> idsList);
}
......@@ -80,9 +80,11 @@ public interface TDispatchInfoService extends IService<TDispatchInfo> {
DispatchDetailVo getSocialAndFundInfoById(String id);
List<ErrorMessage> addBatchApplyAudit(List<String> idsList, YifuUser user, int flag, String auditStatus, String auditRemark, String remark);
List<ErrorMessage> addBatchApplyAudit(List<String> idsList, YifuUser user, int flag, String auditStatus
, String auditRemark, String remark, String isSingleAudit);
R<List<ErrorMessage>> addApplyAudit(List<String> ids, String auditStatus, String auditRemark, String remark);
R<List<ErrorMessage>> addApplyAudit(List<String> ids, String auditStatus, String auditRemark, String remark
, String isSingleAudit);
// isAutoFlag:是否社保士兵的自动办理,true :是
R<List<ErrorMessage>> addApplyHandle(List<String> ids, String typeSub, String handleStatus, String handleRemark, String socialType, String remark, YifuUser user, boolean isAutoHandle);
......
......@@ -3511,11 +3511,12 @@ public class TDispatchInfoServiceImpl extends ServiceImpl<TDispatchInfoMapper, T
* @Author fxj
* @Description 派单申请批量审核
* @Date 16:54 2022/7/25
* @Param
* @Param isSingleAudit 1:单个审核接口并且户类型为单个,即时推送税友
* @return
**/
@Override
public List<ErrorMessage> addBatchApplyAudit(List<String> idsList, YifuUser user, int flag, String auditStatus, String auditRemark, String remark) {
public List<ErrorMessage> addBatchApplyAudit(List<String> idsList, YifuUser user, int flag, String auditStatus
, String auditRemark, String remark, String isSingleAudit) {
List<ErrorMessage> errorList = new ArrayList<>();
if (!Common.isNotNull(idsList)) {
errorList.add(new ErrorMessage(-1, CommonConstants.PARAM_IS_NOT_ERROR));
......@@ -3526,6 +3527,9 @@ public class TDispatchInfoServiceImpl extends ServiceImpl<TDispatchInfoMapper, T
// 获取所有派单对应的自动化配置信息
Map<String,String> autoFlagMap = new HashMap<>();
autoFlagMap = getAutoFlagMap(idsList, autoFlagMap);
// 户配置为单个推送的派单
Map<String,String> singleFlagMap = new HashMap<>();
singleFlagMap = getSingleFlagMap(idsList, singleFlagMap);
if (Common.isNotNull(dispatchs)) {
// 获取所有派单查询信息
Map<String,TSocialFundInfo> socialFundMap = initSocialFundMap(dispatchs);
......@@ -3544,6 +3548,7 @@ public class TDispatchInfoServiceImpl extends ServiceImpl<TDispatchInfoMapper, T
TDispatchSocialFundInfo socialFundInfo;
// 是否自动化办理,true:推送到社保士兵
boolean isAuto;
for (TDispatchInfo dis : dispatchs) {
autoFlag = autoFlagMap.get(dis.getId());
if (Common.isEmpty(autoFlag)){
......@@ -3572,6 +3577,15 @@ public class TDispatchInfoServiceImpl extends ServiceImpl<TDispatchInfoMapper, T
errorList.add(new ErrorMessage(-1, "派单非待审核状态,禁止操作:" + dis.getEmpName()));
continue;
}
// 批量审核+审核为自动化+户配置为单个推送
if (!CommonConstants.ONE_STRING.equals(isSingleAudit)
&& singleFlagMap.get(dis.getId()) != null
&& CommonConstants.THREE_STRING.equals(auditStatus)
&& null != socialInfo) {
// 自动忽略这种社保,要单个审核并选择上传附件才行
errorList.add(new ErrorMessage(-1, "户配置为单个推送,已跳过此条,请单个审核:" + dis.getEmpName()));
continue;
}
if (null != socialInfo) {
// 派增审核
if (CommonConstants.dingleDigitStrArray[0].equals(dis.getType())){
......@@ -3627,7 +3641,7 @@ public class TDispatchInfoServiceImpl extends ServiceImpl<TDispatchInfoMapper, T
}
}
//自动化处理,如果未配置还是人工处理
if (CommonConstants.THREE_STRING.equals(auditStatus)){
if (CommonConstants.THREE_STRING.equals(auditStatus)) {
// 初始化之前,保留原状态给 自动化办理查询使用 hgw 2025-4-27 17:37:09
socialInfo.setAddYgsHandleStatus(socialInfo.getYgsHandleStatus());
socialInfo.setAddYsdHandleStatus(socialInfo.getYsdHandleStatus());
......@@ -3799,6 +3813,7 @@ public class TDispatchInfoServiceImpl extends ServiceImpl<TDispatchInfoMapper, T
ServiceUtil.runTimeExceptionDiy("更新人员档案、项目档案、合同状态异常:" + (Common.isNotNull(res)?res.getMsg():CommonConstants.EMPTY_STRING));
}
}
// 非(批量审核+审核为自动化+户配置为单个推送),才可以改社保
if (CommonConstants.ONE_INT == flag && flagTemp){
if (CommonConstants.dingleDigitStrArray[0].equals(dis.getType())){
sf.setSocialStatus(CommonConstants.FOUR_STRING);
......@@ -3839,8 +3854,10 @@ public class TDispatchInfoServiceImpl extends ServiceImpl<TDispatchInfoMapper, T
}
}
dis.setIsSingle(isSingleAudit);
baseMapper.updateById(dis);
socialFundMapper.updateById(sf);
// 非(批量审核+审核为自动化+户配置为单个推送),才可以改社保
if (isAuto) {
TSocialFreindSet set = tSocialFreindSetService.getById("1");
// 是否推送税友,默认不是,推送到士兵
......@@ -3851,7 +3868,7 @@ public class TDispatchInfoServiceImpl extends ServiceImpl<TDispatchInfoMapper, T
&& set != null && Common.isNotNull(set.getType()) && set.getType() == 1) {
isFriend = true;
}
socialTask.pushSoldier(dis.getId(), isFriend);
socialTask.pushSoldier(dis.getId(), isFriend, isSingleAudit);
}
//派减的申请审核完更新社保公积金查询快照表
......@@ -3926,6 +3943,19 @@ public class TDispatchInfoServiceImpl extends ServiceImpl<TDispatchInfoMapper, T
return autoFlagMap;
}
private Map<String, String> getSingleFlagMap(List<String> idsList, Map<String, String> singleFlagMap) {
List<String> singleFlagList = baseMapper.getSingleFlagMap(idsList);
if (Common.isNotNull(singleFlagList)){
if (Common.isNotNull(singleFlagMap)){
singleFlagMap = new HashMap<>();
}
for (String dispatchId : singleFlagList){
singleFlagMap.put(dispatchId, CommonConstants.ONE_STRING);
}
}
return singleFlagMap;
}
private void initReduceStatus(TSocialFundInfo sf, TSocialInfo socialInfo) {
// 各个明细项的可派减项为待办理
if (CommonConstants.ONE_STRING.equals(sf.getPensionHandle()) || CommonConstants.FOUR_STRING.equals(sf.getPensionHandle())){
......@@ -3966,10 +3996,12 @@ public class TDispatchInfoServiceImpl extends ServiceImpl<TDispatchInfoMapper, T
}
}
// String isSingleAudit 1:单个审核接口并且户类型为单个,即时推送税友
@Transactional(rollbackFor = Exception.class)
@ShardingTransactionType(TransactionType.BASE)
@Override
public R<List<ErrorMessage>> addApplyAudit(List<String> ids, String auditStatus, String auditRemark, String remark) {
public R<List<ErrorMessage>> addApplyAudit(List<String> ids, String auditStatus, String auditRemark, String remark
, String isSingleAudit) {
YifuUser user = SecurityUtils.getUser();
if (null == user) {
return R.failed(CommonConstants.USER_FAIL);
......@@ -3988,7 +4020,7 @@ public class TDispatchInfoServiceImpl extends ServiceImpl<TDispatchInfoMapper, T
} else {
return R.failed("派单审核状态参数异常:0待审核 1审核通过 2审核不通过");
}
List<ErrorMessage> errorInfo = addBatchApplyAudit(ids, user, flag, auditStatus, Common.isNullToString(auditRemark),remark);
List<ErrorMessage> errorInfo = addBatchApplyAudit(ids, user, flag, auditStatus, Common.isNullToString(auditRemark),remark, isSingleAudit);
return R.ok(errorInfo,"派单审核结果:");
} catch (Exception e) {
log.error("派单审核异常:" + e.getMessage());
......
......@@ -39,12 +39,14 @@ import com.yifu.cloud.plus.v1.yifu.social.util.ExcelToImage;
import com.yifu.cloud.plus.v1.yifu.social.vo.*;
import lombok.AllArgsConstructor;
import lombok.extern.log4j.Log4j2;
import org.apache.commons.io.IOUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;
import java.io.*;
import java.net.URL;
import java.time.LocalDateTime;
import java.util.*;
import java.util.concurrent.atomic.AtomicInteger;
......@@ -99,6 +101,7 @@ public class TSocialFriendPushServiceImpl extends ServiceImpl<TSocialFriendMappe
TSocialFreindSet set = tSocialFreindSetService.getById("1");
if (set != null && Common.isNotNull(set.getType()) && 1 == set.getType()) {
// 离职原因Map,将离职原因翻译为税友的字典
Map<String, TSocialFriendReduceSet> reduceMap = tSocialFriendReduceSetService.getFriendReduceMap();
// 获取时间限制配置(获取 当月启用 的配置)
......@@ -174,6 +177,8 @@ public class TSocialFriendPushServiceImpl extends ServiceImpl<TSocialFriendMappe
SociaFriendYgsAddVo vo;
int i=1;
TSocialFriendReduceSet reduceSet;
// 是否为单个推送(派单审核时定性的)
boolean isSingle;
for (int index = 0 ; index < ygsAddlist.size(); index++) {
vo = ygsAddlist.get(index);
// 派减离职原因转化:
......@@ -214,12 +219,19 @@ public class TSocialFriendPushServiceImpl extends ServiceImpl<TSocialFriendMappe
&& !vo.getSocialHouseholdName().equals(ygsAddlist.get(index+1).getSocialHouseholdName())) {
nextFlag = true;
}
if (nextFlag || i % 10 == 0 || index >= ygsAddlist.size()-1) {
isSingle = Common.isNotNull(vo.getIsSingle()) && CommonConstants.ONE_STRING.equals(vo.getIsSingle());
if (isSingle || nextFlag || i % 10 == 0 || index >= ygsAddlist.size()-1) {
// 房工接口,获取 企业职工社会保险增员花名册 url
urlR = doExportRoster(vo.getSocialId(), String.valueOf(type), vo.getUnitCreditCode(), listVo);
if (urlR != null && urlR.getCode() == 200 && Common.isNotNull(urlR.getData())) {
vo.setQyzgshbxzyhmc(urlR.getData());
}
if (isSingle && Common.isNotNull(vo.getDispatchId())) {
// 获取单个附件并推送税友,返回 imgList 到Vo里
this.setImgList(vo);
}
i=0;
nextFlag = false;
requestId = socialFriendConfig.pushFriendByInfo(restTemplate, vo, listVo, type, thisTime, backLogList);
......@@ -278,6 +290,57 @@ public class TSocialFriendPushServiceImpl extends ServiceImpl<TSocialFriendMappe
}
}
/**
* @param vo
* @Description: 获取单个附件并推送税友,返回 imgList 到Vo里
* @Author: hgw
* @Date: 2025/4/28 17:05
* @return: void
**/
private void setImgList(SociaFriendYgsAddVo vo) {
URL url;
InputStream inStream = null;
List<String> imgList = new ArrayList<>();
List<TAttaInfo> attaInfoList = attaInfoMapper.getTAttaInfoListByDoMainId(vo.getDispatchId());
if (attaInfoList != null && !attaInfoList.isEmpty()) {
String base64String;
TSocialFriendBackLog backLog;
String imgUrl;
for (TAttaInfo attaInfo : attaInfoList) {
if (Common.isNotNull(attaInfo.getAttaSrc())) {
// 获取附件url
url = ossUtil.getObjectUrl(null, attaInfo.getAttaSrc());
if (url != null) {
try {
inStream = url.openStream();
// inStream转化为base64String
base64String = Base64.getEncoder().encodeToString(IOUtils.toByteArray(inStream));
backLog = new TSocialFriendBackLog();
backLog.setSocialId(vo.getSocialId());
backLog.setType(16);
imgUrl = socialFriendConfig.uploadPng(restTemplate, attaInfo.getAttaName(), base64String, backLog);
tSocialFriendBackLogService.save(backLog);
if (Common.isNotNull(imgUrl)){
imgList.add(imgUrl);
}
} catch (Exception e){
log.info("税友单个图片上传失败!");
} finally {
if (null != inStream){
try {
inStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
}
vo.setImgList(imgList);
}
}
/**
* @Description: 推送医保和记录日志
* @Author: hgw
......@@ -1044,6 +1107,7 @@ public class TSocialFriendPushServiceImpl extends ServiceImpl<TSocialFriendMappe
TSocialFriendBackLog backLog = new TSocialFriendBackLog();
backLog.setSocialId(searchVo.getSocialId());
backLog.setType(CommonConstants.SIX_INT);
backLog.setCreateTime(LocalDateTime.now());
R<String> ulrR = excelToImage.excelToImg(inputStreamOut, socialFriendConfig, restTemplate, backLog);
tSocialFriendBackLogService.save(backLog);
return ulrR;
......
......@@ -269,7 +269,7 @@ public class DoSocialTask {
* @return
**/
@Async
public void pushSoldier(String dispatchId, boolean isFriend) {
public void pushSoldier(String dispatchId, boolean isFriend, String isSingleAudit) {
List<String> dispatchIdList = new ArrayList<>();
dispatchIdList.add(dispatchId);
try {
......@@ -280,7 +280,10 @@ public class DoSocialTask {
// 当前默认 安徽省 ,且开关是税友的,才可以税友推送办理
if (isFriend) {
// 断开派单单条推送税友
// tSocialFriendPushService.pushFriend(dispatchIdList);
// 单个审核接口并且户类型为单个,即时推送税友
if (CommonConstants.ONE_STRING.equals(isSingleAudit)) {
tSocialFriendPushService.pushFriend(dispatchIdList);
}
} else {
tSocialSoldierPushService.pushSoldier(dispatchIdList);
}
......
......@@ -43,6 +43,7 @@ public class ExcelToImage {
public R<String> excelToImg(InputStream inputStream , SocialFriendConfig socialFriendConfig
, RestTemplate restTemplate, TSocialFriendBackLog backLog){
backLog.setLogInfo("开始转换excel为图片");
if (null == inputStream || null == socialFriendConfig){
return R.failed(CommonConstants.RESULT_DATA_FAIL+toImagParamError);
}
......@@ -61,10 +62,12 @@ public class ExcelToImage {
file = new File(projectRoot+toImag);
if (file.exists()){
// file 压缩到1M以内
backLog.setLogInfo("压缩大小前");
file = compressImage(projectRoot, toImag, 1024 * 1024);
String key = System.currentTimeMillis() + file.getName();
byte[] fileContent = Files.readAllBytes(file.toPath());
String base64String = Base64.getEncoder().encodeToString(fileContent);
backLog.setLogInfo("转化为base64String");
String url = socialFriendConfig.uploadPng(restTemplate, key, base64String, backLog);
if (Common.isEmpty(url)){
return R.failed(CommonConstants.RESULT_DATA_FAIL+toImagOSSError);
......
......@@ -2750,4 +2750,16 @@
#{item}
</foreach>
</select>
<select id="getSingleFlagMap" resultType="java.lang.String">
select a.id as "dispatchId"
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 b.IS_SINGLE='1'
and a.id in
<foreach item="item" index="index" collection="idsList" open="(" separator="," close=")">
#{item}
</foreach>
</select>
</mapper>
......@@ -79,7 +79,9 @@
s.SOCIAL_PROVINCE socialProvince,
s.SOCIAL_CITY socialCity,
s.SOCIAL_TOWN socialTown,
a.SCHOOL_NAME byyx
a.SCHOOL_NAME byyx,
a.IS_SINGLE isSingle,
a.ID dispatchId
</sql>
......@@ -221,7 +223,9 @@
s.SOCIAL_PROVINCE socialProvince,
s.SOCIAL_CITY socialCity,
s.SOCIAL_TOWN socialTown,
a.SCHOOL_NAME byyx
a.SCHOOL_NAME byyx,
a.IS_SINGLE isSingle,
a.ID dispatchId
<include refid="getSocialSoldierBaseTwo"/>
and a.type = '1' and s.YSD_HANDLE_STATUS in ('0','1','3')
and (
......
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