diff --git a/lis-common/src/main/java/com/czlis/common/core/domain/entity/ComDict.java b/lis-common/src/main/java/com/czlis/common/core/domain/entity/ComDict.java index 95f9bde..e8addcd 100644 --- a/lis-common/src/main/java/com/czlis/common/core/domain/entity/ComDict.java +++ b/lis-common/src/main/java/com/czlis/common/core/domain/entity/ComDict.java @@ -1,20 +1,32 @@ package com.czlis.common.core.domain.entity; +import com.czlis.common.annotation.Excel; import com.czlis.common.core.domain.BaseEntity; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; +import java.util.List; + @Data @NoArgsConstructor @AllArgsConstructor public class ComDict extends BaseEntity { + @Excel(name = "字典类别") private String zdlb; + @Excel(name = "编码") private String zddh; + @Excel(name = "名称") private String zdmc; + @Excel(name = "简拼") private String zjf; + @Excel(name = "是否默认", readConverterExp = "Y=是,N=否") private String zdbz; + @Excel(name = "机构编码") private String yljg; + @Excel(name = "备注") private String bz; + @Excel(name = "作废标识", readConverterExp = "1=是,0=否") private String userflag; + } diff --git a/liswork/src/main/java/com/czlis/liswork/controller/dict/DictController.java b/liswork/src/main/java/com/czlis/liswork/controller/dict/DictController.java index 34260c7..8301d97 100644 --- a/liswork/src/main/java/com/czlis/liswork/controller/dict/DictController.java +++ b/liswork/src/main/java/com/czlis/liswork/controller/dict/DictController.java @@ -5,13 +5,16 @@ import com.czlis.common.core.controller.BaseController; import com.czlis.common.core.domain.Result; import com.czlis.common.core.page.TableDataInfo; import com.czlis.common.core.domain.entity.ComDict; +import com.czlis.common.utils.poi.ExcelUtil; import com.czlis.liswork.service.ComDictService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import javax.servlet.http.HttpServletResponse; import java.util.List; /** @@ -61,5 +64,27 @@ public class DictController extends BaseController { log.info("调用修改字典接口{}",comDict); return comDictService.updateComDict(comDict); } + @ApiOperation("导出字典") + @PostMapping("/export") + public void export(HttpServletResponse response,ComDict comDict) { + List list = comDictService.getComDictList(comDict); + ExcelUtil util = new ExcelUtil(ComDict.class); + util.exportExcel(response, list, "字典数据"); + } + + @GetMapping("/importTemplate") + public void importTemplate(HttpServletResponse response){ + ExcelUtil util = new ExcelUtil<>(ComDict.class); + util.exportExcel(response); + } + @ApiOperation("导入字典") + @PostMapping("/importData") + public Result importData(@RequestBody MultipartFile file,boolean updateDlCeshi) throws Exception{ + + ExcelUtil util = new ExcelUtil(ComDict.class); + List comDictList = util.importExcel(file.getInputStream()); + log.info("调用导入字典{}",comDictList); + return comDictService.insertComDictList(comDictList,updateDlCeshi); + } } diff --git a/liswork/src/main/java/com/czlis/liswork/mapper/dict/ComDictMapper.java b/liswork/src/main/java/com/czlis/liswork/mapper/dict/ComDictMapper.java index f65a840..69febd6 100644 --- a/liswork/src/main/java/com/czlis/liswork/mapper/dict/ComDictMapper.java +++ b/liswork/src/main/java/com/czlis/liswork/mapper/dict/ComDictMapper.java @@ -13,5 +13,10 @@ public interface ComDictMapper { int insertComDict(ComDict comDict); int delComDict(ComDict comDict); int updateComDict(ComDict comDict); - + //根据主键判断是否存在数据 + int getCountById(String zdlb, String zddh) ; + //根据编号查名称 + String getNameById(String zdlb,String zdmc); + //根据名称查编号 + String getIdByName(String zdlb,String zdmc); } diff --git a/liswork/src/main/java/com/czlis/liswork/service/ComDictService.java b/liswork/src/main/java/com/czlis/liswork/service/ComDictService.java index fe1536b..572d733 100644 --- a/liswork/src/main/java/com/czlis/liswork/service/ComDictService.java +++ b/liswork/src/main/java/com/czlis/liswork/service/ComDictService.java @@ -16,4 +16,5 @@ public interface ComDictService { Result updateComDict(ComDict comDict); + Result insertComDictList(List comDictList,boolean updateDlCeshi); } diff --git a/liswork/src/main/java/com/czlis/liswork/service/impl/ComDictServiceImpl.java b/liswork/src/main/java/com/czlis/liswork/service/impl/ComDictServiceImpl.java index 94f2caf..77a9347 100644 --- a/liswork/src/main/java/com/czlis/liswork/service/impl/ComDictServiceImpl.java +++ b/liswork/src/main/java/com/czlis/liswork/service/impl/ComDictServiceImpl.java @@ -2,12 +2,16 @@ package com.czlis.liswork.service.impl; import cn.hutool.extra.pinyin.PinyinUtil; +import com.czlis.common.constant.HttpStatus; import com.czlis.common.core.domain.Result; +import com.czlis.common.exception.ServiceException; import com.czlis.common.utils.ComDictUtils; +import com.czlis.common.utils.StringUtils; import com.czlis.liswork.mapper.dict.ComDictMapper; import com.czlis.common.core.domain.entity.ComDict; import com.czlis.liswork.service.ComDictService; import lombok.extern.slf4j.Slf4j; +import org.hibernate.validator.constraints.ru.INN; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -26,8 +30,6 @@ public class ComDictServiceImpl implements ComDictService { @Autowired private ComDictMapper comDictMapper; - - @Override public List getComDictList(ComDict comDict) { //先从redis缓存中获取,如果没有,就从数据库取 @@ -50,7 +52,7 @@ public class ComDictServiceImpl implements ComDictService { pinyin = pinyin.substring(0, 9); } comDict.setZjf(pinyin); - comDict.setZdbz("Y"); + comDict.setZdbz("N"); int row = comDictMapper.insertComDict(comDict); if(row > 0){ List comDictList = comDictMapper.getComDictList(comDict); @@ -59,6 +61,61 @@ public class ComDictServiceImpl implements ComDictService { return null; } + @Transactional(rollbackFor = Exception.class) + @Override + public Result insertComDictList(List comDictList,boolean updateDlCeshi) { + int row = 0, fail = 0,row0=0; + String zdlb = "", pinyin = "",zddh="",yljg="",zdbz=""; + //判断传入的List 是否为空 + if (StringUtils.isNull(comDictList) || comDictList.size() == 0) { + return new Result("-1","导入数据不能为空!"); + } + //定义失败条数,接收导入失败数据量 + int failureNum = 0; + //遍历导入数据,并且插入数据库。 + for (ComDict comDict : comDictList) { + zdlb = comDict.getZdlb(); + zddh = comDict.getZddh(); + //是否覆盖数据,不覆盖跳过 + row0 = comDictMapper.getCountById(zdlb,zddh); + if(row0 > 0 && updateDlCeshi==false) continue; + + pinyin = PinyinUtil.getFirstLetter(comDict.getZdmc(), ""); //拼音首字母 + if (pinyin.length() >= 9) { + pinyin = pinyin.substring(0, 9); + } + comDict.setZjf(pinyin); + + yljg = comDict.getYljg(); + zdbz = comDict.getZdbz(); + if(yljg == null || yljg.equals("")) comDict.setYljg("1"); + if(zdbz == null || zdbz.equals("")) comDict.setZdbz("N"); + if (row0>0) { + row = comDictMapper.updateComDict(comDict); + } + else{ + row = comDictMapper.insertComDict(comDict); + } + if (row > 0) failureNum++; + } + if (failureNum > 0) { + ComDict comDict0=new ComDict(); + comDict0.setZdlb(zdlb); + List comDictList1 = comDictMapper.getComDictList(comDict0); + ComDictUtils.setDictCache(comDict0.getZdlb(),comDictList1); + if (failureNum == comDictList.size()) { + return new Result("0", "数据已全部导入成功!共 " + comDictList.size() + " 条"); + } else { + fail = comDictList.size() - failureNum; + return new Result("0", "数据部分导入成功!成功 " + failureNum + " 条,失败 " + fail + " 条"); + } + } else { + return new Result("-1", "导入失败!"); + } + } + + + @Transactional(rollbackFor = Exception.class) @Override public Result delComDict(ComDict comDict) { diff --git a/liswork/src/main/resources/mapper/ComDictMapper.xml b/liswork/src/main/resources/mapper/ComDictMapper.xml index 5ff0024..cf583a1 100644 --- a/liswork/src/main/resources/mapper/ComDictMapper.xml +++ b/liswork/src/main/resources/mapper/ComDictMapper.xml @@ -24,6 +24,15 @@ + + + insert into com_dict(