ソースを参照

优化子母车位

Your Name 3 年 前
コミット
7e0e909478

+ 13 - 0
java110-bean/src/main/java/com/java110/dto/parking/ParkingSpaceDto.java

@@ -17,13 +17,18 @@ public class ParkingSpaceDto extends PageDto implements Serializable {
 
     public static final String STATE_FREE = "F";
     public static final String STATE_HIRE = "H";
+    public static final String STATE_SELL = "S";
+
+    public static final String NUM_MOTHER = "母";
 
     public static final String TYPE_CD_COMMON = "1";
+    public static final String TYPE_CD_SON_MOTHER = "2";
 
     private String area;
     private String typeCd;
     private String typeCdName;
     private String num;
+    private String[] nums;
     private String psId;
     private String paId;
     private String remark;
@@ -253,4 +258,12 @@ public class ParkingSpaceDto extends PageDto implements Serializable {
     public void setPaIds(String[] paIds) {
         this.paIds = paIds;
     }
+
+    public String[] getNums() {
+        return nums;
+    }
+
+    public void setNums(String[] nums) {
+        this.nums = nums;
+    }
 }

+ 12 - 0
java110-db/src/main/resources/mapper/community/ParkingSpaceV1ServiceDaoImplMapper.xml

@@ -30,6 +30,12 @@
         <if test="num !=null and num != ''">
             and t.num= #{num}
         </if>
+        <if test="nums !=null">
+            and t.num in
+            <foreach collection="nums" item="item" open="(" close=")" separator=",">
+                #{item}
+            </foreach>
+        </if>
         <if test="paId !=null and paId != ''">
             and t.pa_id= #{paId}
         </if>
@@ -104,6 +110,12 @@
         <if test="num !=null and num != ''">
             and t.num= #{num}
         </if>
+        <if test="nums !=null">
+            and t.num in
+            <foreach collection="nums" item="item" open="(" close=")" separator=",">
+                #{item}
+            </foreach>
+        </if>
         <if test="paId !=null and paId != ''">
             and t.pa_id= #{paId}
         </if>

+ 55 - 7
service-community/src/main/java/com/java110/community/cmd/parkingSpace/DeleteParkingSpaceCmd.java

@@ -6,6 +6,7 @@ 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.dto.parking.ParkingSpaceDto;
 import com.java110.intf.community.ICommunityInnerServiceSMO;
 import com.java110.intf.community.IParkingSpaceV1InnerServiceSMO;
 import com.java110.po.parking.ParkingSpacePo;
@@ -16,6 +17,8 @@ import com.java110.utils.util.StringUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 
 import java.text.ParseException;
+import java.util.ArrayList;
+import java.util.List;
 
 @Java110Cmd(serviceCode = "parkingSpace.deleteParkingSpace")
 public class DeleteParkingSpaceCmd extends Cmd {
@@ -32,19 +35,64 @@ public class DeleteParkingSpaceCmd extends Cmd {
 
         Assert.jsonObjectHaveKey(reqJson, "psId", "请求报文中未包含psId");
         Assert.jsonObjectHaveKey(reqJson, "communityId", "请求报文中未包含communityId");
+
+        if(!ParkingSpaceDto.STATE_FREE.equals(reqJson.getString("state"))){
+            throw new CmdException("车位不是空闲,不能做删除");
+        }
+
+        ParkingSpaceDto parkingSpaceDto = new ParkingSpaceDto();
+        parkingSpaceDto.setPsId(reqJson.getString("psId"));
+        parkingSpaceDto.setTypeCd(ParkingSpaceDto.TYPE_CD_SON_MOTHER);
+        parkingSpaceDto.setCommunityId(reqJson.getString("communityId"));
+        List<ParkingSpaceDto> parkingSpaceDtos = parkingSpaceV1InnerServiceSMOImpl.queryParkingSpaces(parkingSpaceDto);
+
+        //不是子母车位
+        if(parkingSpaceDtos == null || parkingSpaceDtos.size() < 1){
+            return ;
+        }
+
+        List<String> nums = new ArrayList<>();
+        nums.add(parkingSpaceDtos.get(0).getNum());
+        if(parkingSpaceDtos.get(0).getNum().endsWith(ParkingSpaceDto.NUM_MOTHER)){
+            nums.add(parkingSpaceDtos.get(0).getNum().replace(ParkingSpaceDto.NUM_MOTHER,""));
+        }else{
+            nums.add(parkingSpaceDtos.get(0).getNum()+ParkingSpaceDto.NUM_MOTHER);
+        }
+
+        parkingSpaceDto = new ParkingSpaceDto();
+        parkingSpaceDto.setNums(nums.toArray(new String[nums.size()]));
+        parkingSpaceDto.setCommunityId(reqJson.getString("communityId"));
+        parkingSpaceDto.setStates(new String[]{ParkingSpaceDto.STATE_HIRE,ParkingSpaceDto.STATE_SELL});
+        int flag = parkingSpaceV1InnerServiceSMOImpl.queryParkingSpacesCount(parkingSpaceDto);
+
+        if(flag > 0){
+            throw new CmdException("子母车位非空闲");
+        }
+
+        reqJson.put("sonMotherNums",nums);
     }
 
     @Override
     public void doCmd(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException, ParseException {
 
-        if (reqJson.containsKey("state") && !StringUtil.isEmpty("state") && reqJson.getString("state").equals("F")) {
+
+        //非 子母车位
+        if(!reqJson.containsKey("sonMotherNums")){
+            deleteParkingSpace(reqJson);
+            return ;
+        }
+        List<String> nums =  reqJson.getObject("sonMotherNums",List.class);
+
+        ParkingSpaceDto parkingSpaceDto = new ParkingSpaceDto();
+        parkingSpaceDto.setNums(nums.toArray(new String[nums.size()]));
+        parkingSpaceDto.setCommunityId(reqJson.getString("communityId"));
+        List<ParkingSpaceDto> parkingSpaceDtos = parkingSpaceV1InnerServiceSMOImpl.queryParkingSpaces(parkingSpaceDto);
+
+        JSONObject paramIn = null;
+        for(ParkingSpaceDto tmpParkingSpaceDto: parkingSpaceDtos){
+            paramIn = new JSONObject();
+            paramIn.put("psId",tmpParkingSpaceDto.getPsId());
             deleteParkingSpace(reqJson);
-        } else if (reqJson.containsKey("state") && !StringUtil.isEmpty("state") && reqJson.getString("state").equals("S")) {
-            throw new IllegalArgumentException("车位已出售,不能删除!");
-        } else if (reqJson.containsKey("state") && !StringUtil.isEmpty("state") && reqJson.getString("state").equals("H")) {
-            throw new IllegalArgumentException("车位已出租,不能删除!");
-        } else {
-            throw new IllegalArgumentException("未知车位!");
         }
     }
 

+ 30 - 2
service-community/src/main/java/com/java110/community/cmd/parkingSpace/EditParkingSpaceCmd.java

@@ -44,6 +44,31 @@ public class EditParkingSpaceCmd extends Cmd {
         if (reqJson.getString("psId").startsWith("-")) {
             throw new ListenerExecuteException(ResponseConstant.RESULT_CODE_ERROR, "停车位ID必须为已有ID");
         }
+
+        ParkingSpaceDto parkingSpaceDto = new ParkingSpaceDto();
+        parkingSpaceDto.setCommunityId(reqJson.getString("communityId"));
+        parkingSpaceDto.setPsId(reqJson.getString("psId"));
+        List<ParkingSpaceDto> parkingSpaceDtos = parkingSpaceInnerServiceSMOImpl.queryParkingSpaces(parkingSpaceDto);
+
+        if (parkingSpaceDtos == null || parkingSpaceDtos.size() != 1) {
+            throw new ListenerExecuteException(ResponseConstant.RESULT_CODE_ERROR, "未查询到停车位信息" + JSONObject.toJSONString(parkingSpaceDto));
+        }
+
+        //不修改 车位类型
+        if (!reqJson.containsKey("parkingType")) {
+            return;
+        }
+
+        // 不修改 车位类型
+        if (parkingSpaceDtos.get(0).getParkingType().equals(reqJson.getString("parkingType"))) {
+            return;
+        }
+
+        if (ParkingSpaceDto.TYPE_CD_SON_MOTHER.equals(reqJson.getString("parkingType"))
+                || ParkingSpaceDto.TYPE_CD_SON_MOTHER.equals(parkingSpaceDtos.get(0).getParkingType())
+        ) {
+            throw  new CmdException("子母车位不能修改为其他车位,其他车位也不能修改为子母车位!");
+        }
     }
 
     @Override
@@ -59,16 +84,19 @@ public class EditParkingSpaceCmd extends Cmd {
         }
 
         parkingSpaceDto = parkingSpaceDtos.get(0);
+
         JSONObject businessParkingSpace = new JSONObject();
 
         businessParkingSpace.putAll(reqJson);
         businessParkingSpace.put("state", parkingSpaceDto.getState());
         ParkingSpacePo parkingSpacePo = BeanConvertUtil.covertBean(businessParkingSpace, ParkingSpacePo.class);
         //parkingSpaceInnerServiceSMOImpl.updateParkingSpace(parkingSpacePo);
-        int flag =  parkingSpaceV1InnerServiceSMOImpl.updateParkingSpace(parkingSpacePo);
+        int flag = parkingSpaceV1InnerServiceSMOImpl.updateParkingSpace(parkingSpacePo);
 
-        if(flag < 1){
+        if (flag < 1) {
             throw new CmdException("修改车位失败");
         }
+
     }
+
 }

+ 14 - 0
service-community/src/main/java/com/java110/community/cmd/parkingSpace/SaveParkingSpaceCmd.java

@@ -6,6 +6,7 @@ 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.parking.ParkingSpaceDto;
 import com.java110.intf.community.IParkingSpaceV1InnerServiceSMO;
 import com.java110.po.parking.ParkingSpacePo;
 import com.java110.utils.exception.CmdException;
@@ -46,5 +47,18 @@ public class SaveParkingSpaceCmd extends Cmd {
         if (flag < 1) {
             throw new CmdException("保存数据失败");
         }
+
+        if(!ParkingSpaceDto.TYPE_CD_SON_MOTHER.equals(parkingSpacePo.getParkingType())){
+            return ;
+        }
+
+        //如果是子母车位 创建子车位
+        parkingSpacePo.setPsId(GenerateCodeFactory.getPsId(GenerateCodeFactory.CODE_PREFIX_psId));
+        parkingSpacePo.setNum(parkingSpacePo.getNum()+ParkingSpaceDto.NUM_MOTHER);
+        flag = parkingSpaceV1InnerServiceSMOImpl.saveParkingSpace(parkingSpacePo);
+        if (flag < 1) {
+            throw new CmdException("保存数据失败");
+        }
+
     }
 }