Jelajahi Sumber

健康小屋- 设备导入-添加导入字段

huangzhiyong 6 tahun lalu
induk
melakukan
ba3a27bc17

+ 8 - 25
svr/svr-healthy-house/src/main/java/com/yihu/jw/healthyhouse/controller/facilities/FacilitiesController.java

@ -261,39 +261,22 @@ public class FacilitiesController extends EnvelopRestEndpoint {
    @PostMapping(value = "/batchImport")
    @ApiOperation(value = "设施列表导入")
    public void importData(MultipartFile file, HttpServletRequest request, HttpServletResponse response) throws IOException {
    @ApiOperation(value = "设施列表导入(经纬度重复的不导入)")
    public ObjEnvelop importData(MultipartFile file, HttpServletRequest request, HttpServletResponse response) throws IOException, ManageException {
        try {
            writerResponse(response, 1 + "", "l_upd_progress");
            request.setCharacterEncoding("UTF-8");
            AExcelReader excelReader = new FacilityMsgReader();
            excelReader.read(file);
            List<FacilityMsg> correctLs = excelReader.getCorrectLs();
            writerResponse(response, 35+"", "l_upd_progress");
            if(correctLs.size()>0) {
                facilityService.batchInsertFacility(correctLs);
            List<FacilityMsg> dataList = excelReader.getCorrectLs();
            if(dataList.size()>0) {
                Map<String,Object> result = facilityService.batchInsertFacility(dataList);
                return ObjEnvelop.getSuccess("导入成功!",result);
            }
        } catch (Exception e) {
            e.printStackTrace();
            writerResponse(response, "-1", "l_upd_progress");
            throw new ManageException("导入设施列表异常!",e);
        }
    }
    private void writerResponse(HttpServletResponse response, String body, String client_method) throws IOException {
        StringBuffer sb = new StringBuffer();
        sb.append("<script type=\"text/javascript\">//<![CDATA[\n");
        sb.append("     parent.").append(client_method).append("(").append(body).append(");\n");
        sb.append("//]]></script>");
        response.setContentType("text/html;charset=UTF-8");
        response.addHeader("Pragma", "no-cache");
        response.setHeader("Cache-Control", "no-cache,no-store,must-revalidate");
        response.setHeader("Cache-Control", "pre-check=0,post-check=0");
        response.setDateHeader("Expires", 0);
        response.getWriter().write(sb.toString());
        response.flushBuffer();
        return ObjEnvelop.getError("导入失败");
    }

+ 1 - 0
svr/svr-healthy-house/src/main/java/com/yihu/jw/healthyhouse/dao/facility/FacilityDao.java

@ -12,5 +12,6 @@ import org.springframework.data.jpa.repository.JpaRepository;
public interface FacilityDao extends JpaRepository<Facility, String> {
    Facility findById(String id);
    Facility findByLongitudeAndLatitude(double longitude,double latitude);
}

+ 14 - 0
svr/svr-healthy-house/src/main/java/com/yihu/jw/healthyhouse/service/dict/SystemDictEntryService.java

@ -92,4 +92,18 @@ public class SystemDictEntryService extends BaseJpaService<SystemDictEntry, Syst
        sqlQuery.setParameter("dict_id", dict_id);
        return sqlQuery.list();
    }
    public Integer getDictEntryCodeByName(String dictCode, String value){
        String sql = "SELECT t.code FROM system_dict_entries t LEFT JOIN system_dicts d ON t.dict_id = d.id where d.code=:dictCode and t.value=:dictEntryValue";
        SQLQuery sqlQuery = currentSession().createSQLQuery(sql);
        sqlQuery.setParameter("dictCode", dictCode);
        sqlQuery.setParameter("dictEntryValue", value);
        Object result = sqlQuery.uniqueResult();
        if (result !=null ){
            return Integer.parseInt(result.toString());
        }else {
            return null;
        }
    }
}

+ 40 - 12
svr/svr-healthy-house/src/main/java/com/yihu/jw/healthyhouse/service/facility/FacilityService.java

@ -4,11 +4,12 @@ import com.yihu.jw.exception.business.ManageException;
import com.yihu.jw.healthyhouse.dao.facility.FacilityDao;
import com.yihu.jw.healthyhouse.model.facility.Facility;
import com.yihu.jw.healthyhouse.service.area.BaseCityService;
import com.yihu.jw.healthyhouse.service.area.BaseStreetService;
import com.yihu.jw.healthyhouse.service.area.BaseTownService;
import com.yihu.jw.healthyhouse.service.dict.SystemDictEntryService;
import com.yihu.jw.healthyhouse.util.facility.msg.FacilityMsg;
import com.yihu.jw.healthyhouse.util.poi.ExcelUtils;
import com.yihu.mysql.query.BaseJpaService;
import io.swagger.models.auth.In;
import jxl.write.Colour;
import jxl.write.WritableCellFormat;
import org.apache.commons.lang.StringUtils;
@ -22,7 +23,9 @@ import org.springframework.transaction.annotation.Transactional;
import javax.servlet.http.HttpServletResponse;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * 设施管理器.
@ -42,13 +45,22 @@ public class FacilityService extends BaseJpaService<Facility, FacilityDao> {
    @Autowired
    private BaseTownService baseTownService;
    @Autowired
    private BaseStreetService baseStreetService;
    private SystemDictEntryService systemDictEntryService;
    public Facility findById(String id) {
        return  facilityDao.findById(id);
    }
    public boolean isHasFacility(double longitude,double latitude){
        boolean flag = false;
        Facility facility = facilityDao.findByLongitudeAndLatitude(longitude, latitude);
        if (facility!=null) {
            flag = true;
        }
        return flag;
    }
    //excel中添加固定内容
    private void addStaticCell(Sheet sheet){
        //设置样式
@ -135,9 +147,13 @@ public class FacilityService extends BaseJpaService<Facility, FacilityDao> {
     * 批量存储的集合
     * @param facilities    设施列表
     */
    public void batchInsertFacility(List<FacilityMsg> facilities){
    public Map<String,Object> batchInsertFacility(List<FacilityMsg> facilities) throws ManageException{
        Map<String,Object> result = new HashMap<>();
        //批量存储的集合
        List<Facility> data = new ArrayList<>();
        int correctCount = 0;
        List<Facility> corrects = new ArrayList<>();
        List<Facility> errors = new ArrayList<>();
        Facility facility = null;
        //批量存储
        for(FacilityMsg facilityMsg : facilities) {
@ -146,9 +162,10 @@ public class FacilityService extends BaseJpaService<Facility, FacilityDao> {
            Double latitude = StringUtils.isEmpty(facilityMsg.getLongitude()) ? null :Double.parseDouble(facilityMsg.getLongitude());
            String cityCode = baseCityService.getCodeByname(facilityMsg.getCity());
            String townCode = baseTownService.getCodeByname(facilityMsg.getCounty());
            Integer categoryCode = systemDictEntryService.getDictEntryCodeByName("FacilityType",facilityMsg.getCategory());
            facility.setCode(genFacilityCode());
            facility.setCategory(Integer.parseInt(facilityMsg.getCategory()));
            facility.setCategory(categoryCode);
            facility.setCategoryValue(facilityMsg.getCategory());
            facility.setUserName(facilityMsg.getUserName());
            facility.setUserTelephone(facilityMsg.getUserTelePhone());
            facility.setProvinceId(facilityMsg.getProvince());
@ -165,15 +182,26 @@ public class FacilityService extends BaseJpaService<Facility, FacilityDao> {
            facility.setLongitude(longitude);
            facility.setLatitude(latitude);
            data.add(facility);
            if (data.size()>100){
                facilityDao.save(data);
                data.clear();
            if (isHasFacility(longitude,latitude)) {
                errors.add(facility);
            }else {
                corrects.add(facility);
            }
            if (corrects.size()>100){
                facilityDao.save(corrects);
                correctCount +=corrects.size();
                corrects.clear();
            }
        }
        if(!data.isEmpty()) {
            facilityDao.save(data);
        if(!corrects.isEmpty()) {
            facilityDao.save(corrects);
            correctCount +=corrects.size();
        }
        result.put("correctCount",correctCount);
        result.put("errors",errors);
        return result;
    }
    /**