Compare commits

..

No commits in common. 'master' and 'duhanyu' have entirely different histories.

@ -16,33 +16,6 @@
</description>
<dependencies>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.1.2</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.1.2</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>3.2.1</version>
<exclusions>
<exclusion>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml-schemas</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.sun.mail</groupId>
<artifactId>javax.mail</artifactId>
<version>1.6.2</version>
</dependency>
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>

@ -1,83 +0,0 @@
package com.ruoyi.jjh.declaration.component;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import javax.mail.*;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Properties;
/**
*
* @author du
* @since 2024/12/12 9:55
*/
@Component("EmailEnterImpl")
public class EmailEnterImpl implements EmailEnterService{
/**
*
*/
@Value("${isTiming}")
private Boolean isTiming;
/**
* SMTP
*/
@Value("${smtp}")
private String smtp;
/**
* SMTP IP
*/
@Value("${smtpIp}")
private String smtpIp;
/**
* SMTP
*/
@Value("${smtpDk}")
private String smtpDk;
/**
*
*/
@Override
public Boolean toEnter(String subject, String body,String toEmail) {
// 发件人邮箱的登录凭证
String username = "jjdn@sipac.gov.cn"; // 发件人邮箱用户名(一般为邮箱地址)
String password = "N!4lsU.T_#2T2Z"; // 发件人邮箱的授权码
// 设置邮件服务器属性
Properties properties = new Properties();
properties.put("mail.smtp.host", smtpIp);
properties.put("mail.smtp.port", smtpDk);
properties.put("mail.smtp.auth", "true"); // 启用身份验证
properties.put("mail.smtp.starttls.enable", "true"); // 启用 TLS
// 获取邮件会话
Session session = Session.getInstance(properties, new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password);
}
});
// 获取邮件会话
try {
// 创建邮件消息
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(username));
message.addRecipient(Message.RecipientType.TO, new InternetAddress(toEmail));
message.setSubject(subject);
message.setText(body);
// 发送邮件
Transport.send(message);
System.out.println("邮件发送成功");
} catch (AddressException e) {
e.printStackTrace();
} catch (MessagingException e) {
e.printStackTrace();
}
return null;
}
}

@ -1,13 +0,0 @@
package com.ruoyi.jjh.declaration.component;
/**
*
* @author du
* @since 2024/12/12 9:50
*/
public interface EmailEnterService {
/**
*
*/
Boolean toEnter(String subject, String body,String toEmail);
}

