소스 검색

优化代码

wuxw 3 년 전
부모
커밋
2a389181fb
16개의 변경된 파일944개의 추가작업 그리고 434개의 파일을 삭제
  1. BIN
      .DS_Store
  2. 9 0
      java110-bean/src/main/java/com/java110/po/machine/MachineRecordPo.java
  3. 169 0
      java110-db/src/main/resources/mapper/common/MachineRecordV1ServiceDaoImplMapper.xml
  4. 68 0
      java110-interface/src/main/java/com/java110/intf/common/IMachineRecordV1InnerServiceSMO.java
  5. 0 58
      service-api/src/main/java/com/java110/api/listener/applicationKey/DeleteApplicationKeyListener.java
  6. 0 101
      service-api/src/main/java/com/java110/api/listener/applicationKey/SaveApplicationKeyListener.java
  7. 0 118
      service-api/src/main/java/com/java110/api/listener/applicationKey/UpdateApplicationKeyListener.java
  8. 1 1
      service-common/src/main/java/com/java110/common/cmd/applicationKey/ApplyApplicationKeyCmd.java
  9. 46 85
      service-api/src/main/java/com/java110/api/listener/applicationKey/AuthApplicationKeyListener.java
  10. 40 0
      service-common/src/main/java/com/java110/common/cmd/applicationKey/DeleteApplicationKeyCmd.java
  11. 16 71
      service-api/src/main/java/com/java110/api/listener/applicationKey/ListApplicationKeysListener.java
  12. 158 0
      service-common/src/main/java/com/java110/common/cmd/applicationKey/SaveApplicationKeyCmd.java
  13. 159 0
      service-common/src/main/java/com/java110/common/cmd/applicationKey/UpdateApplicationKeyCmd.java
  14. 77 0
      service-common/src/main/java/com/java110/common/dao/IMachineRecordV1ServiceDao.java
  15. 112 0
      service-common/src/main/java/com/java110/common/dao/impl/MachineRecordV1ServiceDaoImpl.java
  16. 89 0
      service-common/src/main/java/com/java110/common/smo/impl/MachineRecordV1InnerServiceSMOImpl.java

BIN
.DS_Store


+ 9 - 0
java110-bean/src/main/java/com/java110/po/machine/MachineRecordPo.java

