15178832520 лет назад: 5
Родитель
Сommit
20a4909679

+ 67 - 0
java110-bean/src/main/java/com/java110/entity/meterImport/ImportMeter.java

@@ -0,0 +1,67 @@
+package com.java110.entity.meterImport;
+
+public class ImportMeter {
+    private String meterType;
+    private String objType;
+    private String objId;
+    private String curDegrees;
+    private String curReadingTime;
+    private String communityId;
+    private String remark;
+
+    public String getMeterType() {
+        return meterType;
+    }
+
+    public void setMeterType(String meterType) {
+        this.meterType = meterType;
+    }
+
+    public String getObjType() {
+        return objType;
+    }
+
+    public void setObjType(String objType) {
+        this.objType = objType;
+    }
+
+    public String getObjId() {
+        return objId;
+    }
+
+    public void setObjId(String objId) {
+        this.objId = objId;
+    }
+
+    public String getCurDegrees() {
+        return curDegrees;
+    }
+
+    public void setCurDegrees(String curDegrees) {
+        this.curDegrees = curDegrees;
+    }
+
+    public String getCurReadingTime() {
+        return curReadingTime;
+    }
+
+    public void setCurReadingTime(String curReadingTime) {
+        this.curReadingTime = curReadingTime;
+    }
+
+    public String getCommunityId() {
+        return communityId;
+    }
+
+    public void setCommunityId(String communityId) {
+        this.communityId = communityId;
+    }
+
+    public String getRemark() {
+        return remark;
+    }
+
+    public void setRemark(String remark) {
+        this.remark = remark;
+    }
+}

+ 66 - 0
service-front/src/main/java/com/java110/front/components/meterWaterImport/MeterWaterImportComponent.java

@@ -0,0 +1,66 @@
+package com.java110.front.components.meterWaterImport;
+
+import com.java110.core.context.IPageData;
+import com.java110.front.smo.assetExport.IAssetExportSMO;
+import com.java110.front.smo.meterWaterImport.IMeterWaterImportSMO;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Component;
+import org.springframework.web.multipart.MultipartFile;
+
+/**
+ * 费用导入
+ */
+@Component("feeImport")
+public class MeterWaterImportComponent {
+
+    private final static Logger logger = LoggerFactory.getLogger(MeterWaterImportComponent.class);
+
+
+    @Autowired
+    private IMeterWaterImportSMO meterWaterImportSMOmpl;
+
+    @Autowired
+    private IAssetExportSMO assetExportSMOImpl;
+
+    /**
+     * 添加应用数据
+     *
+     * @param pd 页面数据封装
+     * @return ResponseEntity 对象
+     */
+    public ResponseEntity<String> importData(IPageData pd, MultipartFile uploadFile) throws Exception{
+
+        return meterWaterImportSMOmpl.importExcelData(pd,uploadFile);
+    }
+
+    /**
+     * 资产导出
+     *
+     * @param pd
+     * @return
+     * @throws Exception
+     */
+    public ResponseEntity<Object> exitCommunityData(IPageData pd) throws Exception {
+        return assetExportSMOImpl.exportExcelData(pd);
+    }
+
+
+    public IMeterWaterImportSMO getMeterWaterImportSMOmpl() {
+        return meterWaterImportSMOmpl;
+    }
+
+    public void setMeterWaterImportSMOmpl(IMeterWaterImportSMO meterWaterImportSMOmpl) {
+        this.meterWaterImportSMOmpl = meterWaterImportSMOmpl;
+    }
+
+    public IAssetExportSMO getAssetExportSMOImpl() {
+        return assetExportSMOImpl;
+    }
+
+    public void setAssetExportSMOImpl(IAssetExportSMO assetExportSMOImpl) {
+        this.assetExportSMOImpl = assetExportSMOImpl;
+    }
+}

+ 24 - 0
service-front/src/main/java/com/java110/front/smo/meterWaterImport/IMeterWaterImportSMO.java

@@ -0,0 +1,24 @@
+package com.java110.front.smo.meterWaterImport;
+
+import com.java110.core.context.IPageData;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.multipart.MultipartFile;
+
+/**
+ * @ClassName IAssetImportSMO
+ * @Description TODO
+ * @Author wuxw
+ * @Date 2019/9/23 23:13
+ * @Version 1.0
+ * add by wuxw 2019/9/23
+ **/
+public interface IMeterWaterImportSMO {
+
+    /**
+     * 导入excel数据
+     * @param pd 前台数据封装
+     * @param uploadFile excel 文件
+     * @return ResponseEntity
+     */
+    public ResponseEntity<String> importExcelData(IPageData pd, MultipartFile uploadFile) throws Exception;
+}