@ -1,13 +1,9 @@
package com.ruoyi.jjh.declaration.component;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.jjh.declaration.service.IBmsEnterpriseBasicInfoService;
import com.ruoyi.jjh.declaration.service.IBmsEnterpriseDirectoryService;
import com.ruoyi.jjh.ent.entity.JContacts;
import com.ruoyi.jjh.ent.entity.JEnterpriseContact;
import com.ruoyi.jjh.ent.entity.JSmartDeclaration;
import com.ruoyi.jjh.ent.service.JContactsService;
import com.ruoyi.jjh.ent.service.JEnterpriseContactService;
import com.ruoyi.jjh.ent.service.JSmartDeclarationService;
import com.ruoyi.jjh.ent.service.SmsAlertsService;
@ -16,14 +12,12 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
/**
*
@ -31,7 +25,7 @@ import java.util.Objects;
* @author du
* @since 2024/7/18 9:55
*/
@Service
@Component("TimingRemind")
public class TimingRemindImpl implements TimingRemindService {
private static final Logger log = LoggerFactory.getLogger(TimingRemindImpl.class);
@ -51,12 +45,6 @@ public class TimingRemindImpl implements TimingRemindService {
@Resource
private JEnterpriseContactService jEnterpriseContactService;
/**
*
*/
@Resource
private JContactsService jContactsService;
/**
*
*/
@ -69,8 +57,6 @@ public class TimingRemindImpl implements TimingRemindService {
@Resource
private SmsAlertsService smsAlertsService;
@Resource
private EmailEnterService emailEnterService;
/**
*
@ -78,9 +64,6 @@ public class TimingRemindImpl implements TimingRemindService {
@Resource
private SysUserMapper sysUserMapper;
@Autowired
private IBmsEnterpriseDirectoryService enterpriseDirectoryService;
/**
*
*/
@ -103,38 +86,15 @@ public class TimingRemindImpl implements TimingRemindService {
/**
*
*/
@Async("chrisThreadPool")
public void getContact(String code, String s) {
if (isTiming) {
try {
List<JEnterpriseContact> list1 = jEnterpriseContactService.lambdaQuery().eq(JEnterpriseContact::getEnterpriseCode, code).list();
if (list1 != null && !list1.isEmpty()) {
list1.forEach(y -> {
//先添加工单再发送短信
//可在导入或者新增的时候将该常用联系人的手机号添加进工单
smsAlertsService.enterSms(y.getEnterpriseName(), s, y.getContactPhone());
log.info(y.getEnterpriseName() + "发送短信成功!");
//发送邮件
emailEnterService.toEnter(y.getEnterpriseName(), s + "此邮件为系统自动发送,无需回复!", y.getContactEmail());
log.info(y.getEnterpriseName() + "发送邮件成功!");
});
} else {
List<JContacts> list = jContactsService.lambdaQuery().eq(JContacts::getTyshxydm, code)
.eq(JContacts::getDefaultcontact, "1").list();
list.forEach(y -> {
//先添加工单再发送短信
smsAlertsService.addSsmPhone(y.getYddh());
//可在导入或者新增的时候将该常用联系人的手机号添加进工单
smsAlertsService.enterSms(y.getQymc(), s, y.getYddh());
log.info(y.getQymc() + "发送短信成功!");
//发送邮件
emailEnterService.toEnter(y.getQymc(), s + "此邮件为系统自动发送,无需回复!", y.getDzyx());
log.info(y.getQymc() + "发送邮件成功!");
});
}
} catch (Exception e) {
throw new ServiceException(code + "发送邮件失败!");
}
List<JEnterpriseContact> list1 = jEnterpriseContactService.lambdaQuery().eq(JEnterpriseContact::getEnterpriseCode, code).list();
list1.forEach(y -> {
//先添加工单再发送短信
//可在导入或者新增的时候将该常用联系人的手机号添加进工单
smsAlertsService.enterSms(y.getEnterpriseName(), s, y.getContactPhone());
log.info(y.getEnterpriseName() + "发送短信成功!");
});
}
}
@ -148,7 +108,7 @@ public class TimingRemindImpl implements TimingRemindService {
SysUser user = new SysUser();
user.setUserType("02");
for (SysUser x : sysUserMapper.selectUserList(user)) {
if ("0".equals(x.getDelFlag()) & "0".equals(x.getStatus())) {
if("0".equals(x.getDelFlag()) & "0".equals(x.getStatus())){
JSmartDeclaration sd = new JSmartDeclaration();
sd.setIsRead(1);
sd.setAlertTime(LocalDateTime.parse(t));
@ -160,19 +120,11 @@ public class TimingRemindImpl implements TimingRemindService {
}
sd.setZwId(x.getUserId());
if (isTiming) {
if (sd.getProjectId() != null && x.getPhonenumber() != null) {
smsAlertsService.enterSms("政府人员-" + x.getNickName(), "您有1个项目自定义通知,请前往工作台查看," + "登录网址为:https://idp.sipac.gov.cn/bms/#/login", x.getPhonenumber());
if (!Objects.equals(x.getEmail(), "") && x.getEmail() != null) {
//发送邮件
emailEnterService.toEnter("政府人员-" + x.getNickName(), "您有1个项目自定义通知,请前往工作台查看," + "登录网址为:https://idp.sipac.gov.cn/bms/#/login" + "此邮件为系统自动发送,无需回复!", x.getEmail());
}
if (sd.getProjectId() != null & !x.getPhonenumber().isEmpty()) {
smsAlertsService.enterSms("政府人员-" + x.getNickName(), "您有1个项目自定义通知,请前往工作台查看", x.getPhonenumber());
}
if (x.getPhonenumber() != null && sd.getProjectId() == null) {
smsAlertsService.enterSms("政府人员-" + x.getNickName(), "您有1个全局自定义通知,请前往工作台查看," + "登录网址为:https://idp.sipac.gov.cn/bms/#/login", x.getPhonenumber());
if (!Objects.equals(x.getEmail(), "") && x.getEmail() != null) {
//发送邮件
emailEnterService.toEnter("政府人员-" + x.getNickName(), "您有1个全局自定义通知,请前往工作台查看," + "登录网址为:https://idp.sipac.gov.cn/bms/#/login" + "此邮件为系统自动发送,无需回复!", x.getEmail());
}
if (!x.getPhonenumber().isEmpty() & sd.getProjectId() == null) {
smsAlertsService.enterSms("政府人员-" + x.getNickName(), "您有1个全局自定义通知,请前往工作台查看", x.getPhonenumber());
}
}
listAdd.add(sd);

@ -13,7 +13,6 @@ public interface TimingRemindService {
*/
void enterpriseTiming(String t, Long id);
/**
*
*/

@ -1,29 +0,0 @@
package com.ruoyi.jjh.declaration.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import java.util.concurrent.Executor;
import java.util.concurrent.ThreadPoolExecutor;
/**
* @author du
* @since 2025/1/7 15:49
*/
@Configuration
@EnableAsync
public class AsyncConfig {
@Bean(name ="chrisThreadPool")
public Executor taskExecutor() {
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
executor.setCorePoolSize(10);
executor.setMaxPoolSize(50);
executor.setQueueCapacity(100);
executor.setThreadNamePrefix("chrisThread-");
executor.setRejectedExecutionHandler(new ThreadPoolExecutor.AbortPolicy());
executor.initialize();
return executor;
}
}

@ -2,18 +2,14 @@ package com.ruoyi.jjh.declaration.controller;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.util.ZipUtil;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import cn.hutool.http.HttpUtil;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.config.RuoYiConfig;
import com.ruoyi.common.constant.Constants;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.framework.config.ServerConfig;
import com.ruoyi.jjh.declaration.entity.BmsDeclarationRecords;
import com.ruoyi.jjh.declaration.entity.dto.ApprovalDeclarationRecordsQueryDto;
import com.ruoyi.jjh.declaration.entity.dto.BmsApprovalInfoUpdateDto;
@ -24,21 +20,26 @@ import com.ruoyi.jjh.declaration.mapper.BmsDeclarationRecordsMapper;
import com.ruoyi.jjh.declaration.service.IBmsDeclarationRecordsService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardCopyOption;
import java.io.FileNotFoundException;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.List;
/**
@ -57,17 +58,15 @@ public class BmsDeclarationRecordsController extends BaseController {
@Value("${ruoyi.profile}")
private String fileAddress;
@Value("${server.port}")
private String port;
@Value("${server.servlet.context-path}")
private String path;
@Resource
private BmsDeclarationRecordsMapper bmsDeclarationRecordsMapper;
@Autowired
private ServerConfig serverConfig;
/**
*
*/
@ -94,7 +93,7 @@ public class BmsDeclarationRecordsController extends BaseController {
@PreAuthorize("@ss.hasAnyRoles('admin,other-gov,gov,ent')")
@ApiOperation(value = "查询在线申报记录列表")
@GetMapping("/list")
public AjaxResult list(Page<BmsDeclarationRecordsQueryVo> page,BmsDeclarationRecordsDto bmsDeclarationRecordsDto) {
public TableDataInfo list(BmsDeclarationRecordsDto bmsDeclarationRecordsDto) {
// 获取当前登录用户是否是企业端
boolean admin = false;
boolean b = false;
@ -108,9 +107,9 @@ public class BmsDeclarationRecordsController extends BaseController {
if (!admin && b) {
bmsDeclarationRecordsDto.setCreditCode(str);
}
Page<BmsDeclarationRecordsQueryVo> bmsDeclarationRecordsQueryVoPage = bmsDeclarationRecordsService.selectBmsDeclarationRecordsList(page
,bmsDeclarationRecordsDto);
return success(bmsDeclarationRecordsQueryVoPage);
startPage();
List<BmsDeclarationRecordsQueryVo> list = bmsDeclarationRecordsService.selectBmsDeclarationRecordsList(bmsDeclarationRecordsDto);
return getDataTable(list);
}
/**
@ -119,47 +118,43 @@ public class BmsDeclarationRecordsController extends BaseController {
// @RequiresPermissions("system:declarationRecords:list")
@GetMapping("/fileList")
@ApiOperation("根据列表id集合压缩所有文件")
public void fileList(@RequestParam(name = "list") List<Long> list, HttpServletResponse response) throws IOException {
public ResponseEntity<byte[]> fileList(@RequestParam(name = "list") List<Long> list) throws FileNotFoundException, UnsupportedEncodingException {
List<BmsDeclarationRecordsQueryVo> rd = bmsDeclarationRecordsMapper.selectDeclarationRecordsToIdList(list);
String fatherFile = fileAddress + "/项目压缩文件";
// 创建父文件目录
String fatherFile = fileAddress + "/" + "项目压缩文件";
FileUtil.mkdir(fatherFile);
for (BmsDeclarationRecordsQueryVo item : rd) {
String itemsFileName = fatherFile + "/" +item.getEnterpriseName()+ item.getProjectName();
FileUtil.mkdir(itemsFileName);
List<String> splitList = bmsDeclarationRecordsService.getAllFile(item.getTemplateJson());
for (String s : splitList) {
// 下载文件
try {
String urls = RuoYiConfig.getProfile() + StringUtils.substringAfter(s, Constants.RESOURCE_PREFIX);
Path sourcePath = Paths.get(urls);
String itemsFileName = fatherFile + "/" + item.getEnterpriseName() + item.getProjectName() + "/" + sourcePath.getFileName();
FileUtil.touch(itemsFileName);
// 目标文件路径
Path targetPath = Paths.get(itemsFileName);
try {
Files.copy(sourcePath, targetPath, StandardCopyOption.REPLACE_EXISTING);
System.out.println("文件成功复制到新的位置!");
} catch (IOException e) {
throw new RuntimeException("暂无该文件!");
}
HttpUtil.downloadFile("http://localhost:" + port + s, itemsFileName);
} catch (Exception e) {
throw new RuntimeException("文件下载失败");
throw new RuntimeException(itemsFileName + "某文件下载失败");
}
}
}
// 压缩后的文件路径
String zipFilePath = fatherFile + ".zip";
// 使用Hutool压缩文件夹
ZipUtil.zip(fatherFile, zipFilePath);
File file = new File(zipFilePath);// 创建File对象
response.setContentType("application/zip");// 设置内容类型为ZIP文件
response.setHeader("Content-Disposition", "attachment; filename=\"file.zip\"");//设置文件名
try (FileInputStream fileInputStream = new FileInputStream(file);
OutputStream outputStream = response.getOutputStream()) {
byte[] buffer = new byte[4096];
int by;
while ((by = fileInputStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, by);
}
}
// 从本地读取压缩文件
File zipFile = FileUtil.file(zipFilePath);
// FileSystemResource resource = new FileSystemResource(zipFile);
// 读取本地压缩文件并转为字节数组
byte[] bytes = FileUtil.readBytes(zipFile);
// 设置响应头
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
headers.setContentDispositionFormData("attachment", URLEncoder.encode("项目压缩文件.zip", "UTF-8"));
// 删除压缩之前的文件夹
FileUtil.del(zipFilePath);
// 删除压缩包
FileUtil.del(fatherFile);
// 创建响应实体
return new ResponseEntity<>(bytes, headers, HttpStatus.OK);
}
/**
@ -181,9 +176,9 @@ public class BmsDeclarationRecordsController extends BaseController {
@Log(title = "在线申报记录", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(HttpServletResponse response, BmsDeclarationRecordsDto bmsDeclarationRecordsDto) {
Page<BmsDeclarationRecordsQueryVo> bmsDeclarationRecordsQueryVoPage = bmsDeclarationRecordsService.selectBmsDeclarationRecordsList(new Page<>(),bmsDeclarationRecordsDto);
List<BmsDeclarationRecordsQueryVo> list = bmsDeclarationRecordsService.selectBmsDeclarationRecordsList(bmsDeclarationRecordsDto);
ExcelUtil<BmsDeclarationRecordsQueryVo> util = new ExcelUtil<BmsDeclarationRecordsQueryVo>(BmsDeclarationRecordsQueryVo.class);
util.exportExcel(response, bmsDeclarationRecordsQueryVoPage.getRecords(), "在线申报记录数据");
util.exportExcel(response, list, "在线申报记录数据");
}
/**

@ -9,26 +9,24 @@ import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.jjh.declaration.entity.BmsEnterpriseBasicInfo;
import com.ruoyi.jjh.declaration.entity.request.EnterpriseInfoRequest;
import com.ruoyi.jjh.declaration.entity.request.EnterpriseInfoWorkRequest;
import com.ruoyi.jjh.declaration.service.IBmsEnterpriseBasicInfoService;
import com.ruoyi.jjh.ent.service.JHeadQuartersRevenueService;
import com.ruoyi.jjh.ent.service.JServicesListService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RequestPart;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
/**
* Controller
@ -44,11 +42,6 @@ public class BmsEnterpriseBasicInfoController extends BaseController {
@Autowired
private IBmsEnterpriseBasicInfoService bmsEnterpriseBasicInfoService;
@Resource
private JServicesListService jServicesListService;
@Resource
private JHeadQuartersRevenueService jHeadQuartersRevenueService;
/**
*
@ -56,8 +49,8 @@ public class BmsEnterpriseBasicInfoController extends BaseController {
@PreAuthorize("@ss.hasAnyRoles('admin,other-gov,gov,sightseer')")
@ApiOperation(value = "查询企业基础信息列表", response = BmsEnterpriseBasicInfo.class)
@GetMapping("/list")
public AjaxResult list(Page<BmsEnterpriseBasicInfo> page, EnterpriseInfoRequest e) {
return success(bmsEnterpriseBasicInfoService.page(page, e));
public AjaxResult list(Page<BmsEnterpriseBasicInfo> page, BmsEnterpriseBasicInfo bmsEnterpriseBasicInfo) {
return success(bmsEnterpriseBasicInfoService.page(page, bmsEnterpriseBasicInfo));
}
/**
@ -77,8 +70,8 @@ public class BmsEnterpriseBasicInfoController extends BaseController {
@ApiOperation(value = "导出企业基础信息列表")
@Log(title = "企业基础信息", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(HttpServletResponse response, EnterpriseInfoRequest e) {
List<BmsEnterpriseBasicInfo> list = bmsEnterpriseBasicInfoService.page(e);
public void export(HttpServletResponse response, BmsEnterpriseBasicInfo bmsEnterpriseBasicInfo) {
List<BmsEnterpriseBasicInfo> list = bmsEnterpriseBasicInfoService.page(bmsEnterpriseBasicInfo);
ExcelUtil<BmsEnterpriseBasicInfo> util = new ExcelUtil<BmsEnterpriseBasicInfo>(BmsEnterpriseBasicInfo.class);
util.exportExcel(response, list, "企业基础信息数据");
}
@ -91,7 +84,7 @@ public class BmsEnterpriseBasicInfoController extends BaseController {
@ApiOperation(value = "导入企业基础信息列表")
@Log(title = "导入企业基础信息列表", businessType = BusinessType.IMPORT)
@PostMapping(value = "/importEnterprise", consumes = "multipart/form-data")
public AjaxResult importEnterprise(@RequestPart("file") MultipartFile file, String type) throws Exception {
public AjaxResult importEnterprise(@RequestPart("file") MultipartFile file) throws Exception {
List<BmsEnterpriseBasicInfo> allList = bmsEnterpriseBasicInfoService.list();
ExcelUtil<BmsEnterpriseBasicInfo> util = new ExcelUtil<>(BmsEnterpriseBasicInfo.class);
List<BmsEnterpriseBasicInfo> proList = util.importExcel(file.getInputStream());
@ -99,11 +92,11 @@ public class BmsEnterpriseBasicInfoController extends BaseController {
if (proList == null || proList.isEmpty()) {
throw new ServiceException("企业导入数据不能为空");
} else {
proList.forEach(entityA -> {
entityA.setType(type != null ? type : "2");
proList.forEach(entityA ->{
entityA.setType(2);
boolean b = allList.stream().anyMatch(entityB -> entityB.getTyshxydm().equals(entityA.getTyshxydm()));
if (b) {
throw new ServiceException(entityA.getQymc() + "在企业库已重复,无法新增!");
if(b){
throw new ServiceException(entityA.getQymc()+"在企业库已重复,无法新增!");
}
});
bmsEnterpriseBasicInfoService.saveBatch(proList);
@ -145,39 +138,4 @@ public class BmsEnterpriseBasicInfoController extends BaseController {
return success(bmsEnterpriseBasicInfoService.getById(id));
}
/**
*
*/
@ApiOperation(value = "将企业库企业更改分类", response = BmsEnterpriseBasicInfo.class)
@PreAuthorize("@ss.hasAnyRoles('admin')")
@PostMapping(value = "/changeType", consumes = "multipart/form-data")
public AjaxResult changeType(@RequestPart("file") MultipartFile file) throws IOException {
List<BmsEnterpriseBasicInfo> list = bmsEnterpriseBasicInfoService.list();
ExcelUtil<BmsEnterpriseBasicInfo> util = new ExcelUtil<>(BmsEnterpriseBasicInfo.class);
List<BmsEnterpriseBasicInfo> proList = util.importExcel(file.getInputStream());
//存储所有导入的信用代码
Set<String> tyshxydmSet = new HashSet<>();
for (BmsEnterpriseBasicInfo y : proList) {
tyshxydmSet.add(y.getTyshxydm());
}
for (BmsEnterpriseBasicInfo x : list) {
if (tyshxydmSet.contains(x.getTyshxydm())) {
if(!"2".equals(x.getType())&& !"3".equals(x.getType())){
x.setType(x.getType()+","+"3");
bmsEnterpriseBasicInfoService.updateById(x);
}
}
}
for (BmsEnterpriseBasicInfo y : list) {
proList.removeIf(x->x.getTyshxydm().equals(y.getTyshxydm()));
}
proList.forEach(x->{
x.setType("3");
bmsEnterpriseBasicInfoService.save(x);
});
return success();
}
}

@ -6,31 +6,26 @@ import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.jjh.declaration.component.EmailEnterService;
import com.ruoyi.jjh.declaration.entity.BmsEnterpriseBasicInfo;
import com.ruoyi.jjh.declaration.entity.BmsEnterpriseDirectory;
import com.ruoyi.jjh.declaration.service.IBmsEnterpriseBasicInfoService;
import com.ruoyi.jjh.declaration.service.IBmsEnterpriseDirectoryService;
import com.ruoyi.jjh.ent.entity.JContacts;
import com.ruoyi.jjh.ent.service.JContactsService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
/**
* Controller
*
* @author farben
* @date 2023-08-3100
* @date 2023-08-31
*/
@Api(tags = "企业名录")
@RestController
@ -39,22 +34,6 @@ public class BmsEnterpriseDirectoryController extends BaseController {
@Autowired
private IBmsEnterpriseDirectoryService bmsEnterpriseDirectoryService;
@Resource
private IBmsEnterpriseBasicInfoService iBmsEnterpriseBasicInfoService;
@Resource
private JContactsService jContactsService;
@Resource
private EmailEnterService emailEnterService;
@ApiOperation(value = "导出用名字和企业库名字做对比企业库没有的企业")
@PostMapping(value = "/g1")
public void check(String email,String user,String toEmail) {
emailEnterService.toEnter(email,user,toEmail);
}
/**
*
*/
@ -118,59 +97,4 @@ public class BmsEnterpriseDirectoryController extends BaseController {
public AjaxResult remove(@PathVariable Long[] ids) {
return toAjax(bmsEnterpriseDirectoryService.deleteBmsEnterpriseDirectoryByIds(ids));
}
/**
*
*/
// @PreAuthorize("@ss.hasAnyRoles('admin')")
// @ApiOperation(value = "导出用名字和企业库名字做对比企业库没有的企业")
// @PostMapping(value = "/check", consumes = "multipart/form-data")
// public void check(@RequestPart("file") MultipartFile file, HttpServletResponse response) throws Exception {
// //利用企业名录的东西来获取所有企业
// ExcelUtil<BmsEnterpriseDirectory> util = new ExcelUtil<>(BmsEnterpriseDirectory.class);
// List<BmsEnterpriseDirectory> proList = util.importExcel(file.getInputStream());
// //获取企业库的所有企业
// List<BmsEnterpriseBasicInfo> list = iBmsEnterpriseBasicInfoService.list();
// Set<String> bNames = list.stream()
// .map(BmsEnterpriseBasicInfo::getQymc)
// .collect(Collectors.toSet());
// List<BmsEnterpriseDirectory> filteredList = proList.stream()
// .filter(a -> !bNames.contains(a.getEnterpriseName()))
// .collect(Collectors.toList());
//// System.out.println(filteredList.size());
// //导出
// util.exportExcel(response, filteredList, "企业名录数据");
// }
/**
*
*/
// @PreAuthorize("@ss.hasAnyRoles('admin')")
// @ApiOperation(value = "查询联系人")
// @PostMapping(value = "/searchContact", consumes = "multipart/form-data")
// public AjaxResult searchContact(@RequestPart("file") MultipartFile file) throws Exception {
// //利用企业名录的东西来获取所有企业
// ExcelUtil<BmsEnterpriseDirectory> util = new ExcelUtil<>(BmsEnterpriseDirectory.class);
// List<BmsEnterpriseDirectory> proList = util.importExcel(file.getInputStream());
// //获取企业库的所有企业
// List<BmsEnterpriseBasicInfo> list = iBmsEnterpriseBasicInfoService.list();
// Set<String> bNames = proList.stream()
// .map(BmsEnterpriseDirectory::getEnterpriseName)
// .collect(Collectors.toSet());
// List<BmsEnterpriseBasicInfo> filteredList = list.stream()
// .filter(a -> bNames.contains(a.getQymc()))
// .collect(Collectors.toList());
//// System.out.println(filteredList.size());
//// System.out.println(proList.size());
// filteredList.forEach(x -> {
// List<JContacts> list1 = jContactsService.lambdaQuery().eq(JContacts::getTyshxydm, x.getTyshxydm()).list();
// if (!list1.isEmpty()) {
// System.out.println(x.getQymc() + "----" + list1.size());
// } else {
// System.out.println(x.getQymc() + "----" + 0);
// }
// });
// return success();
// }
}

@ -84,8 +84,8 @@ public class BmsTemplateInfoController extends BaseController {
@Log(title = "导出模板表单", businessType = BusinessType.EXPORT)
@ApiOperation(value = "导出模板表单")
@GetMapping(value = "/exportTemplate/{id}")
public void exportTemplate(HttpServletResponse response, @PathVariable("id") Long id) {
bmsTemplateInfoService.exportTemplate( response,id);
public void exportTemplate(HttpServletRequest request, HttpServletResponse response, @PathVariable("id") Long id) {
bmsTemplateInfoService.exportTemplate(request, response, id);
}
/**

@ -15,7 +15,6 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
@ -106,19 +105,10 @@ public class BmsTemplateRecordController extends BaseController {
@PreAuthorize("@ss.hasAnyRoles('admin,other-gov')")
@Log(title = "在线模板", businessType = BusinessType.INSERT)
@PostMapping
@Transactional(rollbackFor = Exception.class)
public AjaxResult add(@RequestBody BmsTemplateRecordAddDto bmsTemplateRecordAddDto) {
return toAjax(bmsTemplateRecordService.insertBmsTemplateRecord(bmsTemplateRecordAddDto));
}
/**
*
*/
@ApiOperation(value = "根据信用代码集合查询企业信息")
@PostMapping("/searchEntCodeToInfo")
public AjaxResult searchEntCodeToInfo(@RequestBody List<String> code) {
return success(bmsTemplateRecordService.searchEntCodeToInfo(code));
}
// /**
// * 修改在线模板

@ -9,7 +9,6 @@ import com.ruoyi.common.annotation.Excels;
import com.ruoyi.jjh.common.entity.BaseInfoEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import liquibase.pro.packaged.S;
import lombok.Data;
import lombok.EqualsAndHashCode;
@ -39,12 +38,12 @@ public class BmsEnterpriseBasicInfo extends BaseInfoEntity {
private Integer multiple;
/**
* 1. 2 3 4 5 6
* 1. 2
*/
@ApiModelProperty("分类 1.规上服务业 2其他 3规上工业 4总部企业 5生产性服务业 6限上批零住餐 7生活性服务业")
@ApiModelProperty("分类 1.规上服务业 2其他")
@JSONField(serialize = false)
@Excel(name = "分类", readConverterExp = "1.规上服务业 2其他 3规上工业 4总部企业 5生产性服务业 6限上批零住餐 7生活性服务业")
private String type;
@Excel(name = "分类", readConverterExp = "1=规上服务业,2=其他")
private Integer type;
/**

@ -9,7 +9,6 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.NotBlank;
import java.time.LocalDate;
/**
@ -86,8 +85,4 @@ public class BmsTemplateRecord extends BaseInfoEntity {
@Excel(name = "是否需要审批", readConverterExp = "0=不需要审批,1=需要审批")
@ApiModelProperty(value = "0=不需要审批,1=需要审批")
private Integer isApproval;
@NotBlank
@ApiModelProperty(value = "短信内容")
private String smsInfo;
}

@ -18,7 +18,7 @@ import java.util.List;
* @create: 2023-08-28 17:54
*/
@Data
//@EqualsAndHashCode(callSuper = true)
@EqualsAndHashCode(callSuper = true)
public class BmsDeclarationRecordsDto extends BmsDeclarationRecords {
@ -26,10 +26,6 @@ public class BmsDeclarationRecordsDto extends BmsDeclarationRecords {
@Excel(name = "申报任务标题")
private String enterpriseDirectory;
// private Integer pageSize;
//
// private Integer pageNum;
@ApiModelProperty(value = "申报单位")
@Excel(name = "申报单位")

@ -6,8 +6,6 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.Valid;
import javax.validation.constraints.NotBlank;
import java.util.List;
/**

@ -1,40 +0,0 @@
package com.ruoyi.jjh.declaration.entity.request;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
*
* @author du
* @since 2024/11/21 9:10
*/
@Data
@ApiModel("企业库查询请求体")
public class EnterpriseInfoRequest {
/**
* 1. 2 3 4 5 6
*/
@ApiModelProperty("分类 1.规上服务业 2其他 3规上工业 4总部企业 5生产性服务业 6限上批零住餐")
private Integer type;
/**
*
*/
@ApiModelProperty("企业名称")
private String qymc;
/**
*
*/
@ApiModelProperty("统一社会信用代码")
private String tyshxydm;
/**
* 01
*/
@ApiModelProperty("是否删除0未删除1已删除")
private Long isDeleted;
}

@ -99,11 +99,6 @@ public class BmsDeclarationRecordsQueryVo implements Serializable {
@Excel(name = "审批状态", readConverterExp = "0=待填报,1=初审中,2=复审中,3=终审中,5=评审通过,6=已填报,7=复审不通过,8=初审驳回,9=终审不通过10=退回修改")
private Long status;
@ApiModelProperty(value = "在线模板状态")
@Excel(name = "在线模板状态", readConverterExp = " 0=未开始 1=过期 2=有效 3=长期有效")
private Long templateRecordStatus;
/**
* json

@ -1,7 +1,6 @@
package com.ruoyi.jjh.declaration.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.jjh.declaration.entity.BmsDeclarationRecords;
import com.ruoyi.jjh.declaration.entity.dto.ApprovalDeclarationRecordsQueryDto;
import com.ruoyi.jjh.declaration.entity.dto.BmsDeclarationRecordsDto;
@ -34,7 +33,7 @@ public interface BmsDeclarationRecordsMapper extends BaseMapper<BmsDeclarationRe
* @param bmsDeclarationRecordsDto 线
* @return 线
*/
public Page<BmsDeclarationRecordsQueryVo> selectBmsDeclarationRecordsList(Page<BmsDeclarationRecordsQueryVo> page,@Param("req") BmsDeclarationRecordsDto bmsDeclarationRecordsDto);
public List<BmsDeclarationRecordsQueryVo> selectBmsDeclarationRecordsList(BmsDeclarationRecordsDto bmsDeclarationRecordsDto);
public List<BmsDeclarationRecordsQueryVo> selectBmsDeclarationRecordsZwList(BmsDeclarationRecordsDto bmsDeclarationRecordsDto);

@ -3,7 +3,6 @@ package com.ruoyi.jjh.declaration.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.jjh.declaration.entity.BmsEnterpriseBasicInfo;
import com.ruoyi.jjh.declaration.entity.request.EnterpriseInfoRequest;
import com.ruoyi.jjh.declaration.entity.request.EnterpriseInfoWorkRequest;
import org.apache.ibatis.annotations.Param;
@ -22,7 +21,7 @@ public interface BmsEnterpriseBasicInfoMapper extends BaseMapper<BmsEnterpriseBa
* @param bmsEnterpriseBasicInfo
* @return
*/
public Page<BmsEnterpriseBasicInfo> page(Page<BmsEnterpriseBasicInfo> page, @Param("req") EnterpriseInfoRequest bmsEnterpriseBasicInfo);
public Page<BmsEnterpriseBasicInfo> page(Page<BmsEnterpriseBasicInfo> page, @Param("req") BmsEnterpriseBasicInfo bmsEnterpriseBasicInfo);
/**
@ -31,7 +30,7 @@ public interface BmsEnterpriseBasicInfoMapper extends BaseMapper<BmsEnterpriseBa
* @param bmsEnterpriseBasicInfo
* @return
*/
List<BmsEnterpriseBasicInfo> page(@Param("req") EnterpriseInfoRequest bmsEnterpriseBasicInfo);
List<BmsEnterpriseBasicInfo> page(@Param("req") BmsEnterpriseBasicInfo bmsEnterpriseBasicInfo);
/**
*

@ -2,7 +2,6 @@ package com.ruoyi.jjh.declaration.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.jjh.declaration.entity.BmsEnterpriseDirectory;
import com.ruoyi.jjh.declaration.entity.BmsTemplateRecord;
import com.ruoyi.jjh.declaration.entity.dto.BmsTemplateRecordQueryDto;
import com.ruoyi.jjh.declaration.entity.vo.BmsTemplateRecordQueryVo;
@ -59,12 +58,6 @@ public interface BmsTemplateRecordMapper extends BaseMapper<BmsTemplateRecord> {
*/
public Page<BmsTemplateRecordQueryVo> selectTemplateRecordVo(Page<BmsTemplateRecordQueryVo> page, @Param("req") BmsTemplateRecordQueryDto bmsTemplateRecordQueryDto);
/**
*
*/
List<BmsEnterpriseDirectory> searchEntCodeToInfo(@Param("code") List<String> code);
// /**
// * 企业端选择表单模板列表
// * @param bmsTemplateQueryDto

@ -1,7 +1,6 @@
package com.ruoyi.jjh.declaration.regular;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.jjh.declaration.component.EmailEnterService;
import com.ruoyi.jjh.declaration.entity.BmsDeclarationRecords;
import com.ruoyi.jjh.declaration.service.IBmsDeclarationRecordsService;
import com.ruoyi.jjh.ent.service.SmsAlertsService;
@ -36,9 +35,6 @@ public class SmsEnterChange {
@Value("${isTiming}")
private Boolean isTiming;
@Resource
private EmailEnterService emailEnterService;
// 每三小时执行一次
@Scheduled(cron = "0 0 */12 * * *")
private void runTask() {
@ -52,8 +48,7 @@ public class SmsEnterChange {
list1.removeIf(x -> x.getPhonenumber().isEmpty());
for (SysUser items : list1) {
if("0".equals(items.getDelFlag()) & "0".equals(items.getStatus())) {
emailEnterService.toEnter("政府人员-" + items.getNickName(),"您有" + count + "个新的申报审核任务[待初审],"+"登录网址为:https://idp.sipac.gov.cn/bms/#/login"+"此邮件为系统自动发送,无需回复!",items.getEmail());
smsAlertsService.enterSms("政府人员-" + items.getNickName(), "您有" + count + "个新的申报审核任务[待初审],"+"登录网址为:https://idp.sipac.gov.cn/bms/#/login", items.getPhonenumber());
smsAlertsService.enterSms("政府人员-" + items.getNickName(), "您有" + count + "个新的申报审核任务[待初审]", items.getPhonenumber());
}
}
}
@ -66,8 +61,7 @@ public class SmsEnterChange {
list2.removeIf(x -> x.getPhonenumber().isEmpty());
for (SysUser items : list2) {
if("0".equals(items.getDelFlag()) & "0".equals(items.getStatus())) {
emailEnterService.toEnter("政府人员-" + items.getNickName(),"您有" + count1 + "个新的申报审核任务[待复审],"+"登录网址为:https://idp.sipac.gov.cn/bms/#/login"+"此邮件为系统自动发送,无需回复!",items.getEmail());
smsAlertsService.enterSms("政府人员-" + items.getNickName(), "您有" + count1 + "个新的申报审核任务[待复审],"+"登录网址为:https://idp.sipac.gov.cn/bms/#/login", items.getPhonenumber());
smsAlertsService.enterSms("政府人员-" + items.getNickName(), "您有" + count1 + "个新的申报审核任务[待复审]", items.getPhonenumber());
}
}
}
@ -80,8 +74,7 @@ public class SmsEnterChange {
list3.removeIf(x -> x.getPhonenumber().isEmpty());
for (SysUser items : list3) {
if("0".equals(items.getDelFlag()) & "0".equals(items.getStatus())) {
emailEnterService.toEnter("政府人员-" + items.getNickName(),"您有" + count2 + "个新的申报审核任务[待终审],"+"登录网址为:https://idp.sipac.gov.cn/bms/#/login"+"此邮件为系统自动发送,无需回复!",items.getEmail());
smsAlertsService.enterSms("政府人员-" + items.getNickName(), "您有" + count2 + "个新的申报审核任务[待终审],"+"登录网址为:https://idp.sipac.gov.cn/bms/#/login", items.getPhonenumber());
smsAlertsService.enterSms("政府人员-" + items.getNickName(), "您有" + count2 + "个新的申报审核任务[待终审]", items.getPhonenumber());
}
}
}

@ -6,7 +6,6 @@ import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.jjh.declaration.component.EmailEnterService;
import com.ruoyi.jjh.declaration.component.TimingRemindService;
import com.ruoyi.jjh.declaration.entity.BmsEnterpriseBasicInfo;
import com.ruoyi.jjh.declaration.entity.BmsTemplateInfo;
@ -26,7 +25,6 @@ import com.ruoyi.jjh.ent.service.JSmartRemindersService;
import com.ruoyi.jjh.ent.service.SmsAlertsService;
import com.ruoyi.quartz.service.ISysJobService;
import com.ruoyi.system.mapper.SysUserMapper;
import liquibase.pro.packaged.S;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
@ -128,9 +126,6 @@ public class TimeChange {
@Resource
private JProjectService jProjectService;
@Resource
private EmailEnterService emailEnterService;
/**
*
*/
@ -202,7 +197,7 @@ public class TimeChange {
if (total > 0) {
// 直接转换第一个元素为BmsEnterpriseBasicInfo对象
BmsEnterpriseBasicInfo res = JSONUtil.toBean(arr.getJSONObject(0).toString(), BmsEnterpriseBasicInfo.class);
if(!"1".equals(items.getType())){
if(items.getType() != 1){
res.setQygm("其他");
}
res.setId(items.getId());
@ -245,15 +240,7 @@ public class TimeChange {
JContacts res = JSONUtil.toBean(o.toString(), JContacts.class);
allList.add(res);
}
List<JContacts> list1 = jContactsService.lambdaQuery().eq(JContacts::getTyshxydm, items.getTyshxydm()).list();
List<String> str = new ArrayList<>();
list1.forEach(x-> str.add(x.getDwAgencykey()));
if(!list1.isEmpty()){
jContactsService.removeBatchByIds(str);
jContactsService.saveBatch(allList);
}else {
jContactsService.saveBatch(allList);
}
jContactsService.saveOrUpdateBatch(allList);
}
}
}
@ -283,6 +270,7 @@ public class TimeChange {
y.setAlertTime(y.getEndTime().minusDays(qy.getDaysAdvance()));
if (y.getTyshxydm() != null) {
if (isTiming) {
//发送短信
timingRemindImpl.getContact(y.getTyshxydm(), "您有1个申报任务即将结束,请前往系统首页查看");
}
}
@ -306,8 +294,7 @@ public class TimeChange {
y.setZwId(o.getUserId());
bmsDeclarationRecords.add(y);
if (isTiming) {
emailEnterService.toEnter("政府人员-" + o.getNickName(),"您有1个项目即将建设完成,请前往工作台查看。"+"登录网址为:https://idp.sipac.gov.cn/bms/#/login"+"此邮件为系统自动发送,无需回复!",o.getEmail());
smsAlertsService.enterSms("政府人员-" + o.getNickName(), "您有1个项目即将建设完成,请前往工作台查看。"+"登录网址为:https://idp.sipac.gov.cn/bms/#/login", o.getPhonenumber());
smsAlertsService.enterSms("政府人员-" + o.getNickName(), "您有1个项目即将建设完成,请前往工作台查看。", o.getPhonenumber());
}
}
}

@ -1,6 +1,5 @@
package com.ruoyi.jjh.declaration.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.jjh.declaration.entity.BmsDeclarationRecords;
import com.ruoyi.jjh.declaration.entity.dto.ApprovalDeclarationRecordsQueryDto;
@ -9,7 +8,6 @@ import com.ruoyi.jjh.declaration.entity.dto.BmsDeclarationRecordsDto;
import com.ruoyi.jjh.declaration.entity.vo.ApprovalDeclarationRecordsQueryVo;
import com.ruoyi.jjh.declaration.entity.vo.BmsDeclarationRecordsQueryVo;
import com.ruoyi.jjh.declaration.entity.vo.DeclarationRecordsVo;
import com.ruoyi.jjh.ent.entity.JMemorandum;
import com.ruoyi.jjh.ent.entity.JProject;
import com.ruoyi.jjh.ent.entity.JSmartDeclaration;
@ -36,7 +34,7 @@ public interface IBmsDeclarationRecordsService extends IService<BmsDeclarationRe
* @param bmsDeclarationRecordsDto 线
* @return 线
*/
public Page<BmsDeclarationRecordsQueryVo> selectBmsDeclarationRecordsList(Page<BmsDeclarationRecordsQueryVo> page, BmsDeclarationRecordsDto bmsDeclarationRecordsDto);
public List<BmsDeclarationRecordsQueryVo> selectBmsDeclarationRecordsList(BmsDeclarationRecordsDto bmsDeclarationRecordsDto);
public List<BmsDeclarationRecordsQueryVo> selectBmsDeclarationRecordsZwList(BmsDeclarationRecordsDto bmsDeclarationRecordsDto);

@ -3,7 +3,6 @@ package com.ruoyi.jjh.declaration.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.jjh.declaration.entity.BmsEnterpriseBasicInfo;
import com.ruoyi.jjh.declaration.entity.request.EnterpriseInfoRequest;
import com.ruoyi.jjh.declaration.entity.request.EnterpriseInfoWorkRequest;
import java.util.List;
@ -20,18 +19,18 @@ public interface IBmsEnterpriseBasicInfoService extends IService<BmsEnterpriseBa
/**
*
*
* @param e
* @param bmsEnterpriseBasicInfo
* @return
*/
Page<BmsEnterpriseBasicInfo> page(Page<BmsEnterpriseBasicInfo> page, EnterpriseInfoRequest e);
Page<BmsEnterpriseBasicInfo> page(Page<BmsEnterpriseBasicInfo> page, BmsEnterpriseBasicInfo bmsEnterpriseBasicInfo);
/**
*
*
* @param e
* @param bmsEnterpriseBasicInfo
* @return
*/
List<BmsEnterpriseBasicInfo> page(EnterpriseInfoRequest e);
List<BmsEnterpriseBasicInfo> page(BmsEnterpriseBasicInfo bmsEnterpriseBasicInfo);
List<BmsEnterpriseBasicInfo> workSearch(EnterpriseInfoWorkRequest enterpriseInfoWorkRequest);

@ -36,12 +36,14 @@ public interface IBmsTemplateInfoService extends IService<BmsTemplateInfo> {
/**
*
*
* @param request
* @param response
* @param id
* @return
* @author emiya.xie
* @create 2023/8/31 10:25
*/
public void exportTemplate(HttpServletResponse response,Long id);
public void exportTemplate(HttpServletRequest request, HttpServletResponse response, Long id);
/**

@ -2,7 +2,6 @@ package com.ruoyi.jjh.declaration.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.jjh.declaration.entity.BmsEnterpriseDirectory;
import com.ruoyi.jjh.declaration.entity.BmsTemplateRecord;
import com.ruoyi.jjh.declaration.entity.dto.BmsTemplateRecordAddDto;
import com.ruoyi.jjh.declaration.entity.dto.BmsTemplateRecordQueryDto;
@ -90,8 +89,5 @@ public interface IBmsTemplateRecordService extends IService<BmsTemplateRecord> {
*/
public int deleteBmsTemplateRecordById(Long id);
/**
*
*/
List<BmsEnterpriseDirectory> searchEntCodeToInfo(List<String> code);
}

@ -4,13 +4,16 @@ import cn.hutool.core.date.DateTime;
import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.jjh.declaration.component.TimingRemindService;
import com.ruoyi.jjh.declaration.entity.*;
import com.ruoyi.jjh.declaration.entity.BmsApprovalInfo;
import com.ruoyi.jjh.declaration.entity.BmsDeclarationRecords;
import com.ruoyi.jjh.declaration.entity.BmsEnterpriseBasicInfo;
import com.ruoyi.jjh.declaration.entity.BmsProcessInfo;
import com.ruoyi.jjh.declaration.entity.BmsTemplateRecord;
import com.ruoyi.jjh.declaration.entity.dto.ApprovalDeclarationRecordsQueryDto;
import com.ruoyi.jjh.declaration.entity.dto.BmsApprovalInfoUpdateDto;
import com.ruoyi.jjh.declaration.entity.dto.BmsDeclarationRecordsDto;
@ -18,7 +21,12 @@ import com.ruoyi.jjh.declaration.entity.vo.ApprovalDeclarationRecordsQueryVo;
import com.ruoyi.jjh.declaration.entity.vo.BmsDeclarationRecordsQueryVo;
import com.ruoyi.jjh.declaration.entity.vo.DeclarationRecordsVo;
import com.ruoyi.jjh.declaration.mapper.BmsDeclarationRecordsMapper;
import com.ruoyi.jjh.declaration.service.*;
import com.ruoyi.jjh.declaration.service.IBmsApprovalInfoService;
import com.ruoyi.jjh.declaration.service.IBmsDeclarationRecordsService;
import com.ruoyi.jjh.declaration.service.IBmsEnterpriseBasicInfoService;
import com.ruoyi.jjh.declaration.service.IBmsProcessInfoService;
import com.ruoyi.jjh.declaration.service.IBmsTemplateRecordService;
import com.ruoyi.jjh.declaration.service.ICommonService;
import com.ruoyi.jjh.ent.entity.JProject;
import com.ruoyi.jjh.ent.entity.JSmartDeclaration;
import com.ruoyi.jjh.ent.service.JProjectService;
@ -98,6 +106,7 @@ public class BmsDeclarationRecordsServiceImpl extends ServiceImpl<BmsDeclaration
return declarationRecordsVo;
}
/**
* 线
*
@ -105,11 +114,10 @@ public class BmsDeclarationRecordsServiceImpl extends ServiceImpl<BmsDeclaration
* @return 线
*/
@Override
public Page<BmsDeclarationRecordsQueryVo> selectBmsDeclarationRecordsList(Page<BmsDeclarationRecordsQueryVo> page, BmsDeclarationRecordsDto bmsDeclarationRecordsDto) {
return baseMapper.selectBmsDeclarationRecordsList(page, bmsDeclarationRecordsDto);
public List<BmsDeclarationRecordsQueryVo> selectBmsDeclarationRecordsList(BmsDeclarationRecordsDto bmsDeclarationRecordsDto) {
return baseMapper.selectBmsDeclarationRecordsList(bmsDeclarationRecordsDto);
}
@Override
public List<BmsDeclarationRecordsQueryVo> selectBmsDeclarationRecordsZwList(BmsDeclarationRecordsDto bmsDeclarationRecordsDto) {
return baseMapper.selectBmsDeclarationRecordsZwList(bmsDeclarationRecordsDto);

@ -3,7 +3,6 @@ package com.ruoyi.jjh.declaration.service.impl;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.jjh.declaration.entity.BmsEnterpriseBasicInfo;
import com.ruoyi.jjh.declaration.entity.request.EnterpriseInfoRequest;
import com.ruoyi.jjh.declaration.entity.request.EnterpriseInfoWorkRequest;
import com.ruoyi.jjh.declaration.mapper.BmsEnterpriseBasicInfoMapper;
import com.ruoyi.jjh.declaration.service.IBmsEnterpriseBasicInfoService;
@ -24,23 +23,23 @@ public class BmsEnterpriseBasicInfoServiceImpl extends ServiceImpl<BmsEnterprise
/**
*
*
* @param e
* @param bmsEnterpriseBasicInfo
* @return
*/
@Override
public Page<BmsEnterpriseBasicInfo> page(Page<BmsEnterpriseBasicInfo> page, EnterpriseInfoRequest e) {
return baseMapper.page(page, e);
public Page<BmsEnterpriseBasicInfo> page(Page<BmsEnterpriseBasicInfo> page, BmsEnterpriseBasicInfo bmsEnterpriseBasicInfo) {
return baseMapper.page(page, bmsEnterpriseBasicInfo);
}
/**
*
*
* @param e
* @param bmsEnterpriseBasicInfo
* @return
*/
@Override
public List<BmsEnterpriseBasicInfo> page(EnterpriseInfoRequest e) {
return baseMapper.page(e);
public List<BmsEnterpriseBasicInfo> page(BmsEnterpriseBasicInfo bmsEnterpriseBasicInfo) {
return baseMapper.page(bmsEnterpriseBasicInfo);
}

@ -1,10 +1,10 @@
package com.ruoyi.jjh.declaration.service.impl;
import com.alibaba.excel.EasyExcel;
import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.file.FileUtils;
import com.ruoyi.jjh.declaration.entity.BmsTemplateInfo;
import com.ruoyi.jjh.declaration.mapper.BmsTemplateInfoMapper;
import com.ruoyi.jjh.declaration.service.IBmsEnterpriseDirectoryService;
@ -12,12 +12,12 @@ import com.ruoyi.jjh.declaration.service.IBmsTemplateInfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.List;
/**
@ -57,39 +57,61 @@ public class BmsTemplateInfoServiceImpl extends ServiceImpl<BmsTemplateInfoMappe
/**
*
*
* @param request
* @param response
* @param id
* @return
* @author emiya.xie
* @create 2023/8/31 10:25
*/
@Override
public void exportTemplate(HttpServletResponse response, Long id) {
public void exportTemplate(HttpServletRequest request, HttpServletResponse response, Long id) {
// BmsTemplateInfo bmsTemplateInfo = baseMapper.selectById(id);
// if (BeanUtil.isEmpty(bmsTemplateInfo)) {
// throw new ServiceException("没有找到合适的模板!");
// }
// String fileName = bmsTemplateInfo.getTemplateName() + ".xlsx";
// String file = "/template/" + fileName;
// InputStream is = this.getClass().getResourceAsStream(file);
// byte[] fileData = new byte[0];
// try {
// fileData = input2byte(is);
// } catch (IOException e) {
// e.printStackTrace();
// }
// FileUtils.downloadFile(response, request, fileName, fileData);
BmsTemplateInfo bmsTemplateInfo = baseMapper.selectById(id);
JSONArray js1 = JSONObject.parse(bmsTemplateInfo.getTemplateJson()).getJSONArray("fields");
List<List<String>> list = new ArrayList<>();
for (Object o : js1) {
JSONObject parse = JSONObject.parse(o.toString());
List<String> head0 = new ArrayList<>();
head0.add(parse.get("label").toString());
list.add(head0);
if (BeanUtil.isEmpty(bmsTemplateInfo)) {
throw new ServiceException("没有找到合适的模板!");
}
String fileName = bmsTemplateInfo.getTemplateName() + ".xlsx";
// 创建 Excel 写入流
// 设置响应头,告诉浏览器下载文件
// 设置响应头,告诉浏览器下载文件
response.setContentType("application/vnd.ms-excel");
response.setHeader("Content-Disposition", "attachment; filename="+fileName);
try (ServletOutputStream outputStream = response.getOutputStream()) {
// 使用 EasyExcel 写数据到响应流
EasyExcel.write(outputStream)
// 这里放入动态头
.head(list).sheet("模板")
// 当然这里数据也可以用 List<List<String>> 去传入
.doWrite(new ArrayList<>());
String file = "/template/" + fileName;
// 使用 try-with-resources 自动关闭 InputStream
try (InputStream is = this.getClass().getResourceAsStream(file)) {
if (is == null) {
throw new ServiceException("模板文件未找到!");
}
byte[] fileData = input2byte(is);
FileUtils.downloadFile(response, request, fileName, fileData);
} catch (IOException e) {
throw new RuntimeException(e);
log.error("导出模板时发生错误", e);
throw new ServiceException("导出模板失败,请重试!");
}
}
private byte[] input2byte(InputStream inStream)
throws IOException {
ByteArrayOutputStream swapStream = new ByteArrayOutputStream();
byte[] buff = new byte[100];
int rc = 0;
while ((rc = inStream.read(buff, 0, 100)) > 0) {
swapStream.write(buff, 0, rc);
}
byte[] in2b = swapStream.toByteArray();
return in2b;
}

@ -5,7 +5,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.jjh.declaration.component.TimingRemindService;
import com.ruoyi.jjh.declaration.entity.*;
import com.ruoyi.jjh.declaration.entity.BmsDeclarationRecords;
import com.ruoyi.jjh.declaration.entity.BmsEnterpriseBasicInfo;
import com.ruoyi.jjh.declaration.entity.BmsEnterpriseDirectory;
import com.ruoyi.jjh.declaration.entity.BmsTemplateInfo;
import com.ruoyi.jjh.declaration.entity.BmsTemplateRecord;
import com.ruoyi.jjh.declaration.entity.dto.BmsTemplateRecordAddDto;
import com.ruoyi.jjh.declaration.entity.dto.BmsTemplateRecordQueryDto;
import com.ruoyi.jjh.declaration.entity.dto.BmsTemplateRecordUpdateDto;
@ -13,19 +17,20 @@ import com.ruoyi.jjh.declaration.entity.vo.BmsTemplateRecordQueryVo;
import com.ruoyi.jjh.declaration.entity.vo.BmsTemplateRecordVo;
import com.ruoyi.jjh.declaration.mapper.BmsTemplateRecordMapper;
import com.ruoyi.jjh.declaration.regular.TimeChange;
import com.ruoyi.jjh.declaration.service.*;
import com.ruoyi.jjh.declaration.service.IBmsDeclarationRecordsService;
import com.ruoyi.jjh.declaration.service.IBmsEnterpriseBasicInfoService;
import com.ruoyi.jjh.declaration.service.IBmsEnterpriseDirectoryService;
import com.ruoyi.jjh.declaration.service.IBmsTemplateInfoService;
import com.ruoyi.jjh.declaration.service.IBmsTemplateRecordService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import javax.validation.Valid;
import java.time.Year;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.CompletableFuture;
import java.util.stream.Collectors;
/**
* 线Service
@ -189,7 +194,7 @@ public class BmsTemplateRecordServiceImpl extends ServiceImpl<BmsTemplateRecordM
*/
@Override
@Transactional(rollbackFor = Exception.class)
public int insertBmsTemplateRecord(@Valid BmsTemplateRecordAddDto bmsTemplateRecordAddDto) {
public int insertBmsTemplateRecord(BmsTemplateRecordAddDto bmsTemplateRecordAddDto) {
// 1 新增申报任务时,增加一个选项:是否审批(需要审批/不需要审批),选了“不需要审批”的企业填报后,状态变为“已填报”,不再进行后续流程,并且这种情况不对接到项目库。
// 2、新增申报任务时若项目分类选择了“企业信息收集”里面的则只能选择“不需要审批”这类申报都不对接项目库。
BmsTemplateInfo tp = iBmsTemplateInfoService.getById(bmsTemplateRecordAddDto.getTemplateId());
@ -221,19 +226,13 @@ public class BmsTemplateRecordServiceImpl extends ServiceImpl<BmsTemplateRecordM
List<BmsDeclarationRecords> drlist = new ArrayList<>();
//如果前端部分企业名录集合为空
if (null != enterpriseDirectoryList && enterpriseDirectoryList.size() > 0) {
List<BmsEnterpriseDirectory> deduplicatedList = new ArrayList<>(enterpriseDirectoryList.stream()
.collect(Collectors.toMap(
BmsEnterpriseDirectory::getCreditCode,
p -> p, // 映射为 Person 对象
(existing, replacement) -> existing)) // 如果 id 重复,保留第一个
.values());
deduplicatedList.forEach(x -> {
enterpriseDirectoryList.forEach(x -> {
getDeclarationRecordsList(bmsTemplateRecordAddDto, drlist, x.getCreditCode().trim(), tp.getTemplateJson());
x.setTemplateRecordId(bmsTemplateRecordAddDto.getId());
x.setCreditCode(x.getCreditCode().trim());
x.setEnterpriseName(x.getEnterpriseName().trim());
});
enterpriseDirectoryService.saveBatch(deduplicatedList);
enterpriseDirectoryService.saveBatch(enterpriseDirectoryList);
} else {
List<BmsEnterpriseBasicInfo> list = iBmsEnterpriseBasicInfoService.list();
List<BmsEnterpriseDirectory> copyList = new ArrayList<>();
@ -252,19 +251,10 @@ public class BmsTemplateRecordServiceImpl extends ServiceImpl<BmsTemplateRecordM
//获取每个企业对应的常用联系人
if (isTiming) {
List<BmsEnterpriseDirectory> list = enterpriseDirectoryService.lambdaQuery().eq(BmsEnterpriseDirectory::getTemplateRecordId, bmsTemplateRecordAddDto.getId()).list();
List<CompletableFuture<Void>> list2 = new ArrayList<>();
int batchSize = 49; // 每批处理的数据量
for (int i = 0; i < list.size(); i += batchSize) {
final List<BmsEnterpriseDirectory> batch = list.subList(i, Math.min(i + batchSize, list.size()));
list2.add(CompletableFuture.runAsync(() -> {
batch.forEach(data -> {
// 处理每条数据
timingRemindImpl.getContact(data.getCreditCode(), bmsTemplateRecordAddDto.getSmsInfo());
});
}));
for (BmsEnterpriseDirectory x : list) {
timingRemindImpl.getContact(x.getCreditCode(), "您有1个新的申报任务[待填报]");
}
}
System.out.println("主进程结束!");
return num;
}
@ -360,13 +350,5 @@ public class BmsTemplateRecordServiceImpl extends ServiceImpl<BmsTemplateRecordM
return baseMapper.deleteBmsTemplateRecordById(id);
}
/**
*
*/
@Override
public List<BmsEnterpriseDirectory> searchEntCodeToInfo(List<String> code) {
return baseMapper.searchEntCodeToInfo(code);
}
}

@ -92,7 +92,7 @@ public class ChiefController {
ChiefResponse bean = JSONUtil.toBean(dataJson, ChiefResponse.class);
//判断几个政务端用户,等待商量结果
//lj 102 其他是100 //要给dept部门id
bean.setToken(singleLoginService.singleLogin(bean.getAccountName(), bean.getName(), null, "02", bean.getMobile(),bean.getEmail()));
bean.setToken(singleLoginService.singleLogin(bean.getAccountName(), bean.getName(), null, "02", bean.getMobile()));
return AjaxResult.success(bean);
} else {
throw new ServiceException("登陆失败");
@ -103,26 +103,4 @@ public class ChiefController {
}
throw new ServiceException("登陆失败");
}
@ApiOperation("政务根据信用代码返回跳转路由")
@GetMapping("/returnUrl")
public AjaxResult returnUrl(@RequestParam("code") String code,
@RequestParam("userToken") String userToken) throws Exception {
//请求的地址
StringBuilder url = new StringBuilder("http://qyt.sipac.gov.cn/sipsg-enterprise-mobile-manage/#/loginVerify?");
//当前时间的时间戳
String timespan = Long.toString(System.currentTimeMillis());
UserInfoRequestDTO req = new UserInfoRequestDTO();
req.setClientId(clientId);
req.setUserToken(userToken);
String signature = Base64.encode(HMAC256Config.HmacSHA256(JSONUtil.parse(req).toString() + timespan, clientSecret));
url.append("signature=").append(signature);
url.append("&timespan=").append(timespan);
url.append("&userToken=").append(userToken);
url.append("&gourl=")
.append(URLEncoder.encode("https://qyt.sipac.gov.cn/sipsg-enterprise-mobile-manage/#/workPlat/search/enterprise/detail?id="+code,"UTF-8"));
url.append("&clientid=").append(clientId);
return AjaxResult.success(url.toString());
}
}

@ -131,7 +131,7 @@ public class SingleLoginController {
id = bmsEnterpriseBasicInfo.getId();
}
// 设置过期时间为8小时
String token = singleLoginService.singleLogin(req.getUscc(), req.getEpname(), id, "01", null,null);
String token = singleLoginService.singleLogin(req.getUscc(), req.getEpname(), id, "01", null);
res.setToken(token);
res.setMain(req);
redisCache.setCacheObject(key, res, expirationSeconds, TimeUnit.MINUTES);

@ -11,6 +11,6 @@ public interface SingleLoginService {
/**
* token
*/
String singleLogin(String userName, String nickName, Long id, String userType, String phone,String email);
String singleLogin(String userName, String nickName, Long id, String userType, String phone);
}

@ -50,16 +50,15 @@ public class SingleLoginServiceImpl implements SingleLoginService {
* token
*/
@Override
public String singleLogin(String userName, String nickName, Long id, String userType, String phone,String email) {
public String singleLogin(String userName, String nickName, Long id, String userType, String phone) {
// 用户验证
Authentication authentication;
try {
SysUser user = new SysUser();
user.setUserName(userName);
user.setNickName(nickName);
user.setPassword("Jinjihu@2024//**...");
user.setPassword("admin123");
user.setPhonenumber(phone);
user.setEmail(email);
Long[] roles = new Long[1];
if ("01".equals(userType)) {
roles[0] = 101L;
@ -84,7 +83,7 @@ public class SingleLoginServiceImpl implements SingleLoginService {
// }
}
//新增user账号密码
UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(userName, "Jinjihu@2024//**...");
UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(userName, "admin123");
AuthenticationContextHolder.setContext(authenticationToken);
// 该方法会去调用UserDetailsServiceImpl.loadUserByUsername
authentication = authenticationManager.authenticate(authenticationToken);

@ -1,11 +1,6 @@
package com.ruoyi.jjh.ent.controller;
import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
@ -13,15 +8,12 @@ import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.jjh.declaration.entity.BmsEnterpriseBasicInfo;
import com.ruoyi.jjh.declaration.regular.TimeChange;
import com.ruoyi.jjh.ent.entity.JContacts;
import com.ruoyi.jjh.ent.entity.JMemorandum;
import com.ruoyi.jjh.ent.entity.request.JMemorandumRequest;
import com.ruoyi.jjh.ent.service.JMemorandumService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
@ -33,8 +25,6 @@ import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
/**
@ -56,9 +46,6 @@ public class JMemorandumController extends BaseController {
@Resource
private TimeChange ts;
@Value("${enterpriseUrl}")
private String enterpriseUrl;
/**
*
*
@ -88,31 +75,6 @@ public class JMemorandumController extends BaseController {
return AjaxResult.success();
}
@PreAuthorize("@ss.hasAnyRoles('admin')")
@ApiOperation(value = "查看法人库-企业联络人员")
@GetMapping("/getOneContacts/{tyshxydm}")
public AjaxResult selectAll3(@PathVariable String tyshxydm) {
String contacts = enterpriseUrl + "/645383/qyllrytyshxydm";
JSONArray arr = null;
HashMap<String, String> headers = new HashMap<>();//存放请求头,可以存放多个请求头
headers.put("Content-Type", "application/json;charset=utf-8");
//请求体
JSONObject jsonObject = new JSONObject();//存放参数
jsonObject.set("tyshxydm", tyshxydm);
jsonObject.set("pageIndex", 0);
HttpResponse response = HttpRequest.post(contacts)
.addHeaders(headers)
.body(jsonObject.toString())
.execute();
if (response.getStatus() == 200) {
JSONObject jsonObj = JSONUtil.parseObj(response.body());
if ("200".equals(jsonObj.get("code"))) {
JSONObject reqData = JSONUtil.parseObj(jsonObj.get("data"));
arr = JSONUtil.parseArray(reqData.get("data"));
}
}
return AjaxResult.success(arr);
}
/**
* IDIDID

@ -1,34 +1,23 @@
package com.ruoyi.jjh.ent.controller;
import com.alibaba.excel.EasyExcel;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.jjh.declaration.entity.BmsDeclarationRecords;
import com.ruoyi.jjh.ent.entity.JPolicyFile;
import com.ruoyi.jjh.ent.entity.request.JPolicyFileRequest;
import com.ruoyi.jjh.ent.service.JMemorandumService;
import com.ruoyi.jjh.ent.service.JPolicyFileService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.Serializable;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
/**
* j_policy_file
@ -47,9 +36,6 @@ public class JPolicyFileController extends BaseController {
@Resource
private JPolicyFileService jPolicyFileService;
@Resource
private JMemorandumService jMemorandumService;
/**
*
*
@ -63,105 +49,6 @@ public class JPolicyFileController extends BaseController {
return success(jPolicyFileService.page(page, jPolicyFileRequest));
}
@ApiOperation(value = "获取某个模板的已填报数据并且导出")
@GetMapping("/getYtb")
@PreAuthorize("@ss.hasAnyRoles('admin,other-gov,gov')")
public void getYtb(HttpServletResponse response, @RequestParam(name = "list") List<Long> list1) {
List<BmsDeclarationRecords> ytb = jMemorandumService.getYtb(list1);
int size1 = 0;
if(ytb!=null&& !ytb.isEmpty()){
Long trId = ytb.get(0).getTemplateRecordId();
for (BmsDeclarationRecords item : ytb) {
if (item.getTemplateRecordId().equals(trId)) {
size1++;
}
}
if(size1!=ytb.size()){
throw new ServiceException("请选择同一在线模板数据!");
}
}else {
throw new ServiceException("请选择企业填报数据!");
}
List<List<String>> data = new ArrayList<>();
List<List<String>> final1 = new ArrayList<>();
// 创建一个 Map 用于存储不同的列表,键为字符串表示“变量名”,值为列表
Map<String, List<String>> list = new LinkedHashMap<>();
List<String> head0 = new ArrayList<>();
head0.add("企业名称");
List<String> head1 = new ArrayList<>();
head1.add("统一社会信用代码");
list.put("head0", head0);
list.put("head1", head1);
//根据数据添加近excel
for (int i = 0; i < ytb.size(); i++) {
JSONArray js1 = JSONObject.parse(ytb.get(i).getTemplateJson()).getJSONArray("fields");
//要添加的数据
List<String> addData = new ArrayList<>();
addData.add(ytb.get(i).getMatter());
addData.add(ytb.get(i).getCreditCode());
for (int i1 = 0; i1 < js1.size(); i1++) {
//获取每个组件
JSONObject lb = JSON.parseObject(js1.get(i1).toString());
if ("el-select".equals(lb.get("tag").toString()) || "el-radio-group".equals(lb.get("tag").toString())) {
List<String> head6 = new ArrayList<>();
head6.add(lb.get("label").toString());
list.put("headi" + i1, head6);
JSONArray op1 = JSONObject.parse(js1.get(i1).toString()).getJSONArray("options");
for (Object s1 : op1) {
JSONObject parse = JSONObject.parse(s1.toString());
if (parse.get("value").toString().equals(lb.get("defaultValue").toString())) {
addData.add(parse.get("label").toString());
break;
}
}
} else if ("el-checkbox-group".equals(lb.get("tag").toString())) {
List<String> head7 = new ArrayList<>();
head7.add(lb.get("label").toString());
list.put("headi" + i1, head7);
JSONArray op1 = JSONObject.parse(js1.get(i1).toString()).getJSONArray("options");
StringBuilder as = new StringBuilder();
JSONArray jsonArray = JSONObject.parse(js1.get(i1).toString()).getJSONArray("defaultValue");
for (Object o : jsonArray) {
for (Object s1 : op1) {
JSONObject parse = JSONObject.parse(s1.toString());
if(parse.get("value").toString().equals(o.toString())){
as.append(parse.get("label")).append(",");
break;
}
}
}
addData.add(as.toString());
} else {
List<String> head2 = new ArrayList<>();
head2.add(lb.get("label").toString());
list.put("head2" + i1, head2);
addData.add(lb.get("defaultValue").toString());
}
}
data.add(addData);
}
for (Map.Entry<String, List<String>> st : list.entrySet()) {
final1.add(st.getValue());
}
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
response.setCharacterEncoding("utf-8");
response.setHeader("Content-Disposition", "attachment; filename=data.xlsx");
try {
ServletOutputStream outputStream = response.getOutputStream();
// 使用 EasyExcel 写数据到响应流
EasyExcel.write(outputStream)
// 这里放入动态头
.head(final1).sheet("模板")
// 当然这里数据也可以用 List<List<String>> 去传入
.doWrite(data);
} catch (IOException e) {
throw new RuntimeException(e);
}
}
/**
*

@ -43,8 +43,6 @@ public class JContacts extends BaseInfoEntity {
@TableField(fill = FieldFill.INSERT_UPDATE)
private Long updateId;
/**
*
*/
@ -66,12 +64,6 @@ public class JContacts extends BaseInfoEntity {
@ApiModelProperty("统一社会信用代码")
private String tyshxydm;
/**
*
*/
@ApiModelProperty("默认联系人")
private String defaultcontact;
/**
*
*/

@ -1,6 +1,5 @@
package com.ruoyi.jjh.ent.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
@ -33,7 +32,6 @@ public class JHeadQuartersRevenue {
*/
@ApiModelProperty("总部类别")
@TableField(exist = false)
private String type;
/**

@ -32,12 +32,6 @@ public class JEnterpriseContactRequest {
@ApiModelProperty("常用联系人姓名")
private String contactName;
/**
*
*/
@ApiModelProperty("常用联系人手机号")
private String contactPhone;
/**
*
*/

@ -2,7 +2,6 @@ package com.ruoyi.jjh.ent.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.jjh.declaration.entity.BmsDeclarationRecords;
import com.ruoyi.jjh.ent.entity.JMemorandum;
import com.ruoyi.jjh.ent.entity.request.JMemorandumRequest;
import org.apache.ibatis.annotations.Param;
@ -35,8 +34,5 @@ public interface JMemorandumMapper extends BaseMapper<JMemorandum> {
* @return
*/
List<JMemorandum> selectIdToAll(@Param("req") JMemorandumRequest jMemorandumRequest);
List<BmsDeclarationRecords> getYtb(@Param("list") List<Long> list);
}

@ -2,7 +2,6 @@ package com.ruoyi.jjh.ent.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.jjh.declaration.entity.BmsDeclarationRecords;
import com.ruoyi.jjh.ent.entity.JMemorandum;
import com.ruoyi.jjh.ent.entity.request.JMemorandumRequest;
@ -34,7 +33,5 @@ public interface JMemorandumService extends IService<JMemorandum> {
* @return
*/
List<JMemorandum> selectIdToAll(JMemorandumRequest jMemorandumRequest);
List<BmsDeclarationRecords> getYtb(List<Long> list);
}

@ -2,7 +2,6 @@ package com.ruoyi.jjh.ent.service.impl;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.jjh.declaration.entity.BmsDeclarationRecords;
import com.ruoyi.jjh.ent.entity.JMemorandum;
import com.ruoyi.jjh.ent.entity.request.JMemorandumRequest;
import com.ruoyi.jjh.ent.mapper.JMemorandumMapper;
@ -48,10 +47,5 @@ public class JMemorandumServiceImpl extends ServiceImpl<JMemorandumMapper, JMemo
return baseMapper.selectIdToAll(jMemorandumRequest);
}
@Override
public List<BmsDeclarationRecords> getYtb(List<Long> list) {
return baseMapper.getYtb(list);
}
}

@ -117,7 +117,7 @@ returnUrl: https://idp.sipac.gov.cn/bms
#定时任务更新企业信息和联系人的开启
updateEnterprise: true
#发送短信
isTiming: true
isTiming: false
#企业端正式环境应用系统编号
enterpriseAppId: 03f70874-39e9-11ef-bbd6-fa163e2b2e10

@ -16,8 +16,8 @@ ruoyi:
# 日志配置
logging:
level:
com.ruoyi: error
org.springframework: error
com.ruoyi: debug
org.springframework: warn
# 用户配置
user:
@ -121,13 +121,6 @@ getInfoId: https://qyt.sipac.gov.cn/enterprise-gateway/sipsg-enterprise/sys/thir
getAllInfo: http://uid.sipac.gov.cn/open/api/identity/data/FindUserById
#法人库-企业联络人员(统一社会信用代码)和法人库-法人基本信息(统一社会信用代码)生产环境
enterpriseUrl: http://172.21.10.46/api/invoke
#SMTP 服务器
smtp: smtp.sipac.gov.cn
#SMTP IP
smtpIp: 172.16.1.68
#SMTP 端口
smtpDk: 25

@ -113,7 +113,7 @@
FROM
bms_declaration_records AS a
inner join bms_template_record f on a.template_record_id = f.id
LEFT JOIN bms_enterprise_basic_info b ON a.credit_code = b.tyshxydm
LEFT JOIN bms_enterprise_basic_info b ON a.enterprise_id = b.id
left join sys_dict_data e on a.status = e.dict_value and e.dict_type='bms_approval_status'
<where>
<if test="list != null and list.size>0">
@ -172,48 +172,46 @@
a.remark,
b.qymc as enterpriseName,
f.road,
f.enterprise_directory,
f.status as templateRecordStatus
f.enterprise_directory
FROM
bms_declaration_records AS a
LEFT JOIN bms_enterprise_basic_info b ON a.credit_code = b.tyshxydm
left join bms_template_record f on a.template_record_id = f.id
inner join bms_template_record f on a.template_record_id = f.id
LEFT JOIN bms_template_info c on a.template_id = c.id
left join sys_dict_data e on a.status = e.dict_value and e.dict_type='bms_approval_status'
<where>
<if test="req.enterpriseDirectory != null and req.enterpriseDirectory != ''">and f.enterprise_directory like
concat('%', #{req.enterpriseDirectory},
<if test="enterpriseDirectory != null and enterpriseDirectory != ''">and f.enterprise_directory like
concat('%', #{enterpriseDirectory},
'%')
</if>
<if test="req.templateName != null and req.templateName != ''">and c.template_name like concat('%',
#{req.templateName}, '%')
<if test="templateName != null and templateName != ''">and c.template_name like concat('%',
#{templateName}, '%')
</if>
<if test="req.creditCode != null ">and a.credit_code = #{req.creditCode}</if>
<if test="req.enterpriseId != null ">and a.enterprise_id = #{req.enterpriseId}</if>
<if test="req.level != null ">and c.level = #{req.level}</if>
<if test="req.year != null and req.year != ''">and year = #{req.year}</if>
<if test="req.responsibilityUnit != null ">and c.responsibility_unit = #{req.responsibilityUnit}</if>
<if test="req.status != null ">and a.status = #{req.status}</if>
<if test="req.statusStr != null and req.statusStr.size>0">
<if test="creditCode != null ">and a.credit_code = #{creditCode}</if>
<if test="enterpriseId != null ">and a.enterprise_id = #{enterpriseId}</if>
<if test="level != null ">and c.level = #{level}</if>
<if test="year != null and year != ''">and year = #{year}</if>
<if test="responsibilityUnit != null ">and c.responsibility_unit = #{responsibilityUnit}</if>
<if test="status != null ">and a.status = #{status}</if>
<if test="statusStr != null and statusStr.size>0">
and a.status in
<foreach collection="req.statusStr" item="item" separator="," open="(" close=")">
<foreach collection="statusStr" item="item" separator="," open="(" close=")">
#{item}
</foreach>
</if>
<if test="req.statusChange == 0">
<if test="statusChange == 0">
and a.status in (0,10)
</if>
<if test="req.statusChange == 1">
<if test="statusChange == 1">
and a.status not in (0,10)
</if>
<if test="req.isDeleted != null ">and a.is_deleted = #{req.isDeleted}</if>
<if test="isDeleted != null ">and a.is_deleted = #{isDeleted}</if>
</where>
<if test="req.orderChange == 0">
<if test="orderChange == 0">
order by a.create_time desc
</if>
<if test="req.orderChange == 1">
order by FIELD(a.status, 0, 1, 2, 3,10,8,7,9,5),a.create_time desc, e.dict_sort desc,
a.id DESC
<if test="orderChange == 1">
order by FIELD(a.status, 0, 1, 2, 3,10,8,7,9,5),a.create_time desc, e.dict_sort desc
</if>
</select>
<select id="getAddProject" resultType="com.ruoyi.jjh.ent.entity.JProject">

@ -23,7 +23,7 @@
<select id="page" resultType="com.ruoyi.jjh.declaration.entity.BmsEnterpriseBasicInfo">
select * from bms_enterprise_basic_info
<where>
<if test="req.type != null">and type like concat('%',#{req.type},'%') </if>
<if test="req.type != null and req.type != ''">and type = #{req.type}</if>
<if test="req.qymc != null and req.qymc != ''">and qymc like concat('%', #{req.qymc}, '%')</if>
<if test="req.tyshxydm != null and req.tyshxydm != ''">and tyshxydm = #{req.tyshxydm}</if>
<if test="req.isDeleted != null ">and is_deleted = #{req.isDeleted}</if>

@ -118,18 +118,5 @@
</where>
order by a.create_time desc
</select>
<select id="searchEntCodeToInfo" resultType="com.ruoyi.jjh.declaration.entity.BmsEnterpriseDirectory">
SELECT qymc as enterpriseName,
tyshxydm as creditCode
FROM bms_enterprise_basic_info
<where>
<if test="code != null and code.size>0">
and tyshxydm in
<foreach collection="code" item="item" separator="," open="(" close=")">
#{item}
</foreach>
</if>
</where>
</select>
</mapper>

@ -6,32 +6,30 @@
<select id="servicesDevelop" resultType="com.ruoyi.jjh.ent.entity.response.JServicesDevelopResponse">
SELECT
IFNULL(a.develop_year, YEAR(NOW()) - 1) AS develop_year,
IFNULL(a.quarterly, 0) AS quarterly,
IFNULL(a.value_added, 0) AS valueAdded,
IFNULL(a.increase_speed, 0) AS increaseSpeed,
IFNULL(a.gdp_proportion, 0) AS gdpProportion
a.develop_year,
a.quarterly AS quarterly,
IFNULL( a.value_added, 0 ) AS valueAdded,
IFNULL( a.increase_speed, 0 ) AS increaseSpeed,
IFNULL( a.gdp_proportion, 0 ) AS gdpProportion
FROM
(SELECT 1) AS temp
LEFT JOIN j_services_develop a
ON YEAR(NOW()) - 1 = a.develop_year
AND a.quarterly IS NULL
UNION
j_services_develop a
WHERE
YEAR (
NOW()) - 1 = a.develop_year
AND a.quarterly IS NULL UNION
(
SELECT
IFNULL(c.develop_year, YEAR(NOW())) AS develop_year,
IFNULL(c.quarterly, 0) AS quarterly,
IFNULL(c.value_added, 0) AS valueAdded,
IFNULL(c.increase_speed, 0) AS increaseSpeed,
IFNULL(c.gdp_proportion, 0) AS gdpProportion
c.develop_year,
c.quarterly AS quarterly,
IFNULL( c.value_added, 0 ) AS valueAdded,
IFNULL( c.increase_speed, 0 ) AS increaseSpeed,
IFNULL( c.gdp_proportion, 0 ) AS gdpProportion
FROM
(SELECT 1) AS temp
LEFT JOIN j_services_develop c
ON YEAR(NOW()) = c.develop_year
AND c.quarterly IS NOT NULL
j_services_develop c
WHERE
YEAR (
NOW()) = c.develop_year
AND c.quarterly IS NOT NULL
ORDER BY
c.quarterly DESC
LIMIT 1)
@ -51,10 +49,10 @@
and a.project_name != '区级总部'
</if>
<if test="req.yearsChange == 1 ">
and a.appropriation_time like concat('%',YEAR(NOW()),'%')
and a.appropriation_time like concat('%',YEAR(NOW())-1,'%')
</if>
<if test="req.yearsChange != 1 ">
and SUBSTRING(a.appropriation_time, 1, 4) BETWEEN YEAR(DATE_SUB(CURDATE(), INTERVAL 3 YEAR)) AND YEAR(NOW())
and SUBSTRING(a.appropriation_time, 1, 4) BETWEEN YEAR(DATE_SUB(CURDATE(), INTERVAL 3 YEAR)) AND YEAR(NOW())-1
</if>
</where>
group by

@ -80,14 +80,14 @@ order by a.alert_time desc
IFNULL(a.gdp_proportion,0) as gdpProportion
FROM
j_services_develop a
<!-- <where>-->
<!-- <if test="type == 1 ">-->
<!-- YEAR(NOW()) > a.develop_year-->
<!-- </if>-->
<!-- <if test="type != 1 ">-->
<!-- YEAR(NOW()) = a.develop_year-->
<!-- </if>-->
<!-- </where>-->
<where>
<if test="type == 1 ">
YEAR(NOW()) > a.develop_year
</if>
<if test="type != 1 ">
YEAR(NOW()) = a.develop_year
</if>
</where>
ORDER BY
a.develop_year ASC
LIMIT 5
@ -95,29 +95,12 @@ order by a.alert_time desc
<select id="getIndustryDepth" resultType="com.ruoyi.jjh.ent.entity.response.JIndustryDepthResponse">
SELECT a.years,
a.industry_categories,
IFNULL(ROUND(a.year_revenue / 10000, 1), '-') AS yearRevenue,
IFNULL(ROUND(a.add_value, 1), '-') AS addValue,
IFNULL(ROUND(a.growth, 1), '-') AS growth,
IFNULL(ROUND(a.year_revenue / 10000, 1), '-') AS yearRevenue,
IFNULL(ROUND(a.add_value, 1) , '-') AS addValue,
IFNULL(ROUND(a.growth, 1), '-') AS growth,
IFNULL(ROUND(a.gdp_proportion, 2), '-') AS gdpProportion
FROM j_industry_depth a
WHERE a.years = YEAR(NOW()) - 1
UNION ALL
SELECT a.years,
a.industry_categories,
IFNULL(ROUND(a.year_revenue / 10000, 1), '-') AS yearRevenue,
IFNULL(ROUND(a.add_value, 1), '-') AS addValue,
IFNULL(ROUND(a.growth, 1), '-') AS growth,
IFNULL(ROUND(a.gdp_proportion, 2), '-') AS gdpProportion
FROM j_industry_depth a
WHERE a.years = YEAR(NOW()) - 2
AND NOT EXISTS (
SELECT 1
FROM j_industry_depth b
WHERE b.years = YEAR(NOW()) - 1
)
</select>
<select id="getMiddleIndustry"
resultType="com.ruoyi.jjh.ent.entity.response.JBigMiddleIndustryResponse">

@ -9,9 +9,7 @@
'-' AS years,
count(*) AS count
FROM
bms_enterprise_basic_info
where type not like concat('%','3','%')
UNION
bms_enterprise_basic_info UNION
SELECT
'规上企业总数' AS dataName,
'-' AS years,
@ -35,7 +33,7 @@
WHEN '2' THEN
'生活性服务业企业数'
WHEN '3' THEN
'规上服务业企业数' ELSE '限上批零住餐企业数'
'新兴服务业企业数' ELSE '限上批零住餐企业数'
END AS dataName,
#{year} AS years,
IF
@ -50,8 +48,7 @@
FROM
j_services_list
GROUP BY
services_type
UNION SELECT
services_type UNION SELECT
a.dict_label AS dataName,
#{year} AS years,
IFNULL( rs.count, '-' ) AS count

@ -16,9 +16,6 @@
<if test="req.contactName != null and req.contactName != '' ">
and contact_name like concat('%',#{req.contactName},'%')
</if>
<if test="req.contactPhone != null and req.contactPhone != '' ">
and contact_phone like concat('%',#{req.contactPhone},'%')
</if>
<if test="req.contactOffice != null and req.contactOffice != '' ">
and contact_office like concat('%',#{req.contactOffice},'%')
</if>

@ -33,22 +33,4 @@
</if>
</where>
</select>
<select id="getYtb" resultType="com.ruoyi.jjh.declaration.entity.BmsDeclarationRecords">
SELECT
a.credit_code,
b.qymc as matter,
a.template_json,
a.template_record_id
FROM
bms_declaration_records as a
LEFT JOIN bms_enterprise_basic_info as b ON a.credit_code = b.tyshxydm
<where>
<if test="list != null and list.size>0">
and a.id in
<foreach collection="list" item="item" separator="," open="(" close=")">
#{item}
</foreach>
</if>
</where>
</select>
</mapper>

@ -41,7 +41,7 @@
b.years
FROM
bms_enterprise_basic_info a
LEFT JOIN j_business_revenue b ON a.tyshxydm = b.tyshxydm
LEFT JOIN j_business_revenue b ON a.tyshxydm = b.tyshxydm COLLATE utf8mb4_general_ci
<where>
a.type = 1
<if test="req.qymc != null and req.qymc != '' ">
@ -67,56 +67,21 @@
# GROUP BY
# a.type,
# b.qyCount
-- 使用外部查询进行排序
SELECT * FROM (
-- 查询 YEAR(NOW()) - 1 数据
SELECT
IFNULL(ROUND(a.revenue / 100000, 1), '-') AS allRevenue,
IFNULL(ROUND(a.add_value, 1), '-') AS addValue,
a.type AS servicesType,
CASE
WHEN a.type = 3 THEN
(SELECT COUNT(*) FROM bms_enterprise_basic_info WHERE type = 1)
ELSE b.qyCount
END AS qyCount
FROM
j_total_revenue a
LEFT JOIN (
SELECT a.services_type, COUNT(*) AS qyCount
FROM j_services_list a
GROUP BY a.services_type
) AS b ON a.type = b.services_type
WHERE
a.years = YEAR(NOW()) - 1
SELECT
IFNULL( ROUND( a.revenue / 100000, 1 ), '-' ) AS allRevenue,
IFNULL( ROUND( a.add_value, 1 ), '-' ) AS addValue,
a.type AS servicesType,
CASE
-- 使用 UNION ALL 查询 YEAR(NOW()) - 2 数据,仅当 YEAR(NOW()) - 1 数据为空时执行
UNION ALL
SELECT
IFNULL(ROUND(a.revenue / 100000, 1), '-') AS allRevenue,
IFNULL(ROUND(a.add_value, 1), '-') AS addValue,
a.type AS servicesType,
CASE
WHEN a.type = 3 THEN
(SELECT COUNT(*) FROM bms_enterprise_basic_info WHERE type = 1)
ELSE b.qyCount
END AS qyCount
FROM
j_total_revenue a
LEFT JOIN (
SELECT a.services_type, COUNT(*) AS qyCount
FROM j_services_list a
GROUP BY a.services_type
) AS b ON a.type = b.services_type
WHERE
a.years = YEAR(NOW()) - 2
AND NOT EXISTS (
SELECT 1
FROM j_total_revenue a1
WHERE a1.years = YEAR(NOW()) - 1
)
) AS result
ORDER BY FIELD(result.servicesType, 3, 1, 2, 4);
WHEN a.type = 3 THEN
( SELECT COUNT(*) FROM bms_enterprise_basic_info WHERE type = 1 ) ELSE b.qyCount
END AS qyCount
FROM
j_total_revenue a
LEFT JOIN ( SELECT a.services_type, COUNT(*) AS qyCount FROM j_services_list a GROUP BY a.services_type ) AS b ON a.type = b.services_type
WHERE
a.years = YEAR (NOW()) - 1
ORDER BY FIELD(a.type, 3, 1, 2, 4);
</select>

@ -0,0 +1,8 @@
苏州工业园区服务业发展情况
2023年4月
一、总体实力显著增强
产业规模高速增长,综合贡献明显提升。
近年来园区服务业保持持续增长态势截至目前园区服务业规上企业总计677家。2021年园区实现服务业增加值1674.4亿元占GDP比重达50.3%。2022年全年实现服务业增加值1753.18亿元占GDP比重49.9%。2023年1-3月实现服务业增加值405.95亿元同比增加4.2%。7大服务业核算行业①多式联运和运输代理业、②装卸报运和仓储业、③互联网和相关服务、软件信息服务业、④租赁和商务服务业、⑤居民服务、修理和其他服务业、⑥文化、体育和娱乐业、⑦科学研究和技术服务业2022年全年营收1311.71亿元增速达22%2023年1-3月实现营收348.34亿元同比增速35%。根据苏州市新兴服务业行业分类含金融服务、信息服务、物流服务、科技服务、商务中介服务、设计服务、人力资源服务、检验检测认证、低碳绿色服务、现代商贸、文化消费、旅游康养等12个类别2022年园区新兴服务业营收达1488.57亿元较上年增长24%。
二、产业结构持续优化
产业结构逐步优化生产性服务占主导。经过多年发展园区服务业产业结构逐渐多样化生产性服务业与生活性服务业基本形成73的格局。2022年生产性服务业增加值达到1199.5亿元占服务业增加值比重达68.4%。截至目前园区生产性服务业规上企业总计655家含部分工业企业。自2019年苏州市开展全市生产性服务业综合评价以来园区已连续两年考评优秀。37家园区企业入选苏州市生产性服务业领军企业占全市51%位居全市第一并成为苏州首个实现生产性服务业9大重点领域信息技术服务、研发设计、金融服务、检验检测认证、知识产权服务、节能环保服务、人力资源服务、现代供应链管理、商务服务全覆盖的区域。推动先进制造业和现代服务业深度融合发展2022年初园区获评江苏省两业融合深度融合试点地区。
城市活力不断提升,生活性服务显潜能。完成环金鸡湖商圈城市活力提升规划并正式发布,引导环金鸡湖商圈核心商业体差异定位、错位发展,金鸡湖景区获评第一批省级现代服务业高质量发展集聚示范区。积极引入北京及上海周边外溢资源,推动园区载体与国内优质品牌对接,加快发展"首店经济"(首店经济是指一个区域利用特有的资源优势,吸引国内外品牌在区域首次开设门店,目前园区大力推动"中国首店""苏州首店"落户园区)。通过开展"云购金鸡湖"等活动持续打造金鸡湖系列IP宣传园区特色消费场景在后疫情时代不断激发生活性服务业发展潜能。

@ -9,7 +9,9 @@ import com.ruoyi.common.core.domain.model.LoginUser;
import com.ruoyi.common.core.redis.RedisCache;
import com.ruoyi.common.enums.UserStatus;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.exception.user.*;
import com.ruoyi.common.exception.user.CaptchaException;
import com.ruoyi.common.exception.user.CaptchaExpireException;
import com.ruoyi.common.exception.user.UserPasswordNotMatchException;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.MessageUtils;
import com.ruoyi.common.utils.RsaUtils;
@ -82,9 +84,14 @@ public class SysLoginService {
throw new RuntimeException(e);
}
// 验证码校验
validateCaptcha(username, code, uuid);
validateCaptcha(username, code, uuid);
// 登录前置校验
loginPreCheck(username, strP);
Map<String, Object> map = redisCache.getCacheObject(username + strP);
if (CollectionUtil.isNotEmpty(map)) {
map.remove("@type");
return map;
}
// 用户验证
Authentication authentication;
try {
@ -103,9 +110,32 @@ public class SysLoginService {
} finally {
AuthenticationContextHolder.clearContext();
}
AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success")));
// AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success")));
LoginUser loginUser = (LoginUser) authentication.getPrincipal();
recordLoginInfo(loginUser.getUserId());
// recordLoginInfo(loginUser.getUserId());
if (StringUtils.isNull(loginUser) || StringUtils.isNull(loginUser.getUserId())) {
// addRecord(username, Constants.LOGIN_FAIL, "登录用户不存在");
throw new ServiceException("登录用户:" + username + " 不存在");
}
loginUser.getUser().setPassword(password);
SysUser user = loginUser.getUser();
// 判断用户类型
if (!"admin".equals(username)) {
if (!userType.equals(user.getUserType())) {
throw new ServiceException("该用户类型错误");
}
}
if (UserStatus.DELETED.getCode().equals(user.getDelFlag())) {
// addRecord(username, Constants.LOGIN_FAIL, "对不起,您的账号已被删除");
throw new ServiceException("对不起,您的账号:" + username + " 已被删除");
}
if (UserStatus.DISABLE.getCode().equals(user.getStatus())) {
// addRecord(username, Constants.LOGIN_FAIL, "用户已停用,请联系管理员");
throw new ServiceException("对不起,您的账号:" + username + " 已停用");
}
// sysPasswordService.validate(user);
// 生成token
return tokenService.createToken(loginUser);
}
@ -143,32 +173,30 @@ public class SysLoginService {
*/
public void loginPreCheck(String username, String password) {
// 用户名或密码为空 错误
if (StringUtils.isEmpty(username) || StringUtils.isEmpty(password))
{
AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("not.null")));
throw new UserNotExistsException();
if (StringUtils.isAnyBlank(username, password)) {
// this.addRecord(username, Constants.LOGIN_FAIL, "用户/密码必须填写");
throw new ServiceException("用户/密码必须填写");
}
// 密码如果不在指定范围内 错误
if (password.length() < UserConstants.PASSWORD_MIN_LENGTH
|| password.length() > UserConstants.PASSWORD_MAX_LENGTH)
{
AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.password.not.match")));
throw new UserPasswordNotMatchException();
|| password.length() > UserConstants.PASSWORD_MAX_LENGTH) {
// this.addRecord(username, Constants.LOGIN_FAIL, "用户密码不在指定范围");
throw new ServiceException("用户密码不在指定范围");
}
// 用户名不在指定范围内 错误
if (username.length() < UserConstants.USERNAME_MIN_LENGTH
|| username.length() > UserConstants.USERNAME_MAX_LENGTH)
{
AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.password.not.match")));
throw new UserPasswordNotMatchException();
|| username.length() > UserConstants.USERNAME_MAX_LENGTH) {
// this.addRecord(username, Constants.LOGIN_FAIL, "用户名不在指定范围");
throw new ServiceException("用户名不在指定范围");
}
// IP黑名单校验
String blackStr = configService.selectConfigByKey("sys.login.blackIPList");
if (IpUtils.isMatchedIp(blackStr, IpUtils.getIpAddr()))
{
AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("login.blocked")));
throw new BlackListException();
}
// String blackStr = configService.selectConfigByKey("sys.login.blackIPList");
// if (IpUtils.isMatchedIp(blackStr, IpUtils.getIpAddr()))
// {
// AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("login.blocked")));
// throw new BlackListException();
// }
}
/**

@ -323,27 +323,6 @@ public class SysUserServiceImpl implements ISysUserService, UserService {
userPostMapper.deleteUserPostByUserId(userId);
// 新增用户与岗位管理
insertUserPost(user);
if ("02".equals(user.getUserType()) & isTiming) {
if (user.getPhonenumber() != null) {
Digester sha256 = new Digester(DigestAlgorithm.SHA256);
String timestamp = String.valueOf(Instant.now().getEpochSecond());
String str = RandomUtil.randomString(30);
//请求头
HashMap<String, String> headers = new HashMap<>();//存放请求头,可以存放多个请求头
headers.put("x-tif-paasid", paaSID);
headers.put("x-tif-signature", sha256.digestHex(timestamp + smsToken + str + timestamp).toUpperCase());
headers.put("x-tif-timestamp", timestamp);
headers.put("x-tif-nonce", str);
Map<String, Object> js1 = new HashMap<>();//存放参数
js1.put("orderId", code);
js1.put("nums", user.getPhonenumber());
HttpResponse response = HttpRequest.post(smsPhoneAdd)
.addHeaders(headers)
.form(js1)
.execute();
System.out.println(response.body());
}
}
return userMapper.updateUser(user);
}

Binary file not shown.
Loading…
Cancel
Save