You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

750 lines
38 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

package jnpf.controller;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jnpf.base.ActionResult;
import jnpf.base.UserInfo;
import jnpf.exception.DataException;
import jnpf.permission.entity.UserEntity;
import jnpf.service.*;
import jnpf.entity.*;
import jnpf.util.*;
import jnpf.model.subjectbasic.*;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.util.*;
import jnpf.annotation.JnpfField;
import jnpf.base.vo.PageListVO;
import jnpf.base.vo.PaginationVO;
import jnpf.base.vo.DownloadVO;
import jnpf.config.ConfigValueUtil;
import jnpf.base.entity.ProvinceEntity;
import java.io.IOException;
import java.util.stream.Collectors;
import jnpf.engine.entity.FlowTaskEntity;
import jnpf.exception.WorkFlowException;
import org.springframework.web.multipart.MultipartFile;
import cn.afterturn.easypoi.excel.ExcelExportUtil;
import cn.afterturn.easypoi.excel.ExcelImportUtil;
import cn.afterturn.easypoi.excel.entity.ExportParams;
import cn.afterturn.easypoi.excel.entity.ImportParams;
import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity;
import cn.afterturn.easypoi.excel.entity.enmus.ExcelType;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Workbook;
import java.io.File;
import jnpf.onlinedev.model.ExcelImFieldModel;
import jnpf.onlinedev.model.OnlineImport.ImportDataModel;
import jnpf.onlinedev.model.OnlineImport.ImportFormCheckUniqueModel;
import jnpf.onlinedev.model.OnlineImport.ExcelImportModel;
import jnpf.onlinedev.model.OnlineImport.VisualImportModel;
import cn.xuyanwu.spring.file.storage.FileInfo;
import lombok.Cleanup;
import jnpf.model.visualJson.config.HeaderModel;
import jnpf.base.model.ColumnDataModel;
import jnpf.base.util.VisualUtils;
import org.springframework.transaction.annotation.Transactional;
/**
* Subjectbasic
* @版本: V3.5
* @版权: 引迈信息技术有限公司https://www.jnpfsoft.com
* @作者: JNPF开发平台组
* @日期: 2024-02-01
*/
@Slf4j
@RestController
@Tag(name = "Subjectbasic" , description = "scm")
@RequestMapping("/api/scm/Subjectbasic")
public class SubjectbasicController {
@Autowired
private GeneraterSwapUtil generaterSwapUtil;
@Autowired
private UserProvider userProvider;
@Autowired
private SubjectbasicService subjectbasicService;
@Autowired
private SubjectrepresentativeService subjectrepresentativeService;
@Autowired
private SubjectbusinesslineService subjectbusinesslineService;
@Autowired
private SubjectcontactsService subjectcontactsService;
@Autowired
private SubjectproductblacklistService subjectproductblacklistService;
@Autowired
private ConfigValueUtil configValueUtil;
/**
* 列表
*
* @param subjectbasicPagination
* @return
*/
@Operation(summary = "获取列表")
@PostMapping("/getList")
public ActionResult list(@RequestBody SubjectbasicPagination subjectbasicPagination)throws IOException{
List<SubjectbasicEntity> list= subjectbasicService.getList(subjectbasicPagination);
List<Map<String, Object>> realList=new ArrayList<>();
for (SubjectbasicEntity entity : list) {
Map<String, Object> subjectbasicMap=JsonUtil.entityToMap(entity);
subjectbasicMap.put("id", subjectbasicMap.get("id"));
//副表数据
//子表数据
List<SubjectrepresentativeEntity> subjectrepresentativeList = subjectbasicService.getSubjectrepresentativeList(entity.getId(),subjectbasicPagination);
subjectbasicMap.put("tableField119",JsonUtil.getJsonToList(JsonUtil.getListToJsonArray(subjectrepresentativeList)));
List<SubjectbusinesslineEntity> subjectbusinesslineList = subjectbasicService.getSubjectbusinesslineList(entity.getId(),subjectbasicPagination);
subjectbasicMap.put("tableField188",JsonUtil.getJsonToList(JsonUtil.getListToJsonArray(subjectbusinesslineList)));
List<SubjectcontactsEntity> subjectcontactsList = subjectbasicService.getSubjectcontactsList(entity.getId(),subjectbasicPagination);
subjectbasicMap.put("tableField173",JsonUtil.getJsonToList(JsonUtil.getListToJsonArray(subjectcontactsList)));
List<SubjectproductblacklistEntity> subjectproductblacklistList = subjectbasicService.getSubjectproductblacklistList(entity.getId(),subjectbasicPagination);
subjectbasicMap.put("tableField212",JsonUtil.getJsonToList(JsonUtil.getListToJsonArray(subjectproductblacklistList)));
realList.add(subjectbasicMap);
}
//数据转换
realList = generaterSwapUtil.swapDataList(realList, SubjectbasicConstant.getFormData(), SubjectbasicConstant.getColumnData(), subjectbasicPagination.getModuleId(),false);
//流程状态添加
for(Map<String, Object> vo:realList){
FlowTaskEntity flowTaskEntity = generaterSwapUtil.getInfoSubmit(String.valueOf(vo.get("id")), FlowTaskEntity::getStatus);
if (flowTaskEntity!=null){
vo.put("flowState",flowTaskEntity.getStatus());
}else{
vo.put("flowState",null);
}
//添加流程id
String flowId="";
if(vo.get("flowid")!=null){
flowId = String.valueOf(vo.get("flowid"));
}
if(vo.get("flowid".toUpperCase())!=null){
flowId = String.valueOf(vo.get("flowid".toUpperCase()));
}
if(StringUtil.isNotEmpty(flowId)){
vo.put("flowId" ,flowId);
}
}
//返回对象
PageListVO vo = new PageListVO();
vo.setList(realList);
PaginationVO page = JsonUtil.getJsonToBean(subjectbasicPagination, PaginationVO.class);
vo.setPagination(page);
return ActionResult.success(vo);
}
/**
* 创建
*
* @param subjectbasicForm
* @return
*/
@PostMapping("/{id}")
@Operation(summary = "创建")
public ActionResult create(@PathVariable("id") String id, @RequestBody @Valid SubjectbasicForm subjectbasicForm) {
String b = subjectbasicService.checkForm(subjectbasicForm,0);
if (StringUtil.isNotEmpty(b)){
return ActionResult.fail(b );
}
try{
subjectbasicService.saveOrUpdate(subjectbasicForm, id ,true);
}catch(Exception e){
return ActionResult.fail("新增数据失败");
}
return ActionResult.success("创建成功");
}
/**
* 导出Excel
*
* @return
*/
@Operation(summary = "导出Excel")
@PostMapping("/Actions/Export")
public ActionResult Export(@RequestBody SubjectbasicPagination subjectbasicPagination) throws IOException {
if (StringUtil.isEmpty(subjectbasicPagination.getSelectKey())){
return ActionResult.fail("请选择导出字段");
}
List<SubjectbasicEntity> list= subjectbasicService.getList(subjectbasicPagination);
List<Map<String, Object>> realList=new ArrayList<>();
for (SubjectbasicEntity entity : list) {
Map<String, Object> subjectbasicMap=JsonUtil.entityToMap(entity);
subjectbasicMap.put("id", subjectbasicMap.get("id"));
//副表数据
//子表数据
List<SubjectrepresentativeEntity> subjectrepresentativeList = subjectbasicService.getSubjectrepresentativeList(entity.getId(),subjectbasicPagination);
subjectbasicMap.put("tableField119",JsonUtil.getJsonToList(JsonUtil.getListToJsonArray(subjectrepresentativeList)));
List<SubjectbusinesslineEntity> subjectbusinesslineList = subjectbasicService.getSubjectbusinesslineList(entity.getId(),subjectbasicPagination);
subjectbasicMap.put("tableField188",JsonUtil.getJsonToList(JsonUtil.getListToJsonArray(subjectbusinesslineList)));
List<SubjectcontactsEntity> subjectcontactsList = subjectbasicService.getSubjectcontactsList(entity.getId(),subjectbasicPagination);
subjectbasicMap.put("tableField173",JsonUtil.getJsonToList(JsonUtil.getListToJsonArray(subjectcontactsList)));
List<SubjectproductblacklistEntity> subjectproductblacklistList = subjectbasicService.getSubjectproductblacklistList(entity.getId(),subjectbasicPagination);
subjectbasicMap.put("tableField212",JsonUtil.getJsonToList(JsonUtil.getListToJsonArray(subjectproductblacklistList)));
realList.add(subjectbasicMap);
}
//数据转换
realList = generaterSwapUtil.swapDataList(realList, SubjectbasicConstant.getFormData(), SubjectbasicConstant.getColumnData(), subjectbasicPagination.getModuleId(),false);
String[]keys=!StringUtil.isEmpty(subjectbasicPagination.getSelectKey())?subjectbasicPagination.getSelectKey():new String[0];
UserInfo userInfo=userProvider.get();
DownloadVO vo=this.creatModelExcel(configValueUtil.getTemporaryFilePath(),realList,keys,userInfo);
return ActionResult.success(vo);
}
/**
* 导出表格方法
*/
public DownloadVO creatModelExcel(String path,List<Map<String, Object>>list,String[]keys,UserInfo userInfo){
DownloadVO vo=DownloadVO.builder().build();
List<ExcelExportEntity> entitys=new ArrayList<>();
if(keys.length>0){
ExcelExportEntity tableField119ExcelEntity = new ExcelExportEntity("代表人信息","tableField119");
List<ExcelExportEntity> tableField119List = new ArrayList<>();
ExcelExportEntity tableField188ExcelEntity = new ExcelExportEntity("关联业务线","tableField188");
List<ExcelExportEntity> tableField188List = new ArrayList<>();
ExcelExportEntity tableField173ExcelEntity = new ExcelExportEntity("联系人信息","tableField173");
List<ExcelExportEntity> tableField173List = new ArrayList<>();
ExcelExportEntity tableField212ExcelEntity = new ExcelExportEntity("商品黑名单","tableField212");
List<ExcelExportEntity> tableField212List = new ArrayList<>();
for(String key:keys){
switch(key){
case "calssify" :
entitys.add(new ExcelExportEntity("客户分类" ,"calssify"));
break;
case "subjectBasicType" :
entitys.add(new ExcelExportEntity("主体类型" ,"subjectBasicType"));
break;
case "logo" :
entitys.add(new ExcelExportEntity("公司logo" ,"logo"));
break;
case "name" :
entitys.add(new ExcelExportEntity("客户名称" ,"name"));
break;
case "enterpriseNature" :
entitys.add(new ExcelExportEntity("企业性质" ,"enterpriseNature"));
break;
case "industryClassify" :
entitys.add(new ExcelExportEntity("行业分类" ,"industryClassify"));
break;
case "belongPeople" :
entitys.add(new ExcelExportEntity("归属人员" ,"belongPeople"));
break;
case "customerStarRating" :
entitys.add(new ExcelExportEntity("客户星级" ,"customerStarRating"));
break;
case "country" :
entitys.add(new ExcelExportEntity("国家" ,"country"));
break;
case "city" :
entitys.add(new ExcelExportEntity("所在城市" ,"city"));
break;
case "address" :
entitys.add(new ExcelExportEntity("详细地址" ,"address"));
break;
case "phone" :
entitys.add(new ExcelExportEntity("公司电话" ,"phone"));
break;
case "companyFax" :
entitys.add(new ExcelExportEntity("公司传真" ,"companyFax"));
break;
case "companyWebsite" :
entitys.add(new ExcelExportEntity("公司网址" ,"companyWebsite"));
break;
case "companyDescription" :
entitys.add(new ExcelExportEntity("公司介绍" ,"companyDescription"));
break;
case "socialInformationCodeCertificate" :
entitys.add(new ExcelExportEntity("营业执照" ,"socialInformationCodeCertificate"));
break;
case "registerAddress" :
entitys.add(new ExcelExportEntity("注册地址" ,"registerAddress"));
break;
case "informationCode" :
entitys.add(new ExcelExportEntity("社会统一信息代码" ,"informationCode"));
break;
case "operationStart" :
entitys.add(new ExcelExportEntity("经营时间开始" ,"operationStart"));
break;
case "operationEnd" :
entitys.add(new ExcelExportEntity("经营时间结束" ,"operationEnd"));
break;
case "registerFunds" :
entitys.add(new ExcelExportEntity("注册资金" ,"registerFunds"));
break;
case "operationScope" :
entitys.add(new ExcelExportEntity("经营范围" ,"operationScope"));
break;
case "assetProof" :
entitys.add(new ExcelExportEntity("资产证明" ,"assetProof"));
break;
case "assetMortgageProof" :
entitys.add(new ExcelExportEntity("资产抵押证明" ,"assetMortgageProof"));
break;
case "paidCapitalProof" :
entitys.add(new ExcelExportEntity("实缴资金证明" ,"paidCapitalProof"));
break;
case "otherAptitudeFile" :
entitys.add(new ExcelExportEntity("其他资质文件" ,"otherAptitudeFile"));
break;
case "collaborationStart" :
entitys.add(new ExcelExportEntity("合作时间开始" ,"collaborationStart"));
break;
case "demandVolumeDown" :
entitys.add(new ExcelExportEntity("需求量下" ,"demandVolumeDown"));
break;
case "demandVolumeUpper" :
entitys.add(new ExcelExportEntity("需求量上" ,"demandVolumeUpper"));
break;
case "paymentMethod" :
entitys.add(new ExcelExportEntity("付款方式" ,"paymentMethod"));
break;
case "accountName" :
entitys.add(new ExcelExportEntity("账户名称" ,"accountName"));
break;
case "bankAccount" :
entitys.add(new ExcelExportEntity("银行账号" ,"bankAccount"));
break;
case "depositBank" :
entitys.add(new ExcelExportEntity("开户银行" ,"depositBank"));
break;
case "depositArea" :
entitys.add(new ExcelExportEntity("开户地区" ,"depositArea"));
break;
case "bankBranchName" :
entitys.add(new ExcelExportEntity("支行名称" ,"bankBranchName"));
break;
case "companyTaxNumber" :
entitys.add(new ExcelExportEntity("公司税号" ,"companyTaxNumber"));
break;
case "enterpriseName" :
entitys.add(new ExcelExportEntity("企业名称" ,"enterpriseName"));
break;
case "workAddress" :
entitys.add(new ExcelExportEntity("单位地址" ,"workAddress"));
break;
case "collaborationMethod" :
entitys.add(new ExcelExportEntity("合作方式" ,"collaborationMethod"));
break;
case "settlementMethod" :
entitys.add(new ExcelExportEntity("结算方式" ,"settlementMethod"));
break;
case "advanceRatio" :
entitys.add(new ExcelExportEntity("预付比例" ,"advanceRatio"));
break;
case "accountPeriod" :
entitys.add(new ExcelExportEntity("账期" ,"accountPeriod"));
break;
case "underpaymentMethod" :
entitys.add(new ExcelExportEntity("压款方式" ,"underpaymentMethod"));
break;
case "applyForUnderpaymentRatio" :
entitys.add(new ExcelExportEntity("申请压款金额/比例" ,"applyForUnderpaymentRatio"));
break;
case "marginMethod" :
entitys.add(new ExcelExportEntity("保证金方式" ,"marginMethod"));
break;
case "applyForMarginRatio" :
entitys.add(new ExcelExportEntity("申请保证金额/比例" ,"applyForMarginRatio"));
break;
case "overdueInterestRate" :
entitys.add(new ExcelExportEntity("逾期利率" ,"overdueInterestRate"));
break;
case "applyForOverdueRatio" :
entitys.add(new ExcelExportEntity("申请逾期利率" ,"applyForOverdueRatio"));
break;
case "reservedFields1" :
entitys.add(new ExcelExportEntity("账户类型" ,"reservedFields1"));
break;
case "reservedFields2" :
entitys.add(new ExcelExportEntity("客户类型" ,"reservedFields2"));
break;
case "reservedFields3" :
entitys.add(new ExcelExportEntity("等级" ,"reservedFields3"));
break;
case "autoCreditRating" :
entitys.add(new ExcelExportEntity("信用级别" ,"autoCreditRating"));
break;
case "accountsReceivableUpper1" :
entitys.add(new ExcelExportEntity("应收款上限1" ,"accountsReceivableUpper1"));
break;
case "accountsReceivableUpper2" :
entitys.add(new ExcelExportEntity("应收款上限2" ,"accountsReceivableUpper2"));
break;
case "orderQuantityDown" :
entitys.add(new ExcelExportEntity("订单量下限" ,"orderQuantityDown"));
break;
case "orderQuantityUpper" :
entitys.add(new ExcelExportEntity("订单量上限" ,"orderQuantityUpper"));
break;
case "creditLimit1" :
entitys.add(new ExcelExportEntity("授信额度1" ,"creditLimit1"));
break;
case "creditLimit2" :
entitys.add(new ExcelExportEntity("授信额度2" ,"creditLimit2"));
break;
case "accountsReceivableOverLimit" :
entitys.add(new ExcelExportEntity("应收款项超限比例" ,"accountsReceivableOverLimit"));
break;
case "creditLimitOverLimit" :
entitys.add(new ExcelExportEntity("授信额度超限比例" ,"creditLimitOverLimit"));
break;
case "accountsReceivableOverdue1" :
entitys.add(new ExcelExportEntity("应收款项逾期限制" ,"accountsReceivableOverdue1"));
break;
case "accountsReceivableOverdue2" :
entitys.add(new ExcelExportEntity("应收款项逾期限制2" ,"accountsReceivableOverdue2"));
break;
case "taxPaymentCertificate1" :
entitys.add(new ExcelExportEntity("完税证明超时限制" ,"taxPaymentCertificate1"));
break;
case "taxPaymentCertificate2" :
entitys.add(new ExcelExportEntity("完税证明超时限制2" ,"taxPaymentCertificate2"));
break;
case "fundLimit" :
entitys.add(new ExcelExportEntity("授信额度" ,"fundLimit"));
break;
case "taxBearingRate" :
entitys.add(new ExcelExportEntity("税负率" ,"taxBearingRate"));
break;
case "tableField119-representativeType":
tableField119List.add(new ExcelExportEntity("代表人类型" ,"representativeType"));
break;
case "tableField119-name":
tableField119List.add(new ExcelExportEntity("姓名" ,"name"));
break;
case "tableField119-idCard":
tableField119List.add(new ExcelExportEntity("身份证号" ,"idCard"));
break;
case "tableField119-idCardStart":
tableField119List.add(new ExcelExportEntity("证件有效时间开始" ,"idCardStart"));
break;
case "tableField119-idCardEnd":
tableField119List.add(new ExcelExportEntity("证件有效时间结束" ,"idCardEnd"));
break;
case "tableField119-idCardPhoto1":
tableField119List.add(new ExcelExportEntity("证件照正面" ,"idCardPhoto1"));
break;
case "tableField119-idCardPhoto2":
tableField119List.add(new ExcelExportEntity("证件照反面" ,"idCardPhoto2"));
break;
case "tableField119-idCardPhoto3":
tableField119List.add(new ExcelExportEntity("手持证件照" ,"idCardPhoto3"));
break;
case "tableField119-authorizeFiles":
tableField119List.add(new ExcelExportEntity("授权/证明文件" ,"authorizeFiles"));
break;
case "tableField188-businessLineId":
tableField188List.add(new ExcelExportEntity("关联业务线" ,"businessLineId"));
break;
case "tableField173-logo":
tableField173List.add(new ExcelExportEntity("联系人头像" ,"logo"));
break;
case "tableField173-contactsType":
tableField173List.add(new ExcelExportEntity("联系人类型" ,"contactsType"));
break;
case "tableField173-name":
tableField173List.add(new ExcelExportEntity("姓名" ,"name"));
break;
case "tableField173-position":
tableField173List.add(new ExcelExportEntity("职务" ,"position"));
break;
case "tableField173-mobile":
tableField173List.add(new ExcelExportEntity("手机" ,"mobile"));
break;
case "tableField173-phone":
tableField173List.add(new ExcelExportEntity("电话" ,"phone"));
break;
case "tableField173-companyName":
tableField173List.add(new ExcelExportEntity("公司" ,"companyName"));
break;
case "tableField173-emaile":
tableField173List.add(new ExcelExportEntity("邮箱" ,"emaile"));
break;
case "tableField173-address":
tableField173List.add(new ExcelExportEntity("地址" ,"address"));
break;
case "tableField173-annex":
tableField173List.add(new ExcelExportEntity("附件" ,"annex"));
break;
case "tableField212-productId":
tableField212List.add(new ExcelExportEntity("商品id" ,"productId"));
break;
case "tableField212-name":
tableField212List.add(new ExcelExportEntity("商品名称" ,"name"));
break;
case "tableField212-inventoryUnitId":
tableField212List.add(new ExcelExportEntity("库存单位" ,"inventoryUnitId"));
break;
case "tableField212-salesMainUnitId":
tableField212List.add(new ExcelExportEntity("销售主单位" ,"salesMainUnitId"));
break;
case "tableField212-purchaseOrderQuantityDown":
tableField212List.add(new ExcelExportEntity("采购订货量下限" ,"purchaseOrderQuantityDown"));
break;
case "tableField212-purchaseOrderQuantityUpper":
tableField212List.add(new ExcelExportEntity("采购订货量上限" ,"purchaseOrderQuantityUpper"));
break;
case "tableField212-purchaseOrderMultiple":
tableField212List.add(new ExcelExportEntity("采购订货倍数" ,"purchaseOrderMultiple"));
break;
case "tableField212-purchaseInitialAmount":
tableField212List.add(new ExcelExportEntity("采购起订金额" ,"purchaseInitialAmount"));
break;
case "tableField212-purchaseAllowOverchargingRatio":
tableField212List.add(new ExcelExportEntity("允许超收比例" ,"purchaseAllowOverchargingRatio"));
break;
default:
break;
}
}
if(tableField119List.size() > 0){
tableField119ExcelEntity.setList(tableField119List);
entitys.add(tableField119ExcelEntity);
}
if(tableField188List.size() > 0){
tableField188ExcelEntity.setList(tableField188List);
entitys.add(tableField188ExcelEntity);
}
if(tableField173List.size() > 0){
tableField173ExcelEntity.setList(tableField173List);
entitys.add(tableField173ExcelEntity);
}
if(tableField212List.size() > 0){
tableField212ExcelEntity.setList(tableField212List);
entitys.add(tableField212ExcelEntity);
}
}
ExportParams exportParams = new ExportParams(null, "表单信息");
exportParams.setType(ExcelType.XSSF);
try{
@Cleanup Workbook workbook = new HSSFWorkbook();
if (entitys.size()>0){
if (list.size()==0){
list.add(new HashMap<>());
}
//去除空数据
List<Map<String, Object>> dataList = new ArrayList<>();
for (Map<String, Object> map : list) {
int i = 0;
for (String key : keys) {
//子表
if (key.toLowerCase().startsWith("tablefield")) {
String tableField = key.substring(0, key.indexOf("-" ));
String field = key.substring(key.indexOf("-" ) + 1);
Object o = map.get(tableField);
if (o != null) {
List<Map<String, Object>> childList = (List<Map<String, Object>>) o;
for (Map<String, Object> childMap : childList) {
if (childMap.get(field) != null) {
i++;
}
}
}
} else {
Object o = map.get(key);
if (o != null) {
i++;
}
}
}
if (i > 0) {
dataList.add(map);
}
}
//复杂表头-表头和数据处理
ColumnDataModel columnDataModel = JsonUtil.getJsonToBean(SubjectbasicConstant.getColumnData(), ColumnDataModel.class);
List<HeaderModel> complexHeaderList = columnDataModel.getComplexHeaderList();
if (!Objects.equals(columnDataModel.getType(), 3) && !Objects.equals(columnDataModel.getType(), 5)) {
entitys = VisualUtils.complexHeaderHandel(entitys, complexHeaderList);
dataList = VisualUtils.complexHeaderDataHandel(dataList, complexHeaderList);
}
workbook = ExcelExportUtil.exportExcel(exportParams, entitys, dataList);
}
String fileName = "表单信息" + DateUtil.dateNow("yyyyMMdd") + "_" + RandomUtil.uuId() + ".xlsx";
MultipartFile multipartFile = ExcelUtil.workbookToCommonsMultipartFile(workbook, fileName);
String temporaryFilePath = configValueUtil.getTemporaryFilePath();
FileInfo fileInfo = FileUploadUtils.uploadFile(multipartFile, temporaryFilePath, fileName);
vo.setName(fileInfo.getFilename());
vo.setUrl(UploaderUtil.uploaderFile(fileInfo.getFilename() + "#" + "Temporary") + "&name=" + fileName);
} catch (Exception e) {
log.error("信息导出Excel错误:{}", e.getMessage());
e.printStackTrace();
}
return vo;
}
/**
* 批量删除
* @param ids
* @return
*/
@DeleteMapping("/batchRemove")
@Transactional
@Operation(summary = "批量删除")
public ActionResult batchRemove(@RequestBody String ids){
List<String> idList = JsonUtil.getJsonToList(ids, String.class);
List<String> columnIdList = new ArrayList<>(20);
int i =0;
String errInfo = "";
for (String allId : idList){
FlowTaskEntity taskEntity = generaterSwapUtil.getInfoSubmit(allId, FlowTaskEntity::getId, FlowTaskEntity::getStatus);
if (taskEntity==null){
columnIdList.add(allId);
this.delete(allId);
}else if (taskEntity.getStatus().equals(0) || taskEntity.getStatus().equals(4)){
try {
generaterSwapUtil.deleteFlowTask(taskEntity);
columnIdList.add(allId);
this.delete(allId);
i++;
} catch (WorkFlowException e) {
errInfo = e.getMessage();
e.printStackTrace();
}
}
}
if (i == 0 && columnIdList.size()==0){
return ActionResult.fail("流程已发起,无法删除");
}
if (StringUtil.isNotEmpty(errInfo)){
return ActionResult.fail(errInfo);
}
return ActionResult.success("删除成功");
}
/**
* 编辑
* @param id
* @param subjectbasicForm
* @return
*/
@PutMapping("/{id}")
@Operation(summary = "更新")
public ActionResult update(@PathVariable("id") String id,@RequestBody @Valid SubjectbasicForm subjectbasicForm,
@RequestParam(value = "isImport", required = false) boolean isImport){
subjectbasicForm.setId(id);
if (!isImport) {
String b = subjectbasicService.checkForm(subjectbasicForm,1);
if (StringUtil.isNotEmpty(b)){
return ActionResult.fail(b );
}
}
SubjectbasicEntity entity= subjectbasicService.getInfo(id);
if(entity!=null){
try{
subjectbasicService.saveOrUpdate(subjectbasicForm,id,false);
}catch(Exception e){
return ActionResult.fail("修改数据失败");
}
return ActionResult.success("更新成功");
}else{
return ActionResult.fail("更新失败,数据不存在");
}
}
/**
* 删除
* @param id
* @return
*/
@Operation(summary = "删除")
@DeleteMapping("/{id}")
@Transactional
public ActionResult delete(@PathVariable("id") String id){
SubjectbasicEntity entity= subjectbasicService.getInfo(id);
if(entity!=null){
FlowTaskEntity taskEntity = generaterSwapUtil.getInfoSubmit(id, FlowTaskEntity::getId, FlowTaskEntity::getStatus);
if (taskEntity != null) {
try {
generaterSwapUtil.deleteFlowTask(taskEntity);
} catch (WorkFlowException e) {
e.printStackTrace();
}
}
//假删除
entity.setDeleteMark(1);
subjectbasicService.update(id,entity);
}
return ActionResult.success("删除成功");
}
/**
* 表单信息(详情页)
* 详情页面使用-转换数据
* @param id
* @return
*/
@Operation(summary = "表单信息(详情页)")
@GetMapping("/detail/{id}")
public ActionResult detailInfo(@PathVariable("id") String id){
SubjectbasicEntity entity= subjectbasicService.getInfo(id);
if(entity==null){
return ActionResult.fail("表单数据不存在!");
}
Map<String, Object> subjectbasicMap=JsonUtil.entityToMap(entity);
subjectbasicMap.put("id", subjectbasicMap.get("id"));
//副表数据
//子表数据
List<SubjectrepresentativeEntity> subjectrepresentativeList = subjectbasicService.getSubjectrepresentativeList(entity.getId());
subjectbasicMap.put("tableField119",JsonUtil.getJsonToList(JsonUtil.getListToJsonArray(subjectrepresentativeList)));
List<SubjectbusinesslineEntity> subjectbusinesslineList = subjectbasicService.getSubjectbusinesslineList(entity.getId());
subjectbasicMap.put("tableField188",JsonUtil.getJsonToList(JsonUtil.getListToJsonArray(subjectbusinesslineList)));
List<SubjectcontactsEntity> subjectcontactsList = subjectbasicService.getSubjectcontactsList(entity.getId());
subjectbasicMap.put("tableField173",JsonUtil.getJsonToList(JsonUtil.getListToJsonArray(subjectcontactsList)));
List<SubjectproductblacklistEntity> subjectproductblacklistList = subjectbasicService.getSubjectproductblacklistList(entity.getId());
subjectbasicMap.put("tableField212",JsonUtil.getJsonToList(JsonUtil.getListToJsonArray(subjectproductblacklistList)));
if("1".equals(entity.getSubjectBasicType())){
subjectbasicMap = generaterSwapUtil.swapDataDetail(subjectbasicMap,SubjectbasicConstant.getFormData(),"517679750756434949",false);
}else if("2".equals(entity.getSubjectBasicType())){
subjectbasicMap = generaterSwapUtil.swapDataDetail(subjectbasicMap,SubjectbasicConstant.getFormData(),"1754041598685376513",false);
}else if("3".equals(entity.getSubjectBasicType())){
subjectbasicMap = generaterSwapUtil.swapDataDetail(subjectbasicMap,SubjectbasicConstant.getFormData(),"1754054458341748737",false);
}
return ActionResult.success(subjectbasicMap);
}
/**
* 获取详情(编辑页)
* 编辑页面使用-不转换数据
* @param id
* @return
*/
@Operation(summary = "信息")
@GetMapping("/{id}")
public ActionResult info(@PathVariable("id") String id){
SubjectbasicEntity entity= subjectbasicService.getInfo(id);
if(entity==null){
return ActionResult.fail("表单数据不存在!");
}
Map<String, Object> subjectbasicMap=JsonUtil.entityToMap(entity);
subjectbasicMap.put("id", subjectbasicMap.get("id"));
//副表数据
//子表数据
List<SubjectrepresentativeEntity> subjectrepresentativeList = subjectbasicService.getSubjectrepresentativeList(entity.getId());
subjectbasicMap.put("subjectrepresentativeList",JsonUtil.getJsonToList(JsonUtil.getListToJsonArray(subjectrepresentativeList)));
for (Map map : (ArrayList<Map>) subjectbasicMap.get("subjectrepresentativeList")) {
map.put("idCardPhoto1", JsonUtil.getJsonToListMap((String) map.get("idCardPhoto1")));
map.put("idCardPhoto2", JsonUtil.getJsonToListMap((String) map.get("idCardPhoto2")));
map.put("idCardPhoto3", JsonUtil.getJsonToListMap((String) map.get("idCardPhoto3")));
map.put("authorizeFiles", JsonUtil.getJsonToListMap((String) map.get("authorizeFiles")));
}
List<SubjectbusinesslineEntity> subjectbusinesslineList = subjectbasicService.getSubjectbusinesslineList(entity.getId());
subjectbasicMap.put("subjectbusinesslineList",JsonUtil.getJsonToList(JsonUtil.getListToJsonArray(subjectbusinesslineList)));
List<SubjectcontactsEntity> subjectcontactsList = subjectbasicService.getSubjectcontactsList(entity.getId());
subjectbasicMap.put("subjectcontactsList",JsonUtil.getJsonToList(JsonUtil.getListToJsonArray(subjectcontactsList)));
for (Map map : (ArrayList<Map>) subjectbasicMap.get("subjectcontactsList")) {
map.put("logo", JsonUtil.getJsonToListMap((String) map.get("logo")));
map.put("annex", JsonUtil.getJsonToListMap((String) map.get("annex")));
}
List<SubjectproductblacklistEntity> subjectproductblacklistList = subjectbasicService.getSubjectproductblacklistList(entity.getId());
subjectbasicMap.put("subjectproductblacklistList",JsonUtil.getJsonToList(JsonUtil.getListToJsonArray(subjectproductblacklistList)));
subjectbasicMap = generaterSwapUtil.swapDataForm(subjectbasicMap,SubjectbasicConstant.getFormData(),SubjectbasicConstant.TABLEFIELDKEY,SubjectbasicConstant.TABLERENAMES);
return ActionResult.success(subjectbasicMap);
}
}