@@ -29,6 +29,7 @@ public class MachineRecordPo implements Serializable {
     private String noticeState;
     private String auditMessage;
     private String similar;
+    private String statusCd;
 
     public String getMachineRecordId() {
         return machineRecordId;
@@ -165,4 +166,12 @@ public class MachineRecordPo implements Serializable {
     public void setSimilar(String similar) {
         this.similar = similar;
     }
+
+    public String getStatusCd() {
+        return statusCd;
+    }
+
+    public void setStatusCd(String statusCd) {
+        this.statusCd = statusCd;
+    }
 }

+ 169 - 0
java110-db/src/main/resources/mapper/common/MachineRecordV1ServiceDaoImplMapper.xml

@@ -0,0 +1,169 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="machineRecordV1ServiceDaoImpl">
+
+
+
+
+
+    <!-- 保存开门记录信息 add by wuxw 2018-07-03 -->
+    <insert id="saveMachineRecordInfo" parameterType="Map">
+        insert into machine_record(
+file_time,similar,machine_code,open_type_cd,id_card,machine_record_id,machine_id,name,tel,community_id,record_type_cd,file_id
+) values (
+#{fileTime},#{similar},#{machineCode},#{openTypeCd},#{idCard},#{machineRecordId},#{machineId},#{name},#{tel},#{communityId},#{recordTypeCd},#{fileId}
+)
+    </insert>
+
+
+
+    <!-- 查询开门记录信息 add by wuxw 2018-07-03 -->
+    <select id="getMachineRecordInfo" parameterType="Map" resultType="Map">
+        select  t.file_time,t.file_time fileTime,t.similar,t.machine_code,t.machine_code machineCode,t.open_type_cd,t.open_type_cd openTypeCd,t.id_card,t.id_card idCard,t.status_cd,t.status_cd statusCd,t.machine_record_id,t.machine_record_id machineRecordId,t.machine_id,t.machine_id machineId,t.name,t.tel,t.community_id,t.community_id communityId,t.record_type_cd,t.record_type_cd recordTypeCd,t.file_id,t.file_id fileId 
+from machine_record t 
+where 1 =1 
+<if test="fileTime !=null and fileTime != ''">
+   and t.file_time= #{fileTime}
+</if> 
+<if test="similar !=null and similar != ''">
+   and t.similar= #{similar}
+</if> 
+<if test="machineCode !=null and machineCode != ''">
+   and t.machine_code= #{machineCode}
+</if> 
+<if test="openTypeCd !=null and openTypeCd != ''">
+   and t.open_type_cd= #{openTypeCd}
+</if> 
+<if test="idCard !=null and idCard != ''">
+   and t.id_card= #{idCard}
+</if> 
+<if test="statusCd !=null and statusCd != ''">
+   and t.status_cd= #{statusCd}
+</if> 
+<if test="machineRecordId !=null and machineRecordId != ''">
+   and t.machine_record_id= #{machineRecordId}
+</if> 
+<if test="machineId !=null and machineId != ''">
+   and t.machine_id= #{machineId}
+</if> 
+<if test="name !=null and name != ''">
+   and t.name= #{name}
+</if> 
+<if test="tel !=null and tel != ''">
+   and t.tel= #{tel}
+</if> 
+<if test="communityId !=null and communityId != ''">
+   and t.community_id= #{communityId}
+</if> 
+<if test="recordTypeCd !=null and recordTypeCd != ''">
+   and t.record_type_cd= #{recordTypeCd}
+</if> 
+<if test="fileId !=null and fileId != ''">
+   and t.file_id= #{fileId}
+</if> 
+order by t.create_time desc
+<if test="page != -1 and page != null ">
+   limit #{page}, #{row}
+</if> 
+
+    </select>
+
+
+
+
+    <!-- 修改开门记录信息 add by wuxw 2018-07-03 -->
+    <update id="updateMachineRecordInfo" parameterType="Map">
+        update  machine_record t set t.status_cd = #{statusCd}
+<if test="newBId != null and newBId != ''">
+,t.b_id = #{newBId}
+</if> 
+<if test="fileTime !=null and fileTime != ''">
+, t.file_time= #{fileTime}
+</if> 
+<if test="similar !=null and similar != ''">
+, t.similar= #{similar}
+</if> 
+<if test="machineCode !=null and machineCode != ''">
+, t.machine_code= #{machineCode}
+</if> 
+<if test="openTypeCd !=null and openTypeCd != ''">
+, t.open_type_cd= #{openTypeCd}
+</if> 
+<if test="idCard !=null and idCard != ''">
+, t.id_card= #{idCard}
+</if> 
+<if test="machineId !=null and machineId != ''">
+, t.machine_id= #{machineId}
+</if> 
+<if test="name !=null and name != ''">
+, t.name= #{name}
+</if> 
+<if test="tel !=null and tel != ''">
+, t.tel= #{tel}
+</if> 
+<if test="communityId !=null and communityId != ''">
+, t.community_id= #{communityId}
+</if> 
+<if test="recordTypeCd !=null and recordTypeCd != ''">
+, t.record_type_cd= #{recordTypeCd}
+</if> 
+<if test="fileId !=null and fileId != ''">
+, t.file_id= #{fileId}
+</if> 
+ where 1=1 <if test="machineRecordId !=null and machineRecordId != ''">
+and t.machine_record_id= #{machineRecordId}
+</if> 
+
+    </update>
+
+    <!-- 查询开门记录数量 add by wuxw 2018-07-03 -->
+     <select id="queryMachineRecordsCount" parameterType="Map" resultType="Map">
+        select  count(1) count 
+from machine_record t 
+where 1 =1 
+<if test="fileTime !=null and fileTime != ''">
+   and t.file_time= #{fileTime}
+</if> 
+<if test="similar !=null and similar != ''">
+   and t.similar= #{similar}
+</if> 
+<if test="machineCode !=null and machineCode != ''">
+   and t.machine_code= #{machineCode}
+</if> 
+<if test="openTypeCd !=null and openTypeCd != ''">
+   and t.open_type_cd= #{openTypeCd}
+</if> 
+<if test="idCard !=null and idCard != ''">
+   and t.id_card= #{idCard}
+</if> 
+<if test="statusCd !=null and statusCd != ''">
+   and t.status_cd= #{statusCd}
+</if> 
+<if test="machineRecordId !=null and machineRecordId != ''">
+   and t.machine_record_id= #{machineRecordId}
+</if> 
+<if test="machineId !=null and machineId != ''">
+   and t.machine_id= #{machineId}
+</if> 
+<if test="name !=null and name != ''">
+   and t.name= #{name}
+</if> 
+<if test="tel !=null and tel != ''">
+   and t.tel= #{tel}
+</if> 
+<if test="communityId !=null and communityId != ''">
+   and t.community_id= #{communityId}
+</if> 
+<if test="recordTypeCd !=null and recordTypeCd != ''">
+   and t.record_type_cd= #{recordTypeCd}
+</if> 
+<if test="fileId !=null and fileId != ''">
+   and t.file_id= #{fileId}
+</if> 
+
+
+     </select>
+
+</mapper>

+ 68 - 0
java110-interface/src/main/java/com/java110/intf/common/IMachineRecordV1InnerServiceSMO.java

@@ -0,0 +1,68 @@
+/*
+ * Copyright 2017-2020 吴学文 and java110 team.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.java110.intf.common;
+
+import com.java110.config.feign.FeignConfiguration;
+import com.java110.dto.machine.MachineRecordDto;
+import com.java110.po.machine.MachineRecordPo;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+
+import java.util.List;
+
+/**
+ * 类表述: 服务之前调用的接口类,不对外提供接口能力 只用于接口建调用
+ * add by 吴学文 at 2022-07-15 23:44:39 mail: 928255095@qq.com
+ * open source address: https://gitee.com/wuxw7/MicroCommunity
+ * 官网:http://www.homecommunity.cn
+ * 温馨提示:如果您对此文件进行修改 请不要删除原有作者及注释信息,请补充您的 修改的原因以及联系邮箱如下
+ * // modify by 张三 at 2021-09-12 第10行在某种场景下存在某种bug 需要修复,注释10至20行 加入 20行至30行
+ */
+@FeignClient(name = "common-service", configuration = {FeignConfiguration.class})
+@RequestMapping("/machineRecordV1Api")
+public interface IMachineRecordV1InnerServiceSMO {
+
+
+    @RequestMapping(value = "/saveMachineRecord", method = RequestMethod.POST)
+    public int saveMachineRecord(@RequestBody MachineRecordPo machineRecordPo);
+
+    @RequestMapping(value = "/updateMachineRecord", method = RequestMethod.POST)
+    public int updateMachineRecord(@RequestBody MachineRecordPo machineRecordPo);
+
+    @RequestMapping(value = "/deleteMachineRecord", method = RequestMethod.POST)
+    public int deleteMachineRecord(@RequestBody MachineRecordPo machineRecordPo);
+
+    /**
+     * <p>查询小区楼信息</p>
+     *
+     *
+     * @param machineRecordDto 数据对象分享
+     * @return MachineRecordDto 对象数据
+     */
+    @RequestMapping(value = "/queryMachineRecords", method = RequestMethod.POST)
+    List<MachineRecordDto> queryMachineRecords(@RequestBody MachineRecordDto machineRecordDto);
+
+    /**
+     * 查询<p>小区楼</p>总记录数
+     *
+     * @param machineRecordDto 数据对象分享
+     * @return 小区下的小区楼记录数
+     */
+    @RequestMapping(value = "/queryMachineRecordsCount", method = RequestMethod.POST)
+    int queryMachineRecordsCount(@RequestBody MachineRecordDto machineRecordDto);
+}

+ 0 - 58
service-api/src/main/java/com/java110/api/listener/applicationKey/DeleteApplicationKeyListener.java

@@ -1,58 +0,0 @@
-package com.java110.api.listener.applicationKey;
-
-import com.alibaba.fastjson.JSONObject;
-import com.java110.api.bmo.applicationKey.IApplicationKeyBMO;
-import com.java110.api.listener.AbstractServiceApiPlusListener;
-import com.java110.core.annotation.Java110Listener;
-import com.java110.core.context.DataFlowContext;
-import com.java110.core.event.service.api.ServiceDataFlowEvent;
-import com.java110.utils.constant.ServiceCodeApplicationKeyConstant;
-import com.java110.utils.util.Assert;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.HttpMethod;
-
-/**
- * 保存小区侦听
- * add by wuxw 2019-06-30
- */
-@Java110Listener("deleteApplicationKeyListener")
-public class DeleteApplicationKeyListener extends AbstractServiceApiPlusListener {
-
-    @Autowired
-    private IApplicationKeyBMO applicationKeyBMOImpl;
-
-    @Override
-    protected void validate(ServiceDataFlowEvent event, JSONObject reqJson) {
-        //Assert.hasKeyAndValue(reqJson, "xxx", "xxx");
-        Assert.hasKeyAndValue(reqJson, "communityId", "必填,请填写小区");
-
-        Assert.hasKeyAndValue(reqJson, "applicationKeyId", "钥匙申请ID不能为空");
-
-    }
-
-    @Override
-    protected void doSoService(ServiceDataFlowEvent event, DataFlowContext context, JSONObject reqJson) {
-
-
-        //删除钥匙
-        applicationKeyBMOImpl.deleteApplicationKey(reqJson, context);
-
-    }
-
-    @Override
-    public String getServiceCode() {
-        return ServiceCodeApplicationKeyConstant.DELETE_APPLICATIONKEY;
-    }
-
-    @Override
-    public HttpMethod getHttpMethod() {
-        return HttpMethod.POST;
-    }
-
-    @Override
-    public int getOrder() {
-        return DEFAULT_ORDER;
-    }
-
-
-}

+ 0 - 101
service-api/src/main/java/com/java110/api/listener/applicationKey/SaveApplicationKeyListener.java

@@ -1,101 +0,0 @@
-package com.java110.api.listener.applicationKey;
-
-import com.alibaba.fastjson.JSONObject;
-import com.java110.api.bmo.applicationKey.IApplicationKeyBMO;
-import com.java110.api.listener.AbstractServiceApiPlusListener;
-import com.java110.core.annotation.Java110Listener;
-import com.java110.core.context.DataFlowContext;
-import com.java110.core.factory.GenerateCodeFactory;
-import com.java110.intf.common.IFileInnerServiceSMO;
-import com.java110.dto.file.FileDto;
-import com.java110.core.event.service.api.ServiceDataFlowEvent;
-import com.java110.utils.constant.ServiceCodeApplicationKeyConstant;
-import com.java110.utils.util.Assert;
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.HttpMethod;
-
-/**
- * 保存小区侦听
- * add by wuxw 2019-06-30
- */
-@Java110Listener("saveApplicationKeyListener")
-public class SaveApplicationKeyListener extends AbstractServiceApiPlusListener {
-
-    @Autowired
-    private IApplicationKeyBMO applicationKeyBMOImpl;
-
-    @Autowired
-    private IFileInnerServiceSMO fileInnerServiceSMOImpl;
-
-    @Override
-    protected void validate(ServiceDataFlowEvent event, JSONObject reqJson) {
-        //Assert.hasKeyAndValue(reqJson, "xxx", "xxx");
-
-        Assert.hasKeyAndValue(reqJson, "name", "必填,请填写姓名");
-        Assert.hasKeyAndValue(reqJson, "communityId", "必填,请填写小区");
-        Assert.hasKeyAndValue(reqJson, "tel", "必填,请填写手机号");
-        Assert.hasKeyAndValue(reqJson, "typeCd", "必填,请选择用户类型");
-        Assert.hasKeyAndValue(reqJson, "sex", "必填,请选择性别");
-        Assert.hasKeyAndValue(reqJson, "age", "必填,请填写年龄");
-        Assert.hasKeyAndValue(reqJson, "idCard", "必填,请填写身份证号");
-        Assert.hasKeyAndValue(reqJson, "startTime", "必填,请选择开始时间");
-        Assert.hasKeyAndValue(reqJson, "endTime", "必填,请选择结束时间");
-        Assert.hasKeyAndValue(reqJson, "locationTypeCd", "必填,位置不能为空");
-        Assert.hasKeyAndValue(reqJson, "locationObjId", "必填,未选择位置对象");
-        Assert.hasKeyAndValue(reqJson, "storeId", "必填,请填写商户ID");
-        Assert.hasKeyAndValue(reqJson, "typeFlag", "必填,请选择钥匙类型");
-
-    }
-
-    @Override
-    protected void doSoService(ServiceDataFlowEvent event, DataFlowContext context, JSONObject reqJson) {
-
-
-        //添加单元信息
-        applicationKeyBMOImpl.addApplicationKey(reqJson, context);
-
-        applicationKeyBMOImpl.addMsg(reqJson, context);
-
-        if (reqJson.containsKey("photo") && !StringUtils.isEmpty(reqJson.getString("photo"))) {
-            FileDto fileDto = new FileDto();
-            fileDto.setFileId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_file_id));
-            fileDto.setFileName(fileDto.getFileId());
-            fileDto.setContext(reqJson.getString("photo"));
-            fileDto.setSuffix("jpeg");
-            fileDto.setCommunityId(reqJson.getString("communityId"));
-            String fileName = fileInnerServiceSMOImpl.saveFile(fileDto);
-
-            reqJson.put("applicationKeyPhotoId", fileDto.getFileId());
-            reqJson.put("fileSaveName", fileName);
-
-            applicationKeyBMOImpl.addOwnerPhoto(reqJson, context);
-
-        }
-    }
-
-
-    @Override
-    public String getServiceCode() {
-        return ServiceCodeApplicationKeyConstant.ADD_APPLICATIONKEY;
-    }
-
-    @Override
-    public HttpMethod getHttpMethod() {
-        return HttpMethod.POST;
-    }
-
-    @Override
-    public int getOrder() {
-        return DEFAULT_ORDER;
-    }
-
-
-    public IFileInnerServiceSMO getFileInnerServiceSMOImpl() {
-        return fileInnerServiceSMOImpl;
-    }
-
-    public void setFileInnerServiceSMOImpl(IFileInnerServiceSMO fileInnerServiceSMOImpl) {
-        this.fileInnerServiceSMOImpl = fileInnerServiceSMOImpl;
-    }
-}