+ 215 - 0
service-front/src/main/java/com/java110/front/smo/meterWaterImport/impl/MeterWaterImportSMOImpl.java

@@ -0,0 +1,215 @@
+package com.java110.front.smo.meterWaterImport.impl;
+
+import com.alibaba.fastjson.JSONObject;
+import com.java110.core.component.BaseComponentSMO;
+import com.java110.core.context.IPageData;
+import com.java110.entity.assetImport.ImportFee;
+import com.java110.entity.assetImport.ImportFloor;
+import com.java110.entity.assetImport.ImportOwner;
+import com.java110.entity.assetImport.ImportParkingSpace;
+import com.java110.entity.assetImport.ImportRoom;
+import com.java110.entity.component.ComponentValidateResult;
+import com.java110.entity.meterImport.ImportMeter;
+import com.java110.front.smo.meterWaterImport.IMeterWaterImportSMO;
+import com.java110.utils.constant.ServiceConstant;
+import com.java110.utils.util.Assert;
+import com.java110.utils.util.ImportExcelUtils;
+import com.java110.utils.util.StringUtil;
+import org.apache.poi.ss.usermodel.Sheet;
+import org.apache.poi.ss.usermodel.Workbook;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Service;
+import org.springframework.web.client.RestTemplate;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @ClassName AssetImportSmoImpl
+ * @Description TODO
+ * @Author wuxw
+ * @Date 2019/9/23 23:14
+ * @Version 1.0
+ * add by wuxw 2019/9/23
+ **/
+@Service("feeImportSMOImpl")
+public class MeterWaterImportSMOImpl extends BaseComponentSMO implements IMeterWaterImportSMO {
+    private final static Logger logger = LoggerFactory.getLogger(MeterWaterImportSMOImpl.class);
+
+    @Autowired
+    private RestTemplate restTemplate;
+
+    @Override
+    public ResponseEntity<String> importExcelData(IPageData pd, MultipartFile uploadFile) throws Exception {
+
+        try {
+            ComponentValidateResult result = this.validateStoreStaffCommunityRelationship(pd, restTemplate);
+
+            //InputStream is = uploadFile.getInputStream();
+
+            Workbook workbook = null;  //工作簿
+            //工作表
+            String[] headers = null;   //表头信息
+            List<ImportMeter> importFees = new ArrayList<ImportMeter>();
+
+
+
+            workbook = ImportExcelUtils.createWorkbook(uploadFile);
+
+            getImportFees(workbook,importFees);
+
+
+            // 保存数据
+            return dealExcelData(pd,importFees, result);
+        } catch (Exception e) {
+            logger.error("导入失败 ", e);
+            return new ResponseEntity<String>("非常抱歉,您填写的模板数据有误:" + e.getMessage(), HttpStatus.BAD_REQUEST);
+        }
+    }
+
+    /**
+     * 处理ExcelData数据
+     *
+     * @param meters
+     */
+    private ResponseEntity<String> dealExcelData(IPageData pd,
+                                                 List<ImportMeter> meters,
+                                                 ComponentValidateResult result) {
+        ResponseEntity<String> responseEntity = null;
+
+        //保存车位
+        responseEntity = savedMeterWaterInfo(pd, meters, result);
+
+        if (responseEntity == null || responseEntity.getStatusCode() != HttpStatus.OK) {
+            return responseEntity;
+        }
+
+        return responseEntity;
+    }
+
+
+
+
+
+
+
+
+
+    /**
+     * 保存业主信息
+     *
+     * @param pd
+     * @param result
+     * @return
+     */
+    private ResponseEntity<String> savedMeterWaterInfo(IPageData pd, List<ImportMeter> meters, ComponentValidateResult result) {
+        JSONObject jsonObject = JSONObject.parseObject(pd.getReqData());
+        String communityId = jsonObject.getString("communityId");
+        String meterType = jsonObject.getString("meterType");
+        String apiUrl = "";
+        JSONObject paramIn = null;
+        ResponseEntity<String> responseEntity = new ResponseEntity<String>("成功", HttpStatus.OK);
+        for (ImportMeter meter : meters) {
+            paramIn = new JSONObject();
+            apiUrl = ServiceConstant.SERVICE_API_URL + "/api/meterWater.saveMeterWater";
+            paramIn.put("communityId", communityId);
+            paramIn.put("meterType", meterType);
+            paramIn.put("objType",meter.getObjType());
+            paramIn.put("objId", meter.getObjId());
+            paramIn.put("preDegrees", meter.getCurDegrees());
+            paramIn.put("curDegrees", meter.getCurDegrees());
+            paramIn.put("preReadingTime", meter.getCurReadingTime());
+            paramIn.put("curReadingTime", meter.getCurReadingTime());
+            responseEntity = this.callCenterService(restTemplate, pd, paramIn.toJSONString(), apiUrl, HttpMethod.POST);
+            if (responseEntity.getStatusCode() == HttpStatus.OK) {
+            }
+        }
+
+        return responseEntity;
+    }
+
+
+
+    /**
+     * 查询存在的业主
+     *
+     * @param pd
+     * @param result
+     * @param importOwner
+     * @return
+     */
+    private JSONObject getExistsOwner(IPageData pd, ComponentValidateResult result, ImportOwner importOwner) {
+        String apiUrl = "";
+        ResponseEntity<String> responseEntity = null;
+        apiUrl = ServiceConstant.SERVICE_API_URL + "/api/owner.queryOwners?page=1&row=1&communityId=" + result.getCommunityId()
+                + "&ownerTypeCd=1001&name=" + importOwner.getOwnerName() + "&link=" + importOwner.getTel();
+        responseEntity = this.callCenterService(restTemplate, pd, "", apiUrl, HttpMethod.GET);
+
+        if (responseEntity.getStatusCode() != HttpStatus.OK) { //跳过 保存单元信息
+            return null;
+        }
+
+        JSONObject savedOwnerInfoResult = JSONObject.parseObject(responseEntity.getBody());
+
+        if (!savedOwnerInfoResult.containsKey("owners") || savedOwnerInfoResult.getJSONArray("owners").size() != 1) {
+            return null;
+        }
+
+        JSONObject savedOwnerInfo = savedOwnerInfoResult.getJSONArray("owners").getJSONObject(0);
+
+        return savedOwnerInfo;
+    }
+
+
+    public void getImportFees(Workbook workbook,List<ImportMeter> meters) {
+        Sheet sheet = null;
+        sheet = ImportExcelUtils.getSheet(workbook, "水电费");
+        List<Object[]> oList = ImportExcelUtils.listFromSheet(sheet);
+        ImportFloor importFloor = null;
+        for (int osIndex = 0; osIndex < oList.size(); osIndex++) {
+            Object[] os = oList.get(osIndex);
+            if (osIndex == 0) { // 第一行是 头部信息 直接跳过
+                continue;
+            }
+
+            if (StringUtil.isNullOrNone(os[0])) {
+                continue;
+            }
+
+            Assert.hasLength(os[0].toString(), "表类型" + (osIndex + 1) + "表类型为空");
+            Assert.hasLength(os[1].toString(), "类型" + (osIndex + 1) + "类型为空");
+            Assert.hasLength(os[2].toString(), "对象ID" + (osIndex + 1) + "对象ID为空");
+            Assert.hasLength(os[3].toString(), "本期读数" + (osIndex + 1) + "本期读数为空");
+            Assert.hasLength(os[4].toString(), "读表时间" + (osIndex + 1) + "读表时间为空");
+            ImportMeter meter = new ImportMeter();
+
+            //水电费类型
+            if ("电表".equals(os[0].toString())) {
+                meter.setMeterType("1010");
+            } else if ("水表".equals(os[0].toString())) {
+                meter.setMeterType("2020");
+            }
+            meter.setObjType(os[1].toString());
+            meter.setObjId(os[2].toString());
+            meter.setRemark(os[3].toString());
+            //本期读数
+            meter.setCurDegrees(os[4].toString());
+            meter.setCurReadingTime(os[5].toString());
+            meters.add(meter);
+        }
+    }
+
+    public RestTemplate getRestTemplate() {
+        return restTemplate;
+    }
+
+    public void setRestTemplate(RestTemplate restTemplate) {
+        this.restTemplate = restTemplate;
+    }
+}