diff --git a/mallinkCallback/src/main/java/com/iformall/controller/device/KwBoxV1Controller.java b/mallinkCallback/src/main/java/com/iformall/controller/device/KwBoxV1Controller.java index 19b13d8bb..e5282829b 100644 --- a/mallinkCallback/src/main/java/com/iformall/controller/device/KwBoxV1Controller.java +++ b/mallinkCallback/src/main/java/com/iformall/controller/device/KwBoxV1Controller.java @@ -10,6 +10,7 @@ import com.iformall.domain.po.KwBoxCmdHistory; import com.iformall.enums.EnumBoxRegisterStatus; import com.iformall.service.kw.KwBoxCmdHistoryService; import com.iformall.service.kw.KwBoxService; + import io.netty.util.internal.StringUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -19,6 +20,9 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.text.SimpleDateFormat; +import java.time.Instant; +import java.time.LocalDateTime; +import java.time.ZoneId; import java.util.*; import java.util.stream.Collectors; @@ -135,6 +139,12 @@ public class KwBoxV1Controller extends BaseController { record.setId(kwBox.getId()); record.setLastOnlineTime(new Date()); kwBoxService.saveOrUpdate(record); + + Instant instant = deviceTime.toInstant(); + ZoneId zone = ZoneId.systemDefault(); + LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, zone); + if (localDateTime.getYear() == 1980) + deviceTime = new Date(); List> metersData = (List>)paramMap.get("meters"); kwBoxService.saveMeterData(kwBox, metersData, deviceTime); @@ -147,7 +157,7 @@ public class KwBoxV1Controller extends BaseController { { updateMeters = true; } else { - if (!meters.containsAll(metersData.stream().map(m->m.get("addr")).collect(Collectors.toList()))) + if (!meters.containsAll(metersData.stream().map(m->m.get(KwBoxService.METER_ADDRESS)).collect(Collectors.toList()))) updateMeters = true; } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxPropertyContractServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxPropertyContractServiceImpl.java index 8188c4997..b33d919ff 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxPropertyContractServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxPropertyContractServiceImpl.java @@ -268,7 +268,9 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService } //保存物业合同信息 String message; + boolean hasFlow = true; if (record.getId() == null) { + hasFlow = false; final IdWorker idWorker = IdWorker.get(); record.setId(idWorker.nextId()); record.setRentalStartDate(wxRentContract.getRentalStartDate()); @@ -330,6 +332,10 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService record.setPrice(record.getPrice() != null ? record.getPrice() : 0); record.setDeposit(record.getDeposit() != null ? record.getDeposit() : 0); record.setUpdatetime(new Date()); + if (CollectionUtils.isEmpty(record.getFlowParams())) { + hasFlow = false; + record.setApplyStatus(EnumRentContractAppStatus.DEFAULT.getCode()); + } try { wxPropertyContractMapper.updateByPrimaryKeySelective(record); } catch (Exception e) { @@ -340,8 +346,8 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService message = "更新物业合同信息成功"; } - if (record.getOperationType().equals(EnumContractOperationType.PART.getCode())) { - if (!CollectionUtils.isEmpty(record.getFlowParams())) { + if (hasFlow) { + if (record.getOperationType().equals(EnumContractOperationType.PART.getCode())) { if (wxFlowService.getModelByType((Integer) record.getFlowParams().get("businessType"), record.getTenantId()) == null) { updatePropertyContractStatus(record.getId()); } else { @@ -355,10 +361,7 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService wxPropertyContractMapper.updateStatus(updateRentContract); logger.info("id:{},启动审批流成功", record.getId().toString()); } - } - } else { - //有模板,启动审批流,没有,直接生产账单 - if (!CollectionUtils.isEmpty(record.getFlowParams())) { + } else { if (wxFlowService.getModelByType((Integer) record.getFlowParams().get("businessType"), record.getTenantId()) == null && record.getMerchantId() != null) { wxRentContractService.updateRentContractStatus(record.getId()); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java index d588a404e..3278b2e75 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java @@ -769,7 +769,7 @@ public class WxRentContractServiceImpl implements WxRentContractService { //按月计租 // if (wxRentContract.getAdjustPeriod().equals(EnumRentContractAdjustPeriod.ADJUST_PERIOD_MONTH.getCode()) // ||wxRentContract.getAdjustPeriod().equals(EnumRentContractAdjustPeriod.ADJUST_PERIOD_NAR_MONTH.getCode())) { - rentList = buildRentMonth(wxMerchant, userId, wxRentContract, receivePeriod, lease, rentalStartDate, price,isPreview); + rentList = buildRentMonth(userId, wxRentContract, receivePeriod, lease, rentalStartDate, price, isPreview); // } else { // //如果按日 // List yearList = new ArrayList<>(); @@ -830,7 +830,7 @@ public class WxRentContractServiceImpl implements WxRentContractService { return priceList; } - public List buildRentMonth(WxMerchant wxMerchant, Long userId, WxRentContract wxRentContract, int receivePeriod, Integer lease, Date rentalStartDate, Long price, Integer isPreview) { + public List buildRentMonth(Long userId, WxRentContract wxRentContract, int receivePeriod, Integer lease, Date rentalStartDate, Long price, Integer isPreview) { int size = 0; long[] priceArrs = null; List> shopInfos = new ArrayList<>(); @@ -877,8 +877,7 @@ public class WxRentContractServiceImpl implements WxRentContractService { } } else { for (int i = 1; i < size; i++) { - BigDecimal divide = priceD.add(new BigDecimal(integers.get(i))); - priceD = priceD.add(divide); + priceD = priceD.add(new BigDecimal(integers.get(i))); priceArrs[i] = priceD.setScale(0, RoundingMode.HALF_EVEN).longValue(); } } @@ -919,13 +918,27 @@ public class WxRentContractServiceImpl implements WxRentContractService { yearList.add(startDate); } - Map resultMap = buildRent(receivePeriod, priceArrs, yearList, Calendar.MONTH, wxRentContract, userId, wxMerchant, billcount, isPreview, shopInfos); + + String shopInfoStr = null; + if (wxRentContract.getRentShopType().equals(EnumRentShopType.SHOP.getCode())) { + String rentInfo = wxRentContract.getRentInfo(); + JSONArray rentInfoArray = JSONArray.parseArray(rentInfo); + int rentSize = rentInfoArray.size(); + Map shopInfoMap = new HashMap<>(rentSize); + for (int j = 0; j < rentSize; j++) { + JSONObject rentInfoObject = rentInfoArray.getJSONObject(j); + shopInfoMap.put(rentInfoObject.getString("shopNumber"), rentInfoObject.getString("buildArea")); + } + shopInfoStr = JSONObject.toJSONString(shopInfoMap); + } + + Map resultMap = buildRent(receivePeriod, priceArrs, yearList, Calendar.MONTH, wxRentContract, userId, billcount, isPreview, shopInfoStr); List billRentList = (List)resultMap.get("billList"); resultList.addAll(billRentList); return resultList; } - public Map buildRent(int receivePeriod,long[] priceArrs, List yearList,int dayType, WxRentContract wxRentContract, Long userId, WxMerchant wxMerchant, int billcount, Integer isPreview,List> shopInfoList) { + public Map buildRent(int receivePeriod, long[] priceArrs, List yearList, int dayType, WxRentContract wxRentContract, Long userId, int billcount, Integer isPreview, String shopInfoStr) { SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd"); Map resultMap = new HashedMap(); List resultList = new ArrayList<>(); @@ -958,28 +971,6 @@ public class WxRentContractServiceImpl implements WxRentContractService { //获取price 、shopInfo long price = priceArrs[index]; - Map shopInfo = null; - if(!CollectionUtils.isEmpty(shopInfoList)){ - shopInfo = shopInfoList.get(index); - } - - String shopInfoStr = null; - if (shopInfo != null) { - shopInfoStr = JSONObject.toJSONString(shopInfo); - } else { - if (wxRentContract.getRentShopType().equals(EnumRentShopType.SHOP.getCode()) && - wxRentContract.getType().equals(EnumRentContractType.RENT_BY_JOINT.getCode())) { - String rentInfo = wxRentContract.getRentInfo(); - JSONArray rentInfoArray = JSONArray.parseArray(rentInfo); - int rentSize = rentInfoArray.size(); - Map shopInfoMap = new HashMap<>(); - for (int j = 0; j < rentSize; j++) { - JSONObject rentInfoObject = rentInfoArray.getJSONObject(j); - shopInfoMap.put(rentInfoObject.getString("shopNumber"), 0); - } - shopInfoStr = JSONObject.toJSONString(shopInfoMap); - } - } WxBillRent wxBillRent = new WxBillRent(); wxBillRent.setIsPreview(isPreview);