+ 0 - 118
service-api/src/main/java/com/java110/api/listener/applicationKey/UpdateApplicationKeyListener.java

@@ -1,118 +0,0 @@
-package com.java110.api.listener.applicationKey;
-
-import com.alibaba.fastjson.JSONObject;
-import com.java110.api.bmo.applicationKey.IApplicationKeyBMO;
-import com.java110.api.listener.AbstractServiceApiPlusListener;
-import com.java110.core.factory.GenerateCodeFactory;
-import com.java110.intf.common.IFileInnerServiceSMO;
-import com.java110.intf.common.IFileRelInnerServiceSMO;
-import com.java110.intf.common.IApplicationKeyInnerServiceSMO;
-import com.java110.dto.file.FileDto;
-import com.java110.utils.constant.*;
-import com.java110.utils.util.Assert;
-import com.java110.core.annotation.Java110Listener;
-import com.java110.core.context.DataFlowContext;
-import com.java110.core.event.service.api.ServiceDataFlowEvent;
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.HttpMethod;
-
-/**
- * 保存钥匙申请侦听
- * add by wuxw 2019-06-30
- */
-@Java110Listener("updateApplicationKeyListener")
-public class UpdateApplicationKeyListener extends AbstractServiceApiPlusListener {
-
-    @Autowired
-    private IApplicationKeyBMO applicationKeyBMOImpl;
-
-    @Autowired
-    private IApplicationKeyInnerServiceSMO applicationKeyInnerServiceSMOImpl;
-
-    @Autowired
-    private IFileInnerServiceSMO fileInnerServiceSMOImpl;
-
-    @Autowired
-    private IFileRelInnerServiceSMO fileRelInnerServiceSMOImpl;
-
-    @Override
-    protected void validate(ServiceDataFlowEvent event, JSONObject reqJson) {
-
-        Assert.hasKeyAndValue(reqJson, "applicationKeyId", "钥匙申请ID不能为空");
-        Assert.hasKeyAndValue(reqJson, "communityId", "必填,请填写小区");
-        Assert.hasKeyAndValue(reqJson, "name", "必填,请填写姓名");
-        Assert.hasKeyAndValue(reqJson, "tel", "必填,请填写手机号");
-        Assert.hasKeyAndValue(reqJson, "typeCd", "必填,请选择用户类型");
-        Assert.hasKeyAndValue(reqJson, "sex", "必填,请选择性别");
-        Assert.hasKeyAndValue(reqJson, "age", "必填,请填写年龄");
-        Assert.hasKeyAndValue(reqJson, "idCard", "必填,请填写身份证号");
-        Assert.hasKeyAndValue(reqJson, "startTime", "必填,请选择开始时间");
-        Assert.hasKeyAndValue(reqJson, "endTime", "必填,请选择结束时间");
-        Assert.hasKeyAndValue(reqJson, "locationTypeCd", "必填,位置不能为空");
-        Assert.hasKeyAndValue(reqJson, "locationObjId", "必填,未选择位置对象");
-        Assert.hasKeyAndValue(reqJson, "typeFlag", "必填,未选择钥匙类型");
-
-    }
-
-    @Override
-    protected void doSoService(ServiceDataFlowEvent event, DataFlowContext context, JSONObject reqJson) {
-        //添加钥匙信息
-        applicationKeyBMOImpl.updateApplicationKey(reqJson, context);
-
-        if (reqJson.containsKey("photo") && !StringUtils.isEmpty(reqJson.getString("photo"))) {
-            FileDto fileDto = new FileDto();
-            fileDto.setFileId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_file_id));
-            fileDto.setFileName(fileDto.getFileId());
-            fileDto.setContext(reqJson.getString("photo"));
-            fileDto.setSuffix("jpeg");
-            fileDto.setCommunityId(reqJson.getString("communityId"));
-            String fileName = fileInnerServiceSMOImpl.saveFile(fileDto);
-            reqJson.put("applicationKeyPhotoId", fileDto.getFileId());
-            reqJson.put("fileSaveName", fileName);
-
-            applicationKeyBMOImpl.editApplicationKeyPhoto(reqJson, context);
-
-        }
-    }
-
-    @Override
-    public String getServiceCode() {
-        return ServiceCodeApplicationKeyConstant.UPDATE_APPLICATIONKEY;
-    }
-
-    @Override
-    public HttpMethod getHttpMethod() {
-        return HttpMethod.POST;
-    }
-
-    @Override
-    public int getOrder() {
-        return DEFAULT_ORDER;
-    }
-
-
-    public IApplicationKeyInnerServiceSMO getApplicationKeyInnerServiceSMOImpl() {
-        return applicationKeyInnerServiceSMOImpl;
-    }
-
-    public void setApplicationKeyInnerServiceSMOImpl(IApplicationKeyInnerServiceSMO applicationKeyInnerServiceSMOImpl) {
-        this.applicationKeyInnerServiceSMOImpl = applicationKeyInnerServiceSMOImpl;
-    }
-
-    public IFileInnerServiceSMO getFileInnerServiceSMOImpl() {
-        return fileInnerServiceSMOImpl;
-    }
-
-    public void setFileInnerServiceSMOImpl(IFileInnerServiceSMO fileInnerServiceSMOImpl) {
-        this.fileInnerServiceSMOImpl = fileInnerServiceSMOImpl;
-    }
-
-    public IFileRelInnerServiceSMO getFileRelInnerServiceSMOImpl() {
-        return fileRelInnerServiceSMOImpl;
-    }
-
-    public void setFileRelInnerServiceSMOImpl(IFileRelInnerServiceSMO fileRelInnerServiceSMOImpl) {
-        this.fileRelInnerServiceSMOImpl = fileRelInnerServiceSMOImpl;
-    }
-}

+ 1 - 1
service-common/src/main/java/com/java110/common/cmd/applicationKey/ApplyApplicationKeyCmd.java

@@ -172,7 +172,7 @@ public class ApplyApplicationKeyCmd extends Cmd{
 
 
         JSONObject businessUnit = new JSONObject();
-        businessUnit.put("fileRelId", "-1");
+        businessUnit.put("fileRelId", GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_fileRelId));
         businessUnit.put("relTypeCd", "60000");
         businessUnit.put("saveWay", "table");
         businessUnit.put("objId", paramInJson.getString("applicationKeyId"));

