|
@ -1,5 +1,8 @@
|
|
|
package com.yihu.jw.base.endpoint.population;
|
|
|
|
|
|
import com.yihu.jw.base.endpoint.common.excel.ObjectFileRW;
|
|
|
import com.yihu.jw.base.endpoint.common.excel.TemPath;
|
|
|
import com.yihu.jw.base.endpoint.common.populationBatchImport.*;
|
|
|
import com.yihu.jw.base.service.area.BaseCityService;
|
|
|
import com.yihu.jw.base.service.area.BaseProvinceService;
|
|
|
import com.yihu.jw.base.service.area.BaseTownService;
|
|
@ -8,6 +11,7 @@ import com.yihu.jw.base.service.saas.SaasService;
|
|
|
import com.yihu.jw.entity.base.area.BaseTownDO;
|
|
|
import com.yihu.jw.entity.base.population.BasePopulationDO;
|
|
|
import com.yihu.jw.entity.base.saas.SaasDO;
|
|
|
import com.yihu.jw.exception.business.ManageException;
|
|
|
import com.yihu.jw.restmodel.base.population.BasePopulationVO;
|
|
|
import com.yihu.jw.restmodel.web.Envelop;
|
|
|
import com.yihu.jw.restmodel.web.ListEnvelop;
|
|
@ -15,25 +19,32 @@ import com.yihu.jw.restmodel.web.ObjEnvelop;
|
|
|
import com.yihu.jw.restmodel.web.PageEnvelop;
|
|
|
import com.yihu.jw.restmodel.web.endpoint.EnvelopRestEndpoint;
|
|
|
import com.yihu.jw.rm.base.BaseRequestMapping;
|
|
|
import com.yihu.jw.util.excel.AExcelReader;
|
|
|
import io.swagger.annotations.Api;
|
|
|
import io.swagger.annotations.ApiOperation;
|
|
|
import io.swagger.annotations.ApiParam;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.http.MediaType;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
import org.springframework.web.bind.annotation.*;
|
|
|
import org.springframework.web.multipart.MultipartFile;
|
|
|
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
|
import javax.servlet.http.HttpServletResponse;
|
|
|
import java.io.File;
|
|
|
import java.io.IOException;
|
|
|
import java.io.OutputStream;
|
|
|
import java.util.*;
|
|
|
|
|
|
/**
|
|
|
* 基础人口基数信息控制器
|
|
|
*
|
|
|
* @version <pre>
|
|
|
* Author Version Date Changes
|
|
|
* litaohong 1.0 2018年09月26日 update
|
|
|
* Author Version Date Changes
|
|
|
* litaohong 1.0 2018年09月26日 update
|
|
|
*
|
|
|
* </pre>
|
|
|
* </pre>
|
|
|
* @since 1.
|
|
|
*/
|
|
|
@RestController
|
|
@ -51,6 +62,7 @@ public class BasePopulationEndpoint extends EnvelopRestEndpoint {
|
|
|
private BaseProvinceService baseProvinceService;
|
|
|
@Autowired
|
|
|
private BaseCityService baseCityService;
|
|
|
static final String parentFile = "population";
|
|
|
|
|
|
|
|
|
@PostMapping(value = BaseRequestMapping.BasePopulation.CREATE, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
|
|
@ -253,5 +265,103 @@ public class BasePopulationEndpoint extends EnvelopRestEndpoint {
|
|
|
return (null != basePopulationDOList && basePopulationDOList.size() > 0) ? true : false;
|
|
|
}
|
|
|
|
|
|
@PostMapping(value = BaseRequestMapping.BasePopulation.POPULATION_BATCH_IMPORT)
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
@ApiOperation(value = "基础人口信息列表导入")
|
|
|
public Envelop importData(
|
|
|
@ApiParam(name = "file", value = "文件", required = true)
|
|
|
@RequestPart(value = "file") MultipartFile file,
|
|
|
HttpServletRequest request) throws IOException, ManageException {
|
|
|
try {
|
|
|
request.setCharacterEncoding("UTF-8");
|
|
|
AExcelReader excelReader = new PopulationMsgReader();
|
|
|
excelReader.read(file.getInputStream());
|
|
|
//验证未通过
|
|
|
List<PopulationMsg> errorLs = excelReader.getErrorLs();
|
|
|
List<PopulationMsg> correctLs = excelReader.getCorrectLs();
|
|
|
//获取所有租户+年份的基础人口信息
|
|
|
Set<String> populationNameAndYear =new HashSet<String>( basePopulationService.getFacilityCodeByServerType());
|
|
|
PopulationMsg model;
|
|
|
List saveLs = new ArrayList<>();
|
|
|
if (correctLs.size() > 0) {
|
|
|
for (int i = 0; i < correctLs.size(); i++) {
|
|
|
model = correctLs.get(i);
|
|
|
Map<Boolean,PopulationMsg> map=validate(model,populationNameAndYear);
|
|
|
if (null==map.get(true)) {
|
|
|
errorLs.add(model);
|
|
|
} else {
|
|
|
saveLs.add(model);
|
|
|
}
|
|
|
}
|
|
|
Map<String, Object> result = basePopulationService.batchInsertPopulation(saveLs);
|
|
|
result.put("errorLs",errorLs);
|
|
|
return success("导入成功!", result);
|
|
|
}
|
|
|
} catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
|
return failed("导入异常,请检查导入文件格式"+e.getMessage());
|
|
|
}
|
|
|
return failed("导入失败");
|
|
|
}
|
|
|
|
|
|
private Map<Boolean,PopulationMsg> validate(PopulationMsg model, Set<String> populationNameAndYear) throws Exception{
|
|
|
Map<Boolean,PopulationMsg> msgMap =new HashMap<>();
|
|
|
Boolean rs = true;
|
|
|
//验证租户是否存在
|
|
|
SaasDO saasDO = saasService.findByName(model.getSaasName());
|
|
|
String nameAndYear=model.getSaasName()+model.getYear();
|
|
|
//验证租户+年份的人口基数是否存在
|
|
|
if (populationNameAndYear.contains(nameAndYear)) {
|
|
|
model.addErrorMsg("saasName", "已添加"+model.getYear()+model.getSaasName()+"的基础人口信息,请直接修改即可!");
|
|
|
rs = false;
|
|
|
}
|
|
|
if (null==saasDO) {
|
|
|
model.addErrorMsg("saasName", "租户不存在,请核对!");
|
|
|
rs = false;
|
|
|
}else {
|
|
|
model.setSaasId(saasDO.getId());
|
|
|
model.setSaasCreateTime(saasDO.getCreateTime());
|
|
|
String areaCode = saasDO.getAreaNumber();
|
|
|
String filters = "province?" + areaCode + " g1;city?" + areaCode + " g1;code?" + areaCode + " g1;";
|
|
|
List<BaseTownDO> baseTowns = baseTownService.search(filters);
|
|
|
BaseTownDO baseTownDO = (null != baseTowns && baseTowns.size() > 0 ? baseTowns.get(0) : null);
|
|
|
if (null != baseTownDO) {
|
|
|
if (baseTownDO.getCode().equals(areaCode)) {
|
|
|
model.setProvinceCode(baseTownDO.getProvince());
|
|
|
model.setProvinceName(baseProvinceService.getNameByCode(baseTownDO.getProvince()));
|
|
|
//市编码
|
|
|
model.setCityCode(baseTownDO.getCity());
|
|
|
model.setCityName(baseCityService.getNameByCode(baseTownDO.getCity()));
|
|
|
//区县编码
|
|
|
model.setDistrictCode(areaCode);
|
|
|
model.setDistrictName(baseTownDO.getName());
|
|
|
} else if (baseTownDO.getCity().equals(areaCode)) {
|
|
|
model.setProvinceCode(baseTownDO.getProvince());
|
|
|
model.setProvinceName(baseProvinceService.getNameByCode(baseTownDO.getProvince()));
|
|
|
//市编码
|
|
|
model.setCityCode(areaCode);
|
|
|
model.setCityName(baseCityService.getNameByCode(areaCode));
|
|
|
//区县编码
|
|
|
model.setDistrictCode("");
|
|
|
model.setDistrictName("");
|
|
|
} else if (baseTownDO.getProvince().equals(areaCode)) {
|
|
|
//省编码
|
|
|
model.setProvinceCode(areaCode);
|
|
|
model.setProvinceName(baseProvinceService.getNameByCode(areaCode));
|
|
|
//市编码
|
|
|
model.setCityCode("");
|
|
|
model.setCityName("");
|
|
|
//区县编码
|
|
|
model.setDistrictCode("");
|
|
|
model.setDistrictName("");
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
msgMap.put(rs,model);
|
|
|
return msgMap;
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|