Merge branch 'wq1' of SH-Arbitrate/Mediation-Backend into dev
This commit was merged in pull request #142.
This commit is contained in:
+2
-8
@@ -103,18 +103,13 @@ public interface MsCaseApplicationService {
|
|||||||
*/
|
*/
|
||||||
AjaxResult userIdentify(MultipartFile file);
|
AjaxResult userIdentify(MultipartFile file);
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 生成调解申请书
|
* 生成调解申请书
|
||||||
* @param req
|
* @param req
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
AjaxResult generateApplication(MsCaseApplicationReq req);
|
AjaxResult generateApplication(MsCaseApplicationReq req);
|
||||||
/**
|
|
||||||
* 生成调解申请书
|
|
||||||
* @param req
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
AjaxResult generateApplication1(MsCaseApplicationReq req);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据批次号和流程id查找未锁定的案件
|
* 根据批次号和流程id查找未锁定的案件
|
||||||
@@ -232,8 +227,7 @@ public interface MsCaseApplicationService {
|
|||||||
* @param bookmarkList 标签
|
* @param bookmarkList 标签
|
||||||
* @param dictDataList 内置字段
|
* @param dictDataList 内置字段
|
||||||
*/
|
*/
|
||||||
void createMediateApplication(MsCaseApplication application, List<MsCaseAffiliate> affiliates, String templatePath, List<String> bookmarkList, List<SysDictData> dictDataList, Integer templateType) ;
|
void createMediateApplication(MsCaseApplication application, List<MsCaseAffiliate> affiliates, String templatePath, List<String> bookmarkList, List<SysDictData> dictDataList, Integer templateType) ;
|
||||||
void createMediateApplication1(MsCaseApplication application, List<MsCaseAffiliate> affiliates, String templatePath, List<String> bookmarkList, List<SysDictData> dictDataList, Integer templateType) ;
|
|
||||||
/**
|
/**
|
||||||
* 调解书上传到onlyoffice服务器
|
* 调解书上传到onlyoffice服务器
|
||||||
* @param annexPath
|
* @param annexPath
|
||||||
|
|||||||
+4
-234
@@ -683,7 +683,7 @@ public class MsCaseApplicationServiceImpl implements MsCaseApplicationService {
|
|||||||
// 生成调解申请书
|
// 生成调解申请书
|
||||||
req.setTemplateType(TemplateTypeEnum.PERSON_MEDIATION_APPLICATION.getCode());
|
req.setTemplateType(TemplateTypeEnum.PERSON_MEDIATION_APPLICATION.getCode());
|
||||||
req.setTemplateId(String.valueOf(caseApplication.getTemplateId()));
|
req.setTemplateId(String.valueOf(caseApplication.getTemplateId()));
|
||||||
caseApplicationService.generateApplication1(req);
|
caseApplicationService.generateApplication(req);
|
||||||
// 保存案件附件
|
// 保存案件附件
|
||||||
if (CollectionUtil.isNotEmpty(caseAttachList)) {
|
if (CollectionUtil.isNotEmpty(caseAttachList)) {
|
||||||
for (MsCaseAttach caseAttach : caseAttachList) {
|
for (MsCaseAttach caseAttach : caseAttachList) {
|
||||||
@@ -1057,7 +1057,7 @@ public class MsCaseApplicationServiceImpl implements MsCaseApplicationService {
|
|||||||
// 自然人
|
// 自然人
|
||||||
req.setTemplateType(TemplateTypeEnum.PERSON_MEDIATION_APPLICATION.getCode());
|
req.setTemplateType(TemplateTypeEnum.PERSON_MEDIATION_APPLICATION.getCode());
|
||||||
req.setTemplateId(String.valueOf(selectByPrimaryKey.getTemplateId()));
|
req.setTemplateId(String.valueOf(selectByPrimaryKey.getTemplateId()));
|
||||||
caseApplicationService.generateApplication1(req);
|
caseApplicationService.generateApplication(req);
|
||||||
// 新增日志
|
// 新增日志
|
||||||
CaseLogUtils.insertCaseLog(caseApplication.getId(), 0, "修改案件",null);
|
CaseLogUtils.insertCaseLog(caseApplication.getId(), 0, "修改案件",null);
|
||||||
|
|
||||||
@@ -1443,85 +1443,6 @@ public class MsCaseApplicationServiceImpl implements MsCaseApplicationService {
|
|||||||
// MsCaseAffiliate affiliate = affiliateMap.get(application.getId());
|
// MsCaseAffiliate affiliate = affiliateMap.get(application.getId());
|
||||||
// if(affiliate==null){
|
// if(affiliate==null){
|
||||||
// continue;
|
// continue;
|
||||||
// }
|
|
||||||
// caseApplicationService.createMediateApplication(application, affiliate, templatePath, bookmarkList,dictDataList,req.getTemplateType());
|
|
||||||
|
|
||||||
}
|
|
||||||
}else {
|
|
||||||
// 单独生成调解申请书
|
|
||||||
// 根据案件id查询案件信息
|
|
||||||
MsCaseApplication application = msCaseApplicationMapper.selectByPrimaryKey(req.getId());
|
|
||||||
// 查询案件关联人员
|
|
||||||
List<MsCaseAffiliate> msCaseAffiliates = selectAffliatesByCaseId(req.getId());
|
|
||||||
if (application == null || msCaseAffiliates == null) {
|
|
||||||
throw new ServiceException("该案件不存在");
|
|
||||||
}
|
|
||||||
|
|
||||||
caseApplicationService.createMediateApplication(application, msCaseAffiliates, templatePath, bookmarkList,dictDataList,req.getTemplateType());
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
return AjaxResult.success();
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* 生成调解申请书
|
|
||||||
* @param req
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
@Transactional
|
|
||||||
@Override
|
|
||||||
public AjaxResult generateApplication1(MsCaseApplicationReq req) {
|
|
||||||
// 根据模板id查询申请书
|
|
||||||
if(req.getTemplateId()==null || req.getTemplateType()==null){
|
|
||||||
return AjaxResult.error("模板id不能为空");
|
|
||||||
}
|
|
||||||
TemplateManage templateManage=templateManageMapper.selectByIdAndType(Long.valueOf(req.getTemplateId()),req.getTemplateType());
|
|
||||||
if(templateManage==null||StrUtil.isEmpty(templateManage.getTemOrigPath())){
|
|
||||||
throw new ServiceException("未找到模板");
|
|
||||||
}
|
|
||||||
String templatePath = "/home/ruoyi" + templateManage.getTemOrigPath();
|
|
||||||
templatePath=templatePath.replace("/profile","/uploadPath");
|
|
||||||
try {
|
|
||||||
File file = new File(templatePath);
|
|
||||||
} catch (Exception e) {
|
|
||||||
throw new ServiceException("未找到模板");
|
|
||||||
}
|
|
||||||
// // 获取模板中的占位符key
|
|
||||||
List<String> bookmarkList = getBookmarkByDocx(templatePath);
|
|
||||||
if (CollectionUtil.isEmpty(bookmarkList)) {
|
|
||||||
throw new ServiceException("请检查模板是否配置正确,未获取到占位符");
|
|
||||||
}
|
|
||||||
// 在系统表中查询案件内置字段
|
|
||||||
SysDictData sysDictData = new SysDictData();
|
|
||||||
sysDictData.setDictType("case_built_type");
|
|
||||||
List<SysDictData> dictDataList = dictDataMapper.selectDictDataList(sysDictData);
|
|
||||||
if(CollectionUtil.isEmpty(dictDataList)){
|
|
||||||
throw new ServiceException("未找到系统内置字段");
|
|
||||||
}
|
|
||||||
// 如果批号不为空,则为批量操作,根据批号查询未锁定的案件
|
|
||||||
if(StrUtil.isNotEmpty(req.getBatchNumber())){
|
|
||||||
List<MsCaseApplication> caseApplicationList=listByBatchNumber(req.getBatchNumber(),req.getCaseFlowId());
|
|
||||||
if(CollectionUtil.isEmpty(caseApplicationList)){
|
|
||||||
throw new ServiceException("该批次号下未找到案件");
|
|
||||||
}
|
|
||||||
// 案件ids
|
|
||||||
List<Long> caseIds = caseApplicationList.stream().map(MsCaseApplication::getId).collect(Collectors.toList());
|
|
||||||
// 根据ids查询案件关联人员
|
|
||||||
Example afflicateExample = new Example(MsCaseAffiliate.class);
|
|
||||||
afflicateExample.createCriteria().andIn("caseAppliId", caseIds);
|
|
||||||
List<MsCaseAffiliate> affiliateList = msCaseAffiliateMapper.selectByExample(afflicateExample);
|
|
||||||
if(CollectionUtil.isEmpty(affiliateList)){
|
|
||||||
throw new ServiceException("该批次号下未找到案件关联人员");
|
|
||||||
}
|
|
||||||
|
|
||||||
Map<Long, MsCaseAffiliate> affiliateMap = affiliateList.stream().collect(Collectors.toMap(MsCaseAffiliate::getCaseAppliId, Function.identity()));
|
|
||||||
|
|
||||||
// 循环生成调解申请书
|
|
||||||
for (MsCaseApplication application : caseApplicationList) {
|
|
||||||
// todo 批量的未改案件相关人员,结构已发生变化
|
|
||||||
// MsCaseAffiliate affiliate = affiliateMap.get(application.getId());
|
|
||||||
// if(affiliate==null){
|
|
||||||
// continue;
|
|
||||||
// }
|
// }
|
||||||
// caseApplicationService.createMediateApplication(application, affiliate, templatePath, bookmarkList,dictDataList,req.getTemplateType());
|
// caseApplicationService.createMediateApplication(application, affiliate, templatePath, bookmarkList,dictDataList,req.getTemplateType());
|
||||||
|
|
||||||
@@ -1536,7 +1457,7 @@ public class MsCaseApplicationServiceImpl implements MsCaseApplicationService {
|
|||||||
throw new ServiceException("该案件不存在");
|
throw new ServiceException("该案件不存在");
|
||||||
}
|
}
|
||||||
|
|
||||||
caseApplicationService.createMediateApplication1(application, msCaseAffiliates, templatePath, bookmarkList,dictDataList,req.getTemplateType());
|
caseApplicationService.createMediateApplication(application, msCaseAffiliates, templatePath, bookmarkList,dictDataList,req.getTemplateType());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -3175,7 +3096,7 @@ public class MsCaseApplicationServiceImpl implements MsCaseApplicationService {
|
|||||||
req.setTemplateType(TemplateTypeEnum.MEDIATION_AGREEMENT.getCode());
|
req.setTemplateType(TemplateTypeEnum.MEDIATION_AGREEMENT.getCode());
|
||||||
|
|
||||||
}
|
}
|
||||||
AjaxResult result = caseApplicationService.generateApplication1(req);
|
AjaxResult result = caseApplicationService.generateApplication(req);
|
||||||
// 修改案件结果
|
// 修改案件结果
|
||||||
application.setMediaResult(req.getMediaResult());
|
application.setMediaResult(req.getMediaResult());
|
||||||
msCaseApplicationMapper.updateByPrimaryKeySelective(application);
|
msCaseApplicationMapper.updateByPrimaryKeySelective(application);
|
||||||
@@ -3231,159 +3152,8 @@ public class MsCaseApplicationServiceImpl implements MsCaseApplicationService {
|
|||||||
return nextFlow;
|
return nextFlow;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 生成调解申请书
|
|
||||||
* @param application 案件基本信息
|
|
||||||
* @param affiliates 案件相关人员
|
|
||||||
* @param templatePath 模板路径
|
|
||||||
* @param bookmarkList 标签
|
|
||||||
* @param dictDataList 内置字段
|
|
||||||
*/
|
|
||||||
@Transactional
|
@Transactional
|
||||||
public void createMediateApplication(MsCaseApplication application, List<MsCaseAffiliate> affiliates, String templatePath, List<String> bookmarkList, List<SysDictData> dictDataList,Integer templateType) {
|
public void createMediateApplication(MsCaseApplication application, List<MsCaseAffiliate> affiliates, String templatePath, List<String> bookmarkList, List<SysDictData> dictDataList,Integer templateType) {
|
||||||
// 申请书需要的字段和内容,valueMap<占位符,替换的值>
|
|
||||||
Map<String, String> valueMap = new HashMap<>();
|
|
||||||
// 操作人信息
|
|
||||||
Map<Integer, List<MsCaseAffiliate>> operatorMap = affiliates.stream().collect(Collectors.groupingBy(MsCaseAffiliate::getOperatorFlag, Collectors.toList()));
|
|
||||||
// 按角色分类
|
|
||||||
Map<Integer, MsCaseAffiliate> roleTypeMap = affiliates.stream().collect(Collectors.toMap(MsCaseAffiliate::getRoleType, Function.identity(), (k1, k2) -> k1));
|
|
||||||
// Map<Integer, List<MsCaseAffiliate>> roleTypeMap = affiliates.stream().collect(Collectors.groupingBy(MsCaseAffiliate::getRoleType, Collectors.toList()));
|
|
||||||
|
|
||||||
for (SysDictData dictData : dictDataList) {
|
|
||||||
if (CASE_BASE_COLUMN.contains(dictData.getDictValue())) {
|
|
||||||
valueMap.put(dictData.getDictLabel(), ObjectFieldUtils.getValue(application, dictData.getDictValue()));
|
|
||||||
} else {
|
|
||||||
// todo 相关人员字段,如果有多个申请人,被申请人,模板需要变化,待讨论,暂做成取第一个操作人
|
|
||||||
List<MsCaseAffiliate> msCaseAffiliates = operatorMap.get(1);
|
|
||||||
if(CollectionUtil.isNotEmpty(msCaseAffiliates)) {
|
|
||||||
Map<Integer, MsCaseAffiliate> roleTypeOperatorMap = msCaseAffiliates.stream().collect(Collectors.toMap(MsCaseAffiliate::getRoleType, Function.identity(), (k1, k2) -> k1));
|
|
||||||
if(dictData.getDictLabel().contains("被申请人")){
|
|
||||||
if(roleTypeOperatorMap.get(3)!=null ) {
|
|
||||||
valueMap.put(dictData.getDictLabel(), ObjectFieldUtils.getValue(roleTypeOperatorMap.get(3), dictData.getDictValue()));
|
|
||||||
}else {
|
|
||||||
valueMap.put(dictData.getDictLabel(), ObjectFieldUtils.getValue(roleTypeMap.get(3), dictData.getDictValue()));
|
|
||||||
}
|
|
||||||
}else if(dictData.getDictLabel().contains("被申请人委托代理人")){
|
|
||||||
if(roleTypeOperatorMap.get(4)!=null ) {
|
|
||||||
valueMap.put(dictData.getDictLabel(), ObjectFieldUtils.getValue(roleTypeOperatorMap.get(4), dictData.getDictValue()));
|
|
||||||
}else {
|
|
||||||
valueMap.put(dictData.getDictLabel(), ObjectFieldUtils.getValue(roleTypeMap.get(4), dictData.getDictValue()));
|
|
||||||
}
|
|
||||||
}else if(dictData.getDictLabel().contains("申请人")
|
|
||||||
|| dictData.getDictLabel().equals("统一社会信用代码")
|
|
||||||
|| dictData.getDictLabel().equals("法定代表人")
|
|
||||||
){
|
|
||||||
if(roleTypeOperatorMap.get(1)!=null ) {
|
|
||||||
valueMap.put(dictData.getDictLabel(), ObjectFieldUtils.getValue(roleTypeOperatorMap.get(1), dictData.getDictValue()));
|
|
||||||
}else {
|
|
||||||
valueMap.put(dictData.getDictLabel(), ObjectFieldUtils.getValue(roleTypeMap.get(1), dictData.getDictValue()));
|
|
||||||
}
|
|
||||||
}else if(dictData.getDictLabel().contains("委托代理人")){
|
|
||||||
if(roleTypeOperatorMap.get(2)!=null ) {
|
|
||||||
valueMap.put(dictData.getDictLabel(), ObjectFieldUtils.getValue(roleTypeOperatorMap.get(2), dictData.getDictValue()));
|
|
||||||
}else {
|
|
||||||
valueMap.put(dictData.getDictLabel(), ObjectFieldUtils.getValue(roleTypeMap.get(2), dictData.getDictValue()));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
// 书签对应值
|
|
||||||
Map<String, Object> bookmarkValueMap = new HashMap<>();
|
|
||||||
// 读取调节申请书,找到占位符,替换值
|
|
||||||
// 遍历书签,给书签赋值
|
|
||||||
replaceBookmark(bookmarkList, bookmarkValueMap, valueMap);
|
|
||||||
// 申请书生成时间
|
|
||||||
LocalDate now = LocalDate.now();
|
|
||||||
int year = now.getYear();
|
|
||||||
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日");
|
|
||||||
// 格式化当前日期
|
|
||||||
String formattedDate = now.format(formatter);
|
|
||||||
bookmarkValueMap.put("日期", formattedDate);
|
|
||||||
|
|
||||||
String month = String.format("%02d", now.getMonthValue());
|
|
||||||
String day = String.format("%02d", now.getDayOfMonth());
|
|
||||||
String saveFolderPath = RuoYiConfig.getUploadPath()+"/"+ year + "/" + month + "/" + day;
|
|
||||||
Integer annexType = null;
|
|
||||||
if(templateType==null
|
|
||||||
|| templateType.equals(TemplateTypeEnum.MEDIATION_APPLICATION.getCode())
|
|
||||||
|| templateType.equals(TemplateTypeEnum.PERSON_MEDIATION_APPLICATION.getCode()) ){
|
|
||||||
// 调解申请书
|
|
||||||
annexType = AnnexTypeEnum.MEDIATION_APPLICATION.getCode();
|
|
||||||
}else if(templateType.equals(TemplateTypeEnum.MEDIATION_AGREEMENT.getCode())
|
|
||||||
|| templateType.equals(TemplateTypeEnum.MEDIATE_BOOK.getCode()) ){
|
|
||||||
// 调解书和解协议
|
|
||||||
annexType = AnnexTypeEnum.MEDIATE_BOOK.getCode();
|
|
||||||
}
|
|
||||||
|
|
||||||
String orgFileName = "调解申请书";
|
|
||||||
if (annexType != null && annexType.equals(AnnexTypeEnum.MEDIATE_BOOK.getCode())) {
|
|
||||||
orgFileName = "调解书";
|
|
||||||
}
|
|
||||||
String fileName = UUID.randomUUID().toString().replace("-", "")+orgFileName + ".docx";
|
|
||||||
String resultFilePath = saveFolderPath + "/" + fileName;
|
|
||||||
// 将word中的标签替换掉,生成新的word
|
|
||||||
wordChangeText(templatePath, bookmarkValueMap,saveFolderPath,resultFilePath);
|
|
||||||
|
|
||||||
MsCaseAttach caseAttach = null;
|
|
||||||
String annexPath=resultFilePath.replace(RuoYiConfig.getProfile(),Constants.RESOURCE_PREFIX);
|
|
||||||
// 如果是调解书或者调解协议上传到onlyoffice服务器
|
|
||||||
if(annexType != null && annexType.equals(AnnexTypeEnum.MEDIATE_BOOK.getCode())){
|
|
||||||
JSONArray jsonArray = caseApplicationService.uploadOnlyOffice(annexPath,application.getId());
|
|
||||||
if(jsonArray!=null && jsonArray.size() > 0){
|
|
||||||
for (Object obj : jsonArray) {
|
|
||||||
JSONObject jsonObject = (JSONObject) obj;
|
|
||||||
caseAttach= MsCaseAttach.builder()
|
|
||||||
.caseAppliId(application.getId())
|
|
||||||
.annexName(jsonObject.getString("fileName"))
|
|
||||||
.annexPath(jsonObject.getString("filePath"))
|
|
||||||
.annexType(annexType)
|
|
||||||
.onlyOfficeFileId(jsonObject.getString("fileId"))
|
|
||||||
.build();
|
|
||||||
|
|
||||||
}
|
|
||||||
//保存到附件表里,先删除之前的在保存
|
|
||||||
msCaseAttachMapper.deleteCaseAttachByCasedIdAndType(caseAttach.getCaseAppliId(), annexType);
|
|
||||||
msCaseAttachMapper.save(caseAttach);
|
|
||||||
}
|
|
||||||
|
|
||||||
}else {
|
|
||||||
caseAttach = MsCaseAttach.builder()
|
|
||||||
.caseAppliId(application.getId())
|
|
||||||
.annexName(orgFileName+".docx")
|
|
||||||
.annexPath(resultFilePath.replace(RuoYiConfig.getProfile(),Constants.RESOURCE_PREFIX))
|
|
||||||
.annexType(annexType)
|
|
||||||
.build();
|
|
||||||
// 查找已经存在的附件
|
|
||||||
List<MsCaseAttach> existAttach = msCaseAttachMapper.listCaseAttachByCaseIdAndType(application.getId(), annexType);
|
|
||||||
if(CollectionUtil.isNotEmpty(existAttach)){
|
|
||||||
// todo 对接北明,同步案件状态,删除
|
|
||||||
for (MsCaseAttach msCaseAttach : existAttach) {
|
|
||||||
if(StrUtil.isEmpty(msCaseAttach.getOtherSysFileId())||StrUtil.isEmpty(msCaseAttach.getAnnexPath())){
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
beiMingInterfaceService.deleteAttachmentInfo(application.getCaseNum(), msCaseAttach.getOtherSysFileId(), FileUtil.getName(msCaseAttach.getAnnexPath()));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
msCaseAttachMapper.deleteCaseAttachByCasedIdAndType(caseAttach.getCaseAppliId(), annexType);
|
|
||||||
if(StrUtil.isEmpty(application.getCaseSource())) {
|
|
||||||
// 北明推送
|
|
||||||
String path = "/home/ruoyi" + caseAttach.getAnnexPath();
|
|
||||||
File file = new File(path.replace("/profile", "/uploadPath"));
|
|
||||||
MsCaseFileInfo caseFileInfo = beiMingInterfaceService.pushAttachmentInfo(BMUserName, BMPassword, file, BMSyncSource, application.getCaseNum(), AttachmentOperateTypeEnum.ADD, DocumentTypeEnum.EVEDENT_APPLY_BOOK);
|
|
||||||
|
|
||||||
// 更新附件表
|
|
||||||
if (caseFileInfo != null && StrUtil.isNotEmpty(caseFileInfo.getFileId())) {
|
|
||||||
caseAttach.setOtherSysFileId(caseFileInfo.getFileId());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
msCaseAttachMapper.save(caseAttach);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@Transactional
|
|
||||||
public void createMediateApplication1(MsCaseApplication application, List<MsCaseAffiliate> affiliates, String templatePath, List<String> bookmarkList, List<SysDictData> dictDataList,Integer templateType) {
|
|
||||||
// 申请书需要的字段和内容,valueMap<占位符,替换的值>
|
// 申请书需要的字段和内容,valueMap<占位符,替换的值>
|
||||||
Map<String, String> valueMap = new HashMap<>();
|
Map<String, String> valueMap = new HashMap<>();
|
||||||
for (SysDictData dictData : dictDataList) {
|
for (SysDictData dictData : dictDataList) {
|
||||||
|
|||||||
Reference in New Issue
Block a user