+ 46 - 85
service-api/src/main/java/com/java110/api/listener/applicationKey/AuthApplicationKeyListener.java

@@ -1,52 +1,46 @@
-package com.java110.api.listener.applicationKey;
+package com.java110.common.cmd.applicationKey;
 
 import com.alibaba.fastjson.JSONObject;
-import com.java110.api.bmo.applicationKey.IApplicationKeyBMO;
-import com.java110.api.listener.AbstractServiceApiPlusListener;
-import com.java110.core.annotation.Java110Listener;
+import com.java110.core.annotation.Java110Cmd;
 import com.java110.core.context.DataFlowContext;
-import com.java110.intf.community.ICommunityInnerServiceSMO;
-import com.java110.intf.community.IFloorInnerServiceSMO;
-import com.java110.intf.common.IApplicationKeyInnerServiceSMO;
-import com.java110.intf.common.IMachineInnerServiceSMO;
-import com.java110.intf.community.IRoomInnerServiceSMO;
-import com.java110.intf.community.IUnitInnerServiceSMO;
+import com.java110.core.context.ICmdDataFlowContext;
+import com.java110.core.event.cmd.Cmd;
+import com.java110.core.event.cmd.CmdEvent;
+import com.java110.core.factory.GenerateCodeFactory;
 import com.java110.dto.RoomDto;
 import com.java110.dto.community.CommunityDto;
 import com.java110.dto.machine.ApplicationKeyDto;
 import com.java110.dto.machine.MachineDto;
 import com.java110.dto.unit.FloorAndUnitDto;
-import com.java110.core.event.service.api.ServiceDataFlowEvent;
-import com.java110.utils.constant.ServiceCodeApplicationKeyConstant;
+import com.java110.intf.common.IApplicationKeyInnerServiceSMO;
+import com.java110.intf.common.IMachineInnerServiceSMO;
+import com.java110.intf.common.IMachineRecordV1InnerServiceSMO;
+import com.java110.intf.community.ICommunityInnerServiceSMO;
+import com.java110.intf.community.IFloorInnerServiceSMO;
+import com.java110.intf.community.IRoomInnerServiceSMO;
+import com.java110.intf.community.IUnitInnerServiceSMO;
+import com.java110.po.machine.MachineRecordPo;
+import com.java110.utils.constant.BusinessTypeConstant;
+import com.java110.utils.exception.CmdException;
 import com.java110.utils.util.Assert;
 import com.java110.utils.util.BeanConvertUtil;
-import org.slf4j.Logger;
-import com.java110.core.log.LoggerFactory;
+import com.sun.tools.javac.jvm.Gen;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.HttpMethod;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
 
 import java.util.ArrayList;
 import java.util.List;
 
