市场法规库清单添加发布接口

This commit is contained in:
梁琦涛
2024-07-05 18:28:41 +08:00
parent 92c4d9e3ec
commit 26065d61b0
5 changed files with 127 additions and 15 deletions
@@ -11,7 +11,6 @@ import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.ss.formula.functions.T;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
@@ -19,7 +18,6 @@ import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Map;
@@ -82,6 +80,28 @@ public class MarketStandardDetailController {
return lawsMarketStandardDetailService.add(marketStandardDetail);
}
/**
* 复制
*
* @param map
* @return
*/
@AutoLog(value = "外部标准库-市场法规清单-新增")
@ApiOperation(value = "外部标准库-市场法规清单-新增", notes = "外部标准库-市场法规清单-新增")
@ApiOperationSupport(order = 5)
@PostMapping(value = "/copy")
@RequiresPermissions("marketStandard:copy")
public Result<?> copy(@RequestBody Map<String, String> map) {
if (!map.containsKey("newId") || StringUtils.isEmpty(map.get("newId"))) {
return Result.error("请选择数据!");
}
if (!map.containsKey("oldId") || StringUtils.isEmpty(map.get("oldId"))) {
return Result.error("请选择数据!");
}
return lawsMarketStandardDetailService.copy(map.get("oldId"),map.get("newId"));
}
/**
* 编辑
*
@@ -53,6 +53,14 @@ public interface ILawsMarketStandardDetailService extends IService<LawsMarketSta
*/
Result<?> add(LawsMarketStandardDetail marketStandardDetail);
/**
* 复制
* @param oldId 原始id
* @param newId 新id
* @return
*/
Result<?> copy(String oldId,String newId);
/**
* 编辑
* @param marketStandardDetail
@@ -73,4 +81,11 @@ public interface ILawsMarketStandardDetailService extends IService<LawsMarketSta
* @return
*/
Result<?> deleteBatchById(String ids);
/**
* 批量保存数据
* @param oldId
* @param newId
*/
void saveBatchData(String oldId,String newId);
}
@@ -76,4 +76,10 @@ public interface ILawsMarketStandardService extends IService<LawsMarketStandard>
* @return
*/
Result<?> publish(String id);
/**
* 修改清单状态
* @param id 清单id
*/
void updateStatus(String id);
}
@@ -11,6 +11,7 @@ import com.jero.common.system.vo.LoginUser;
import com.jero.common.util.ImportExcelUtil;
import com.jero.modules.laws.marketStandard.entity.LawsMarketStandard;
import com.jero.modules.laws.marketStandard.entity.LawsMarketStandardDetail;
import com.jero.modules.laws.marketStandard.entity.MarketStandardDetailVO;
import com.jero.modules.laws.marketStandard.mapper.LawsMarketStandardDetailMapper;
import com.jero.modules.laws.marketStandard.service.ILawsMarketStandardDetailService;
import com.jero.modules.laws.marketStandard.service.ILawsMarketStandardService;
@@ -22,6 +23,7 @@ import org.jeecgframework.poi.excel.ExcelImportUtil;
import org.jeecgframework.poi.excel.entity.ImportParams;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
@@ -108,6 +110,7 @@ public class LawsMarketStandardDetailServiceImpl extends ServiceImpl<LawsMarketS
@Override
@Transactional(rollbackFor = JeroBootException.class)
public Result<?> importExcel(MultipartFile file,String manifestId) {
List<LawsMarketStandardDetail> list = new ArrayList<>();
// 校验文件是否为excel
@@ -140,6 +143,8 @@ public class LawsMarketStandardDetailServiceImpl extends ServiceImpl<LawsMarketS
return Result.error(m.toString());
}
saveBatch(listLawsMarketStandardDetail);
// 更细状态
marketStandardService.updateStatus(manifestId);
return Result.OK("导入成功");
} catch (Exception e) {
log.error(e.getMessage(),e);
@@ -150,6 +155,7 @@ public class LawsMarketStandardDetailServiceImpl extends ServiceImpl<LawsMarketS
e.printStackTrace();
}
}
return Result.OK("导入成功");
}
@@ -175,6 +181,7 @@ public class LawsMarketStandardDetailServiceImpl extends ServiceImpl<LawsMarketS
}
@Override
@Transactional(rollbackFor = JeroBootException.class)
public Result<?> add(LawsMarketStandardDetail marketStandardDetail) {
LambdaQueryWrapper<LawsMarketStandardDetail> queryLawsMarketStandardDetail = new LambdaQueryWrapper<>();
queryLawsMarketStandardDetail.eq(LawsMarketStandardDetail::getStandardId,marketStandardDetail.getStandardId());
@@ -184,10 +191,19 @@ public class LawsMarketStandardDetailServiceImpl extends ServiceImpl<LawsMarketS
Result.error("标准已存在");
}
save(marketStandardDetail);
// 更细状态
marketStandardService.updateStatus(marketStandardDetail.getManifestId());
return Result.OK("操作成功");
}
@Override
public Result<?> copy(String oldId,String newId) {
saveBatchData(oldId, newId);
return Result.OK("操作成功");
}
@Override
@Transactional(rollbackFor = JeroBootException.class)
public Result<?> edit(LawsMarketStandardDetail marketStandardDetail) {
LambdaQueryWrapper<LawsMarketStandardDetail> queryLawsMarketStandardDetail = new LambdaQueryWrapper<>();
queryLawsMarketStandardDetail.eq(LawsMarketStandardDetail::getStandardId,marketStandardDetail.getStandardId());
@@ -198,22 +214,54 @@ public class LawsMarketStandardDetailServiceImpl extends ServiceImpl<LawsMarketS
Result.error("标准已存在");
}
updateById(marketStandardDetail);
// 更细状态
marketStandardService.updateStatus(marketStandardDetail.getManifestId());
return Result.OK("操作成功");
}
@Override
@Transactional(rollbackFor = JeroBootException.class)
public Result<?> deleteById(String id) {
checkData(id);
LawsMarketStandardDetail lawsMarketStandardDetail = getById(id);
if(Objects.isNull(lawsMarketStandardDetail)){
throw new JeroBootException("数据不存在");
}
removeById(id);
// 更细状态
marketStandardService.updateStatus(lawsMarketStandardDetail.getManifestId());
return Result.OK("删除成功");
}
@Override
@Transactional(rollbackFor = JeroBootException.class)
public Result<?> deleteBatchById(String ids) {
checkData(ids);
LawsMarketStandardDetail lawsMarketStandardDetail = getById(ids.split(",")[0]);
if(Objects.isNull(lawsMarketStandardDetail)){
throw new JeroBootException("数据不存在");
}
// 更细状态
marketStandardService.updateStatus(lawsMarketStandardDetail.getManifestId());
removeByIds(Arrays.asList(ids.split(",")));
return Result.OK("批量删除成功");
}
@Override
public void saveBatchData(String oldId, String newId) {
LambdaQueryWrapper<LawsMarketStandardDetail> queryLawsMarketStandardDetail = new LambdaQueryWrapper<>();
queryLawsMarketStandardDetail.eq(LawsMarketStandardDetail::getManifestId, oldId);
List<LawsMarketStandardDetail> listLawsMarketStandardDetail = list(queryLawsMarketStandardDetail);
if(CollectionUtils.isEmpty(listLawsMarketStandardDetail)){
return;
}
for (LawsMarketStandardDetail lawsMarketStandardDetail : listLawsMarketStandardDetail) {
lawsMarketStandardDetail.setId(null);
lawsMarketStandardDetail.setManifestId(newId);
}
saveBatch(listLawsMarketStandardDetail);
}
// 验证数据权限
private void checkData(String id) {
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
@@ -171,19 +171,14 @@ public class LawsMarketStandardServiceImpl extends ServiceImpl<LawsMarketStandar
}
// 状态为已发布需要生成新数据
if(Objects.equals(lawsMarketStandardOld.getManifestStatus(),MarketStandardConstants.MANIFEST_STATUS_PUBLISH)){
manifest.setManifestStatus(MarketStandardConstants.MANIFEST_STATUS_EDIT);
manifest.setManifestVersion("");
// 设置清单编号
manifest.setManifestNo(this.generateManifestNo(manifest.getCountry()));
Map<String, List<DictModel>> map = sysBaseAPI.translateManyDict("market_state",manifest.getCountry());
List<DictModel> listDict = map.get("market_state");
List<String> country = listDict.stream().map(DictModel::getText).collect(Collectors.toList());
// 国家/地区+自定义+固定字段,自定义字段:预留手填,当前默认不填;固定字段:车型需满足标准法规清单
manifest.setManifestName(String.join("",country) + manifest.getCustomColumnName() + "车型需满足标准法规清单");
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
manifest.setAuthor(sysUser.getId());
manifest.setVersionFlag(lawsMarketStandardOld.getVersionFlag());
save(manifest);
// 将旧数据拷贝一份
syncData(lawsMarketStandardOld);
// 新数据版本设置为空,状态设置为编辑中
LambdaUpdateWrapper<LawsMarketStandard> update = new LambdaUpdateWrapper<>();
update.set(LawsMarketStandard::getManifestVersion,"");
update.set(LawsMarketStandard::getManifestStatus,MarketStandardConstants.MANIFEST_STATUS_EDIT);
update.eq(LawsMarketStandard::getId,lawsMarketStandardOld.getId());
update(update);
}else{
List<String> listCountry = Arrays.stream(manifest.getCountry().split(",")).sorted().collect(Collectors.toList());
List<String> listOldCountry = Arrays.stream(lawsMarketStandardOld.getCountry().split(",")).sorted().collect(Collectors.toList());;
@@ -352,6 +347,34 @@ public class LawsMarketStandardServiceImpl extends ServiceImpl<LawsMarketStandar
// todo 发起流程
return Result.OK("发布成功");
}
@Override
@Transactional(rollbackFor = JeroBootException.class)
public synchronized void updateStatus(String id) {
LawsMarketStandard lawsMarketStandardOld = getById(id);
if(Objects.isNull(lawsMarketStandardOld)){
throw new JeroBootException("数据不存在");
}
// 状态为已发布需要生成新数据
if(Objects.equals(lawsMarketStandardOld.getManifestStatus(),MarketStandardConstants.MANIFEST_STATUS_PUBLISH)){
// 将旧数据拷贝一份
syncData(lawsMarketStandardOld);
// 新数据版本设置为空,状态设置为编辑中
LambdaUpdateWrapper<LawsMarketStandard> update = new LambdaUpdateWrapper<>();
update.set(LawsMarketStandard::getManifestVersion,"");
update.set(LawsMarketStandard::getManifestStatus,MarketStandardConstants.MANIFEST_STATUS_EDIT);
update.eq(LawsMarketStandard::getId,id);
update(update);
}
}
private void syncData(LawsMarketStandard lawsMarketStandardOld) {
String oldId = lawsMarketStandardOld.getId();
lawsMarketStandardOld.setId(null);
save(lawsMarketStandardOld);
// 添加标准数据
lawsMarketStandardDetailService.saveBatchData(oldId, lawsMarketStandardOld.getId());
}
}