-
-/**
- * 钥匙认证接口
- */
-@Java110Listener("authApplicationKeyListener")
-public class AuthApplicationKeyListener extends AbstractServiceApiPlusListener {
-    private static Logger logger = LoggerFactory.getLogger(AuthApplicationKeyListener.class);
+@Java110Cmd(serviceCode = "applicationKey.authApplicationKeys")
+public class AuthApplicationKeyCmd extends Cmd {
 
     @Autowired
-    private IApplicationKeyBMO applicationKeyBMOImpl;
+    private IMachineInnerServiceSMO machineInnerServiceSMOImpl;
 
     @Autowired
     private IApplicationKeyInnerServiceSMO applicationKeyInnerServiceSMOImpl;
 
-    @Autowired
-    private IMachineInnerServiceSMO machineInnerServiceSMOImpl;
-
     @Autowired
     private ICommunityInnerServiceSMO communityInnerServiceSMOImpl;
 
@@ -60,33 +54,12 @@ public class AuthApplicationKeyListener extends AbstractServiceApiPlusListener {
     @Autowired
     private IRoomInnerServiceSMO roomInnerServiceSMOImpl;
 
-    @Override
-    public String getServiceCode() {
-        return ServiceCodeApplicationKeyConstant.AUTH_APPLICATIONKEYS;
-    }
-
-    @Override
-    public HttpMethod getHttpMethod() {
-        return HttpMethod.POST;
-    }
-
-
-    @Override
-    public int getOrder() {
-        return DEFAULT_ORDER;
-    }
-
-
-    public IApplicationKeyInnerServiceSMO getApplicationKeyInnerServiceSMOImpl() {
-        return applicationKeyInnerServiceSMOImpl;
-    }
+    @Autowired
+    private IMachineRecordV1InnerServiceSMO machineRecordV1InnerServiceSMOImpl;
 
-    public void setApplicationKeyInnerServiceSMOImpl(IApplicationKeyInnerServiceSMO applicationKeyInnerServiceSMOImpl) {
-        this.applicationKeyInnerServiceSMOImpl = applicationKeyInnerServiceSMOImpl;
-    }
 
     @Override
-    protected void validate(ServiceDataFlowEvent event, JSONObject reqJson) {
+    public void validate(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException {
 
         Assert.hasKeyAndValue(reqJson, "communityId", "必填,请填写小区");
         Assert.hasKeyAndValue(reqJson, "machineCode", "必填,请填写设备编码");
@@ -94,9 +67,7 @@ public class AuthApplicationKeyListener extends AbstractServiceApiPlusListener {
     }
 
     @Override
-    protected void doSoService(ServiceDataFlowEvent event, DataFlowContext context, JSONObject reqJson) {
-
-
+    public void doCmd(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException {
         //1.0 根据 小区ID和 设备编码查询设备ID
 
         MachineDto machineDto = new MachineDto();
@@ -127,15 +98,30 @@ public class AuthApplicationKeyListener extends AbstractServiceApiPlusListener {
         }
         context.setResponseEntity(responseEntity);
 
-
-
-        applicationKeyBMOImpl.addMachineRecord(reqParam, context);
-
-
-        //context.setResponseEntity(responseEntity);
+        addMachineRecord(reqParam);
 
     }
 
+    /**
+     * 添加小区信息
+     *
+     * @param paramInJson 接口调用放传入入参
+     * @return 订单服务能够接受的报文
+     */
+    public void addMachineRecord(JSONObject paramInJson) {
+
+        //paramInJson.put("fileTime", DateUtil.getFormatTimeString(new Date(), DateUtil.DATE_FORMATE_STRING_A));
+        paramInJson.put("name", "匿名");
+        paramInJson.put("tel", "");
+        paramInJson.put("idCard", "");
+        paramInJson.put("openTypeCd", "2000");
+        paramInJson.put("machineRecordId", GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_machineRecordId));
+        MachineRecordPo machineRecordPo = BeanConvertUtil.covertBean(paramInJson, MachineRecordPo.class);
+        int flag = machineRecordV1InnerServiceSMOImpl.saveMachineRecord(machineRecordPo);
+        if (flag < 1) {
+            throw new CmdException("保存开门记录失败");
+        }
+    }
 
     private void refreshMachines(List<ApplicationKeyDto> applicationKeyDtos) {
 
@@ -163,7 +149,7 @@ public class AuthApplicationKeyListener extends AbstractServiceApiPlusListener {
 
             if (!"2000".equals(applicationKeyDto.getLocationTypeCd())
                     && !"3000".equals(applicationKeyDto.getLocationTypeCd())
-            ) {
+                    ) {
                 communityIds.add(applicationKeyDto.getLocationObjId());
                 tmpApplicationKeyDtos.add(applicationKeyDto);
             }
@@ -262,29 +248,4 @@ public class AuthApplicationKeyListener extends AbstractServiceApiPlusListener {
             }
         }
     }
-
-
-    public IFloorInnerServiceSMO getFloorInnerServiceSMOImpl() {
-        return floorInnerServiceSMOImpl;
-    }
-
-    public void setFloorInnerServiceSMOImpl(IFloorInnerServiceSMO floorInnerServiceSMOImpl) {
-        this.floorInnerServiceSMOImpl = floorInnerServiceSMOImpl;
-    }
-
-    public IUnitInnerServiceSMO getUnitInnerServiceSMOImpl() {
-        return unitInnerServiceSMOImpl;
-    }
-
-    public void setUnitInnerServiceSMOImpl(IUnitInnerServiceSMO unitInnerServiceSMOImpl) {
-        this.unitInnerServiceSMOImpl = unitInnerServiceSMOImpl;
-    }
-
-    public IRoomInnerServiceSMO getRoomInnerServiceSMOImpl() {
-        return roomInnerServiceSMOImpl;
-    }
-
-    public void setRoomInnerServiceSMOImpl(IRoomInnerServiceSMO roomInnerServiceSMOImpl) {
-        this.roomInnerServiceSMOImpl = roomInnerServiceSMOImpl;
-    }
 }

+ 40 - 0
service-common/src/main/java/com/java110/common/cmd/applicationKey/DeleteApplicationKeyCmd.java

@@ -0,0 +1,40 @@
+package com.java110.common.cmd.applicationKey;
+
+import com.alibaba.fastjson.JSONObject;
+import com.java110.core.annotation.Java110Cmd;
+import com.java110.core.context.ICmdDataFlowContext;
+import com.java110.core.event.cmd.Cmd;
+import com.java110.core.event.cmd.CmdEvent;
+import com.java110.intf.common.IApplicationKeyV1InnerServiceSMO;
+import com.java110.po.applicationKey.ApplicationKeyPo;
+import com.java110.utils.exception.CmdException;
+import com.java110.utils.util.Assert;
+import com.java110.utils.util.BeanConvertUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+
+@Java110Cmd(serviceCode = "applicationKey.deleteApplicationKey")
+public class DeleteApplicationKeyCmd extends Cmd{
+
+    @Autowired
+    private IApplicationKeyV1InnerServiceSMO applicationKeyV1InnerServiceSMOImpl;
+
+    @Override
+    public void validate(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException {
+        //Assert.hasKeyAndValue(reqJson, "xxx", "xxx");
+        Assert.hasKeyAndValue(reqJson, "communityId", "必填,请填写小区");
+
+        Assert.hasKeyAndValue(reqJson, "applicationKeyId", "钥匙申请ID不能为空");
+
+    }
+
+    @Override
+    public void doCmd(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException {
+
+        ApplicationKeyPo applicationKeyPo = BeanConvertUtil.covertBean(reqJson, ApplicationKeyPo.class);
+        int flag = applicationKeyV1InnerServiceSMOImpl.deleteApplicationKey(applicationKeyPo);
+
+        if (flag < 1) {
+            throw new CmdException("保存开门记录失败");
+        }
+    }
+}

+ 16 - 71
service-api/src/main/java/com/java110/api/listener/applicationKey/ListApplicationKeysListener.java

@@ -1,38 +1,33 @@
-package com.java110.api.listener.applicationKey;
+package com.java110.common.cmd.applicationKey;
 
 import com.alibaba.fastjson.JSONObject;
-import com.java110.api.listener.AbstractServiceApiListener;
-import com.java110.core.annotation.Java110Listener;
-import com.java110.core.context.DataFlowContext;
-import com.java110.intf.community.ICommunityInnerServiceSMO;
-import com.java110.intf.community.IFloorInnerServiceSMO;
-import com.java110.intf.common.IApplicationKeyInnerServiceSMO;
-import com.java110.intf.community.IRoomInnerServiceSMO;
-import com.java110.intf.community.IUnitInnerServiceSMO;
+import com.java110.core.annotation.Java110Cmd;
+import com.java110.core.context.ICmdDataFlowContext;
+import com.java110.core.event.cmd.Cmd;
+import com.java110.core.event.cmd.CmdEvent;
 import com.java110.dto.RoomDto;
 import com.java110.dto.community.CommunityDto;
 import com.java110.dto.machine.ApplicationKeyDto;
 import com.java110.dto.unit.FloorAndUnitDto;
-import com.java110.core.event.service.api.ServiceDataFlowEvent;
-import com.java110.utils.constant.ServiceCodeApplicationKeyConstant;
+import com.java110.intf.common.IApplicationKeyInnerServiceSMO;
+import com.java110.intf.community.ICommunityInnerServiceSMO;
+import com.java110.intf.community.IFloorInnerServiceSMO;
+import com.java110.intf.community.IRoomInnerServiceSMO;
+import com.java110.intf.community.IUnitInnerServiceSMO;
+import com.java110.utils.exception.CmdException;
 import com.java110.utils.util.Assert;
 import com.java110.utils.util.BeanConvertUtil;
 import com.java110.vo.api.applicationKey.ApiApplicationKeyDataVo;
 import com.java110.vo.api.applicationKey.ApiApplicationKeyVo;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.HttpMethod;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
 
 import java.util.ArrayList;
 import java.util.List;
 
-
-/**
- * 查询小区侦听类
- */
-@Java110Listener("listApplicationKeysListener")
-public class ListApplicationKeysListener extends AbstractServiceApiListener {
+@Java110Cmd(serviceCode = "applicationKey.listApplicationKeys")
+public class ListApplicationKeysCmd extends Cmd{
 
     @Autowired
     private IApplicationKeyInnerServiceSMO applicationKeyInnerServiceSMOImpl;
@@ -49,41 +44,16 @@ public class ListApplicationKeysListener extends AbstractServiceApiListener {
 
     @Autowired
     private IRoomInnerServiceSMO roomInnerServiceSMOImpl;
-    @Override
-    public String getServiceCode() {
-        return ServiceCodeApplicationKeyConstant.LIST_APPLICATIONKEYS;
-    }
-
-    @Override
-    public HttpMethod getHttpMethod() {
-        return HttpMethod.GET;
-    }
-
 
     @Override
-    public int getOrder() {
-        return DEFAULT_ORDER;
-    }
-
-
-    public IApplicationKeyInnerServiceSMO getApplicationKeyInnerServiceSMOImpl() {
-        return applicationKeyInnerServiceSMOImpl;
-    }
-
-    public void setApplicationKeyInnerServiceSMOImpl(IApplicationKeyInnerServiceSMO applicationKeyInnerServiceSMOImpl) {
-        this.applicationKeyInnerServiceSMOImpl = applicationKeyInnerServiceSMOImpl;
-    }
-
-    @Override
-    protected void validate(ServiceDataFlowEvent event, JSONObject reqJson) {
+    public void validate(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException {
         Assert.hasKeyAndValue(reqJson, "communityId", "必填,请填写小区");
 
         super.validatePageInfo(reqJson);
     }
 
     @Override
-    protected void doSoService(ServiceDataFlowEvent event, DataFlowContext context, JSONObject reqJson) {
-
+    public void doCmd(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException {
         ApplicationKeyDto applicationKeyDto = BeanConvertUtil.covertBean(reqJson, ApplicationKeyDto.class);
 
         int count = applicationKeyInnerServiceSMOImpl.queryApplicationKeysCount(applicationKeyDto);
@@ -138,7 +108,7 @@ public class ListApplicationKeysListener extends AbstractServiceApiListener {
 
             if (!"2000".equals(applicationKeyDto.getLocationTypeCd())
                     && !"3000".equals(applicationKeyDto.getLocationTypeCd())
-            ) {
+                    ) {
                 communityIds.add(applicationKeyDto.getLocationObjId());
                 tmpApplicationKeyDtos.add(applicationKeyDto);
             }
@@ -237,29 +207,4 @@ public class ListApplicationKeysListener extends AbstractServiceApiListener {
             }
         }
     }
-
-
-    public IFloorInnerServiceSMO getFloorInnerServiceSMOImpl() {
-        return floorInnerServiceSMOImpl;
-    }
-
-    public void setFloorInnerServiceSMOImpl(IFloorInnerServiceSMO floorInnerServiceSMOImpl) {
-        this.floorInnerServiceSMOImpl = floorInnerServiceSMOImpl;
-    }
-
-    public IUnitInnerServiceSMO getUnitInnerServiceSMOImpl() {
-        return unitInnerServiceSMOImpl;
-    }
-
-    public void setUnitInnerServiceSMOImpl(IUnitInnerServiceSMO unitInnerServiceSMOImpl) {
-        this.unitInnerServiceSMOImpl = unitInnerServiceSMOImpl;
-    }
-
-    public IRoomInnerServiceSMO getRoomInnerServiceSMOImpl() {
-        return roomInnerServiceSMOImpl;
-    }
-
-    public void setRoomInnerServiceSMOImpl(IRoomInnerServiceSMO roomInnerServiceSMOImpl) {
-        this.roomInnerServiceSMOImpl = roomInnerServiceSMOImpl;
-    }
 }

+ 158 - 0
service-common/src/main/java/com/java110/common/cmd/applicationKey/SaveApplicationKeyCmd.java

@@ -0,0 +1,158 @@
+package com.java110.common.cmd.applicationKey;
+
+import com.alibaba.fastjson.JSONObject;
+import com.java110.core.annotation.Java110Cmd;
+import com.java110.core.context.ICmdDataFlowContext;
+import com.java110.core.event.cmd.Cmd;
+import com.java110.core.event.cmd.CmdEvent;
+import com.java110.core.factory.GenerateCodeFactory;
+import com.java110.dto.file.FileDto;
+import com.java110.dto.machine.MachineDto;
+import com.java110.intf.common.IApplicationKeyV1InnerServiceSMO;
+import com.java110.intf.common.IFileInnerServiceSMO;
+import com.java110.intf.common.IFileRelInnerServiceSMO;
+import com.java110.intf.common.IMachineInnerServiceSMO;
+import com.java110.po.applicationKey.ApplicationKeyPo;
+import com.java110.po.file.FileRelPo;
+import com.java110.utils.exception.CmdException;
+import com.java110.utils.util.Assert;
+import com.java110.utils.util.BeanConvertUtil;
+import com.java110.utils.util.DateUtil;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import java.util.Calendar;
+import java.util.List;
+import java.util.Random;
+
+@Java110Cmd(serviceCode = "applicationKey.saveApplicationKey")
+public class SaveApplicationKeyCmd extends Cmd{
+
+
+    @Autowired
+    private IFileInnerServiceSMO fileInnerServiceSMOImpl;
+
+    @Autowired
+    private IMachineInnerServiceSMO machineInnerServiceSMOImpl;
+
+    @Autowired
+    private IApplicationKeyV1InnerServiceSMO applicationKeyV1InnerServiceSMOImpl;
+
+    @Autowired
+    private IFileRelInnerServiceSMO fileRelInnerServiceSMOImpl;
+
+
+    @Override
+    public void validate(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException {
+
+        Assert.hasKeyAndValue(reqJson, "name", "必填,请填写姓名");
+        Assert.hasKeyAndValue(reqJson, "communityId", "必填,请填写小区");
+        Assert.hasKeyAndValue(reqJson, "tel", "必填,请填写手机号");
+        Assert.hasKeyAndValue(reqJson, "typeCd", "必填,请选择用户类型");
+        Assert.hasKeyAndValue(reqJson, "sex", "必填,请选择性别");
+        Assert.hasKeyAndValue(reqJson, "age", "必填,请填写年龄");
+        Assert.hasKeyAndValue(reqJson, "idCard", "必填,请填写身份证号");
+        Assert.hasKeyAndValue(reqJson, "startTime", "必填,请选择开始时间");
+        Assert.hasKeyAndValue(reqJson, "endTime", "必填,请选择结束时间");
+        Assert.hasKeyAndValue(reqJson, "locationTypeCd", "必填,位置不能为空");
+        Assert.hasKeyAndValue(reqJson, "locationObjId", "必填,未选择位置对象");
+        Assert.hasKeyAndValue(reqJson, "storeId", "必填,请填写商户ID");
+        Assert.hasKeyAndValue(reqJson, "typeFlag", "必填,请选择钥匙类型");
+    }
+
+    @Override
+    public void doCmd(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException {
+
+
+        //添加单元信息
+        addApplicationKey(reqJson);
+
+        // addMsg(reqJson, context);
+
+        if (reqJson.containsKey("photo") && !StringUtils.isEmpty(reqJson.getString("photo"))) {
+            FileDto fileDto = new FileDto();
+            fileDto.setFileId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_file_id));
+            fileDto.setFileName(fileDto.getFileId());
+            fileDto.setContext(reqJson.getString("photo"));
+            fileDto.setSuffix("jpeg");
+            fileDto.setCommunityId(reqJson.getString("communityId"));
+            String fileName = fileInnerServiceSMOImpl.saveFile(fileDto);
+
+            reqJson.put("applicationKeyPhotoId", fileDto.getFileId());
+            reqJson.put("fileSaveName", fileName);
+
+            addOwnerPhoto(reqJson);
+
+        }
+    }
+
+    /**
+     * 添加物业费用
+     *
+     * @param paramInJson     接口调用放传入入参
+     * @return 订单服务能够接受的报文
+     */
+    public void addOwnerPhoto(JSONObject paramInJson) {
+        FileRelPo fileRelPo = new FileRelPo();
+        fileRelPo.setFileRelId( GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_fileRelId));
+        fileRelPo.setRelTypeCd("30000");
+        fileRelPo.setSaveWay("table");
+        fileRelPo.setObjId(paramInJson.getString("applicationKeyId"));
+        fileRelPo.setFileRealName(paramInJson.getString("applicationKeyPhotoId"));
+        fileRelPo.setFileSaveName(paramInJson.getString("fileSaveName"));
+        int flag = fileRelInnerServiceSMOImpl.saveFileRel(fileRelPo);
+
+        if(flag < 1){
+            throw new CmdException("申请钥匙失败");
+        }
+    }
+
+    /**
+     * 添加小区信息
+     *
+     * @param paramInJson     接口调用放传入入参
+     * @return 订单服务能够接受的报文
+     */
+    public void addApplicationKey(JSONObject paramInJson) {
+
+        String applicationKeyId = GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_applicationKeyId);
+        paramInJson.put("applicationKeyId", applicationKeyId);
+        //根据位置id 和 位置对象查询相应 设备ID
+        if (!paramInJson.containsKey("machineId")) {
+            MachineDto machineDto = new MachineDto();
+            machineDto.setLocationObjId(paramInJson.getString("locationObjId"));
+            machineDto.setLocationTypeCd(paramInJson.getString("locationTypeCd"));
+            List<MachineDto> machineDtos = machineInnerServiceSMOImpl.queryMachines(machineDto);
+            Assert.listOnlyOne(machineDtos, "该位置还没有相应的门禁设备");
+            paramInJson.put("machineId", machineDtos.get(0).getMachineId());
+        }
+
+        ApplicationKeyPo applicationKeyPo = BeanConvertUtil.covertBean(paramInJson, ApplicationKeyPo.class);
+        applicationKeyPo.setApplicationKeyId(applicationKeyId);
+        applicationKeyPo.setState("10002");
+        applicationKeyPo.setPwd(this.getRandom());
+        if ("1100103".equals(paramInJson.getString("typeFlag"))) { // 临时访问密码,只设置成24小时
+            Calendar calendar = Calendar.getInstance();
+            calendar.add(Calendar.HOUR, 24);
+            applicationKeyPo.setEndTime(DateUtil.getFormatTimeString(calendar.getTime(), DateUtil.DATE_FORMATE_STRING_A));
+        }
+        int flag = applicationKeyV1InnerServiceSMOImpl.saveApplicationKey(applicationKeyPo);
+        if (flag < 1) {
+            throw new CmdException("保存开门记录失败");
+        }
+    }
+
+    /**
+     * 获取随机数
+     *
+     * @return
+     */
+    private String getRandom() {
+        Random random = new Random();
+        String result = "";
+        for (int i = 0; i < 6; i++) {
+            result += (random.nextInt(9) + 1);;
+        }
+        return result;
+    }
+}

+ 159 - 0
service-common/src/main/java/com/java110/common/cmd/applicationKey/UpdateApplicationKeyCmd.java

@@ -0,0 +1,159 @@
+package com.java110.common.cmd.applicationKey;
+
+import com.alibaba.fastjson.JSONObject;
+import com.java110.core.annotation.Java110Cmd;
+import com.java110.core.context.DataFlowContext;
+import com.java110.core.context.ICmdDataFlowContext;
+import com.java110.core.event.cmd.Cmd;
+import com.java110.core.event.cmd.CmdEvent;
+import com.java110.core.factory.GenerateCodeFactory;
+import com.java110.dto.file.FileDto;
+import com.java110.dto.file.FileRelDto;
+import com.java110.dto.machine.ApplicationKeyDto;
+import com.java110.dto.machine.MachineDto;
+import com.java110.intf.common.*;
+import com.java110.po.applicationKey.ApplicationKeyPo;
+import com.java110.po.file.FileRelPo;
+import com.java110.utils.constant.BusinessTypeConstant;
+import com.java110.utils.exception.CmdException;
+import com.java110.utils.util.Assert;
+import com.java110.utils.util.BeanConvertUtil;
+import com.java110.utils.util.StringUtil;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import java.util.List;
+
+@Java110Cmd(serviceCode = "applicationKey.updateApplicationKey")
+public class UpdateApplicationKeyCmd extends Cmd{
+
+
+    @Autowired
+    private IApplicationKeyInnerServiceSMO applicationKeyInnerServiceSMOImpl;
+
+    @Autowired
+    private IFileInnerServiceSMO fileInnerServiceSMOImpl;
+
+    @Autowired
+    private IFileRelInnerServiceSMO fileRelInnerServiceSMOImpl;
+
+
+    @Autowired
+    private IMachineInnerServiceSMO machineInnerServiceSMOImpl;
+
+    @Autowired
+    private IApplicationKeyV1InnerServiceSMO applicationKeyV1InnerServiceSMOImpl;
+
+
+    @Override
+    public void validate(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException {
+        Assert.hasKeyAndValue(reqJson, "applicationKeyId", "钥匙申请ID不能为空");
+        Assert.hasKeyAndValue(reqJson, "communityId", "必填,请填写小区");
+        Assert.hasKeyAndValue(reqJson, "name", "必填,请填写姓名");
+        Assert.hasKeyAndValue(reqJson, "tel", "必填,请填写手机号");
+        Assert.hasKeyAndValue(reqJson, "typeCd", "必填,请选择用户类型");
+        Assert.hasKeyAndValue(reqJson, "sex", "必填,请选择性别");
+        Assert.hasKeyAndValue(reqJson, "age", "必填,请填写年龄");
+        Assert.hasKeyAndValue(reqJson, "idCard", "必填,请填写身份证号");
+        Assert.hasKeyAndValue(reqJson, "startTime", "必填,请选择开始时间");
+        Assert.hasKeyAndValue(reqJson, "endTime", "必填,请选择结束时间");
+        Assert.hasKeyAndValue(reqJson, "locationTypeCd", "必填,位置不能为空");
+        Assert.hasKeyAndValue(reqJson, "locationObjId", "必填,未选择位置对象");
+        Assert.hasKeyAndValue(reqJson, "typeFlag", "必填,未选择钥匙类型");
+    }
+
+    @Override
+    public void doCmd(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException {
+
+        //添加钥匙信息
+        updateApplicationKey(reqJson);
+
+        if (reqJson.containsKey("photo") && !StringUtils.isEmpty(reqJson.getString("photo"))) {
+            FileDto fileDto = new FileDto();
+            fileDto.setFileId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_file_id));
+            fileDto.setFileName(fileDto.getFileId());
+            fileDto.setContext(reqJson.getString("photo"));
+            fileDto.setSuffix("jpeg");
+            fileDto.setCommunityId(reqJson.getString("communityId"));
+            String fileName = fileInnerServiceSMOImpl.saveFile(fileDto);
+            reqJson.put("applicationKeyPhotoId", fileDto.getFileId());
+            reqJson.put("fileSaveName", fileName);
+
+            editApplicationKeyPhoto(reqJson);
+
+        }
+    }
+
+    /**
+     * 添加物业费用
+     *
+     * @param paramInJson     接口调用放传入入参
+     * @return 订单服务能够接受的报文
+     */
+    public void editApplicationKeyPhoto(JSONObject paramInJson) {
+
+        FileRelDto fileRelDto = new FileRelDto();
+        fileRelDto.setRelTypeCd("30000");
+        fileRelDto.setObjId(paramInJson.getString("applicationKeyId"));
+        List<FileRelDto> fileRelDtos = fileRelInnerServiceSMOImpl.queryFileRels(fileRelDto);
+        if (fileRelDtos == null || fileRelDtos.size() == 0) {
+            FileRelPo fileRelPo = new FileRelPo();
+            fileRelPo.setFileRelId( GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_fileRelId));
+            fileRelPo.setRelTypeCd("3000");
+            fileRelPo.setSaveWay("table");
+            fileRelPo.setObjId(paramInJson.getString("applicationKeyId"));
+            fileRelPo.setFileSaveName(paramInJson.getString("fileSaveName"));
+            fileRelPo.setFileRealName(paramInJson.getString("applicationKeyPhotoId"));
+            int flag = fileRelInnerServiceSMOImpl.saveFileRel(fileRelPo);
+            if (flag < 1) {
+                throw new CmdException("保存开门记录失败");
+            }
+            return;
+        }
+
+        FileRelPo fileRelPo = BeanConvertUtil.covertBean(fileRelDtos.get(0), FileRelPo.class);
+        fileRelPo.setFileRealName(paramInJson.getString("fileSaveName"));
+        fileRelPo.setFileSaveName(paramInJson.getString("applicationKeyPhotoId"));
+        int flag = fileRelInnerServiceSMOImpl.updateFileRel(fileRelPo);
+        if (flag < 1) {
+            throw new CmdException("保存开门记录失败");
+        }
+    }
+
+
+    /**
+     * 添加钥匙申请信息
+     *
+     * @param paramInJson     接口调用放传入入参
+     * @return 订单服务能够接受的报文
+     */
+    public void updateApplicationKey(JSONObject paramInJson) {
+        //根据位置id 和 位置对象查询相应 设备ID
+        MachineDto machineDto = new MachineDto();
+        machineDto.setLocationObjId(paramInJson.getString("locationObjId"));
+        machineDto.setLocationTypeCd(paramInJson.getString("locationTypeCd"));
+        List<MachineDto> machineDtos = machineInnerServiceSMOImpl.queryMachines(machineDto);
+        Assert.listOnlyOne(machineDtos, "该位置还没有相应的门禁设备");
+        ApplicationKeyDto applicationKeyDto = new ApplicationKeyDto();
+        applicationKeyDto.setApplicationKeyId(paramInJson.getString("applicationKeyId"));
+        applicationKeyDto.setCommunityId(paramInJson.getString("communityId"));
+        List<ApplicationKeyDto> applicationKeyDtos = applicationKeyInnerServiceSMOImpl.queryApplicationKeys(applicationKeyDto);
+        Assert.listOnlyOne(applicationKeyDtos, "未找到申请记录或找到多条记录");
+
+        ApplicationKeyPo applicationKeyPo = BeanConvertUtil.covertBean(paramInJson, ApplicationKeyPo.class);
+        applicationKeyPo.setMachineId(machineDtos.get(0).getMachineId());
+        applicationKeyPo.setState(applicationKeyDtos.get(0).getState());
+        if (!paramInJson.containsKey("pwd") || StringUtil.isEmpty(paramInJson.getString("pwd"))) {
+            applicationKeyPo.setPwd(applicationKeyDtos.get(0).getPwd());
+        }
+        if ("1100103".equals(paramInJson.getString("typeFlag"))) { // 临时访问密码,只设置成24小时
+            applicationKeyPo.setEndTime(applicationKeyDtos.get(0).getEndTime());
+        }
+        applicationKeyPo.setTypeFlag(applicationKeyDtos.get(0).getTypeFlag());
+
+        int flag = applicationKeyV1InnerServiceSMOImpl.updateApplicationKey(applicationKeyPo);
+        if (flag < 1) {
+            throw new CmdException("保存开门记录失败");
+        }
+    }
+}

+ 77 - 0
service-common/src/main/java/com/java110/common/dao/IMachineRecordV1ServiceDao.java

@@ -0,0 +1,77 @@
+/*
+ * Copyright 2017-2020 吴学文 and java110 team.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.java110.common.dao;
+
+
+import com.java110.utils.exception.DAOException;
+import com.java110.entity.merchant.BoMerchant;
+import com.java110.entity.merchant.BoMerchantAttr;
+import com.java110.entity.merchant.Merchant;
+import com.java110.entity.merchant.MerchantAttr;
+
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 类表述:
+ * add by 吴学文 at 2022-07-15 23:44:39 mail: 928255095@qq.com
+ * open source address: https://gitee.com/wuxw7/MicroCommunity
+ * 官网:http://www.homecommunity.cn
+ * 温馨提示:如果您对此文件进行修改 请不要删除原有作者及注释信息,请补充您的 修改的原因以及联系邮箱如下
+ * // modify by 张三 at 2021-09-12 第10行在某种场景下存在某种bug 需要修复,注释10至20行 加入 20行至30行
+ */
+public interface IMachineRecordV1ServiceDao {
+
+
+    /**
+     * 保存 开门记录信息
+     * @param info
+     * @throws DAOException DAO异常
+     */
+    int saveMachineRecordInfo(Map info) throws DAOException;
+
+
+
+
+    /**
+     * 查询开门记录信息(instance过程)
+     * 根据bId 查询开门记录信息
+     * @param info bId 信息
+     * @return 开门记录信息
+     * @throws DAOException DAO异常
+     */
+    List<Map> getMachineRecordInfo(Map info) throws DAOException;
+
+
+
+    /**
+     * 修改开门记录信息
+     * @param info 修改信息
+     * @throws DAOException DAO异常
+     */
+    int updateMachineRecordInfo(Map info) throws DAOException;
+
+
+    /**
+     * 查询开门记录总数
+     *
+     * @param info 开门记录信息
+     * @return 开门记录数量
+     */
+    int queryMachineRecordsCount(Map info);
+
+}

+ 112 - 0
service-common/src/main/java/com/java110/common/dao/impl/MachineRecordV1ServiceDaoImpl.java

@@ -0,0 +1,112 @@
+/*
+ * Copyright 2017-2020 吴学文 and java110 team.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.java110.common.dao.impl;
+
+import com.alibaba.fastjson.JSONObject;
+import com.java110.utils.constant.ResponseConstant;
+import com.java110.utils.exception.DAOException;
+import com.java110.utils.util.DateUtil;
+import com.java110.core.base.dao.BaseServiceDao;
+import com.java110.common.dao.IMachineRecordV1ServiceDao;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 类表述:
+ * add by 吴学文 at 2022-07-15 23:44:39 mail: 928255095@qq.com
+ * open source address: https://gitee.com/wuxw7/MicroCommunity
+ * 官网:http://www.homecommunity.cn
+ * 温馨提示:如果您对此文件进行修改 请不要删除原有作者及注释信息,请补充您的 修改的原因以及联系邮箱如下
+ * // modify by 张三 at 2021-09-12 第10行在某种场景下存在某种bug 需要修复,注释10至20行 加入 20行至30行
+ */
+@Service("machineRecordV1ServiceDaoImpl")
+public class MachineRecordV1ServiceDaoImpl extends BaseServiceDao implements IMachineRecordV1ServiceDao {
+
+    private static Logger logger = LoggerFactory.getLogger(MachineRecordV1ServiceDaoImpl.class);
+
+
+
+
+
+    /**
+     * 保存开门记录信息 到 instance
+     * @param info   bId 信息
+     * @throws DAOException DAO异常
+     */
+    @Override
+    public int saveMachineRecordInfo(Map info) throws DAOException {
+        logger.debug("保存 saveMachineRecordInfo 入参 info : {}",info);
+
+        int saveFlag = sqlSessionTemplate.insert("machineRecordV1ServiceDaoImpl.saveMachineRecordInfo",info);
+
+        return saveFlag;
+    }
+
+
+    /**
+     * 查询开门记录信息(instance)
+     * @param info bId 信息
+     * @return List<Map>
+     * @throws DAOException DAO异常
+     */
+    @Override
+    public List<Map> getMachineRecordInfo(Map info) throws DAOException {
+        logger.debug("查询 getMachineRecordInfo 入参 info : {}",info);
+
+        List<Map> businessMachineRecordInfos = sqlSessionTemplate.selectList("machineRecordV1ServiceDaoImpl.getMachineRecordInfo",info);
+
+        return businessMachineRecordInfos;
+    }
+
+
+    /**
+     * 修改开门记录信息
+     * @param info 修改信息
+     * @throws DAOException DAO异常
+     */
+    @Override
+    public int updateMachineRecordInfo(Map info) throws DAOException {
+        logger.debug("修改 updateMachineRecordInfo 入参 info : {}",info);
+
+        int saveFlag = sqlSessionTemplate.update("machineRecordV1ServiceDaoImpl.updateMachineRecordInfo",info);
+
+        return saveFlag;
+    }
+
+     /**
+     * 查询开门记录数量
+     * @param info 开门记录信息
+     * @return 开门记录数量
+     */
+    @Override
+    public int queryMachineRecordsCount(Map info) {
+        logger.debug("查询 queryMachineRecordsCount 入参 info : {}",info);
+
+        List<Map> businessMachineRecordInfos = sqlSessionTemplate.selectList("machineRecordV1ServiceDaoImpl.queryMachineRecordsCount", info);
+        if (businessMachineRecordInfos.size() < 1) {
+            return 0;
+        }
+
+        return Integer.parseInt(businessMachineRecordInfos.get(0).get("count").toString());
+    }
+
+
+}

+ 89 - 0
service-common/src/main/java/com/java110/common/smo/impl/MachineRecordV1InnerServiceSMOImpl.java

@@ -0,0 +1,89 @@
+/*
+ * Copyright 2017-2020 吴学文 and java110 team.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.java110.common.smo.impl;
+
+
+import com.java110.common.dao.IMachineRecordV1ServiceDao;
+import com.java110.dto.machine.MachineRecordDto;
+import com.java110.intf.common.IMachineRecordV1InnerServiceSMO;
+import com.java110.po.machine.MachineRecordPo;
+import com.java110.utils.util.BeanConvertUtil;
+import com.java110.core.base.smo.BaseServiceSMO;
+import com.java110.dto.user.UserDto;
+import com.java110.dto.PageDto;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 类表述: 服务之前调用的接口实现类,不对外提供接口能力 只用于接口建调用
+ * add by 吴学文 at 2022-07-15 23:44:39 mail: 928255095@qq.com
+ * open source address: https://gitee.com/wuxw7/MicroCommunity
+ * 官网:http://www.homecommunity.cn
+ * 温馨提示:如果您对此文件进行修改 请不要删除原有作者及注释信息,请补充您的 修改的原因以及联系邮箱如下
+ * // modify by 张三 at 2021-09-12 第10行在某种场景下存在某种bug 需要修复,注释10至20行 加入 20行至30行
+ */
+@RestController
+public class MachineRecordV1InnerServiceSMOImpl extends BaseServiceSMO implements IMachineRecordV1InnerServiceSMO {
+
+    @Autowired
+    private IMachineRecordV1ServiceDao machineRecordV1ServiceDaoImpl;
+
+
+    @Override
+    public int saveMachineRecord(@RequestBody MachineRecordPo machineRecordPo) {
+        int saveFlag = machineRecordV1ServiceDaoImpl.saveMachineRecordInfo(BeanConvertUtil.beanCovertMap(machineRecordPo));
+        return saveFlag;
+    }
+
+     @Override
+    public int updateMachineRecord(@RequestBody  MachineRecordPo machineRecordPo) {
+        int saveFlag = machineRecordV1ServiceDaoImpl.updateMachineRecordInfo(BeanConvertUtil.beanCovertMap(machineRecordPo));
+        return saveFlag;
+    }
+
+     @Override
+    public int deleteMachineRecord(@RequestBody  MachineRecordPo machineRecordPo) {
+       machineRecordPo.setStatusCd("1");
+       int saveFlag = machineRecordV1ServiceDaoImpl.updateMachineRecordInfo(BeanConvertUtil.beanCovertMap(machineRecordPo));
+       return saveFlag;
+    }
+
+    @Override
+    public List<MachineRecordDto> queryMachineRecords(@RequestBody  MachineRecordDto machineRecordDto) {
+
+        //校验是否传了 分页信息
+
+        int page = machineRecordDto.getPage();
+
+        if (page != PageDto.DEFAULT_PAGE) {
+            machineRecordDto.setPage((page - 1) * machineRecordDto.getRow());
+        }
+
+        List<MachineRecordDto> machineRecords = BeanConvertUtil.covertBeanList(machineRecordV1ServiceDaoImpl.getMachineRecordInfo(BeanConvertUtil.beanCovertMap(machineRecordDto)), MachineRecordDto.class);
+
+        return machineRecords;
+    }
+
+
+    @Override
+    public int queryMachineRecordsCount(@RequestBody MachineRecordDto machineRecordDto) {
+        return machineRecordV1ServiceDaoImpl.queryMachineRecordsCount(BeanConvertUtil.beanCovertMap(machineRecordDto));    }
+
+}