Browse Source

价格管理

FEI 3 weeks ago
parent
commit
84ff2f2956

+ 2
- 1
sto/src/main/java/com/shinsoft/sto/mapper/main/CargoMapper.xml View File

27
         <result column="customer_id" property="customerId" jdbcType="VARCHAR"/>
27
         <result column="customer_id" property="customerId" jdbcType="VARCHAR"/>
28
         <result column="sum_weight" property="sumWeight" jdbcType="NUMERIC"/>
28
         <result column="sum_weight" property="sumWeight" jdbcType="NUMERIC"/>
29
         <result column="use_weight" property="useWeight" jdbcType="NUMERIC"/>
29
         <result column="use_weight" property="useWeight" jdbcType="NUMERIC"/>
30
+        <result column="enable_status" property="enableStatus" jdbcType="VARCHAR"/>
30
 
31
 
31
         <!-- 关联上游客户信息 -->
32
         <!-- 关联上游客户信息 -->
32
         <association property="uperCustomer" javaType="com.shinsoft.sto.model.main.Customer">
33
         <association property="uperCustomer" javaType="com.shinsoft.sto.model.main.Customer">
47
         c.id, c.process_instance_id, c.process_instance_status, c.add_id, c.add_code, c.add_name,
48
         c.id, c.process_instance_id, c.process_instance_status, c.add_id, c.add_code, c.add_name,
48
         c.add_dept_id, c.add_dept_code, c.add_dept_name, c.add_time, c.modify_id, c.modify_code, c.modify_name,
49
         c.add_dept_id, c.add_dept_code, c.add_dept_name, c.add_time, c.modify_id, c.modify_code, c.modify_name,
49
         c.modify_time, c.cancel_id, c.cancel_code, c.cancel_name, c.cancel_time, c.cancel_flag,
50
         c.modify_time, c.cancel_id, c.cancel_code, c.cancel_name, c.cancel_time, c.cancel_flag,
50
-        c.belong_id, c.uper_customer_id, c.customer_id, c.sum_weight, c.use_weight,
51
+        c.belong_id, c.uper_customer_id, c.customer_id, c.sum_weight, c.use_weight, c.enable_status,
51
         uper.customer_nm as uper_customer_nm, uper.customer_short_nm as uper_customer_short_nm,
52
         uper.customer_nm as uper_customer_nm, uper.customer_short_nm as uper_customer_short_nm,
52
         cust.customer_nm as customer_nm, cust.customer_short_nm as customer_short_nm
53
         cust.customer_nm as customer_nm, cust.customer_short_nm as customer_short_nm
53
     </sql>
54
     </sql>

+ 3
- 0
sto/src/main/java/com/shinsoft/sto/model/main/Cargo.java View File

30
     @ApiModelProperty("使用重量")
30
     @ApiModelProperty("使用重量")
31
     private BigDecimal useWeight = BigDecimal.ZERO;
31
     private BigDecimal useWeight = BigDecimal.ZERO;
32
 
32
 
33
+    @ApiModelProperty("启用状态,0未启用,1启用")
34
+    private String enableStatus = "0";
35
+
33
     // 关联上游客户信息
36
     // 关联上游客户信息
34
     @TableField(exist = false)
37
     @TableField(exist = false)
35
     @ApiModelProperty("上游客户信息")
38
     @ApiModelProperty("上游客户信息")

+ 41
- 54
sto/src/main/java/com/shinsoft/sto/service/impl/main/CargoServiceImp.java View File

59
         }
59
         }
60
         return resultJSON;
60
         return resultJSON;
61
     }
61
     }
62
+
62
     @Override
63
     @Override
63
     public ResultJSON queryByPK(String id) {
64
     public ResultJSON queryByPK(String id) {
64
         try {
65
         try {
70
         }
71
         }
71
         return resultJSON;
72
         return resultJSON;
72
     }
73
     }
73
-    @Override
74
-    public ResultJSON save(String userId, String json) {
75
-        try {
76
-            Date date = new Date();
77
-            Cargo cargo = JSON.parseObject(json, new TypeReference<Cargo>() {});
78
-
79
-            if (StringUtils.isEmpty(cargo.getId())) {
80
-                cargo.setCancelFlag("0");
81
-                cargo.setAddId(userId);
82
-                cargo.setAddTime(date);
83
-                cargoMapper.insert(cargo);
84
-            } else {
85
-                cargo.setModifyId(userId);
86
-                cargo.setModifyTime(date);
87
-                cargoMapper.updateById(cargo);
88
-            }
89
-
90
-            resultJSON = JSONTools.toResultJSON(cargo);
91
-        } catch (Exception ex) {
92
-            ex.printStackTrace();
93
-            resultJSON = JSONTools.toResultJSON(ResponseCodeMsg.CODE_EX, ex);
94
-        }
95
-        return resultJSON;
96
-    }
97
 
74
 
98
     @Override
75
     @Override
99
     @Transactional(rollbackFor = Exception.class)
76
     @Transactional(rollbackFor = Exception.class)
103
             // 解析前端传递的数据
80
             // 解析前端传递的数据
104
             Map<String, Object> formData = JSON.parseObject(json, new TypeReference<Map<String, Object>>() {});
81
             Map<String, Object> formData = JSON.parseObject(json, new TypeReference<Map<String, Object>>() {});
105
 
82
 
83
+            String id = (String) formData.get("id");
106
             String uperCustomerId = (String) formData.get("uperCustomerId");
84
             String uperCustomerId = (String) formData.get("uperCustomerId");
107
             String customerId = (String) formData.get("customerId");
85
             String customerId = (String) formData.get("customerId");
108
             String subStr = (String) formData.get("subStr"); // 增加/减少
86
             String subStr = (String) formData.get("subStr"); // 增加/减少
118
             Cargo existingCargo = cargoMapper.selectOne(queryWrapper);
96
             Cargo existingCargo = cargoMapper.selectOne(queryWrapper);
119
 
97
 
120
             Cargo cargo;
98
             Cargo cargo;
99
+            boolean isNewRecord = false;
100
+
121
             if (existingCargo == null) {
101
             if (existingCargo == null) {
122
                 // 新增记录
102
                 // 新增记录
103
+                isNewRecord = true;
123
                 cargo = new Cargo();
104
                 cargo = new Cargo();
124
                 cargo.setId(UUID.randomUUID().toString().replace("-", ""));
105
                 cargo.setId(UUID.randomUUID().toString().replace("-", ""));
125
                 cargo.setUperCustomerId(uperCustomerId);
106
                 cargo.setUperCustomerId(uperCustomerId);
126
                 cargo.setCustomerId(customerId);
107
                 cargo.setCustomerId(customerId);
108
+                cargo.setEnableStatus("0"); // 新增记录默认未启用
127
 
109
 
128
                 if ("增加".equals(subStr)) {
110
                 if ("增加".equals(subStr)) {
129
-                    // 新增+增加:可使用量=0+重量,已使用量=0
111
+                    // 新增+增加:可使用量=重量,已使用量=0
130
                     cargo.setSumWeight(weight);
112
                     cargo.setSumWeight(weight);
131
                     cargo.setUseWeight(BigDecimal.ZERO);
113
                     cargo.setUseWeight(BigDecimal.ZERO);
132
-                } else if ("减少".equals(subStr)) {
114
+                } else {
133
                     // 新增+减少:不允许,因为不能从0减少
115
                     // 新增+减少:不允许,因为不能从0减少
134
                     resultJSON = JSONTools.toResultJSON(ResponseCodeMsg.CODE_EX, "无法对不存在的记录进行减少操作");
116
                     resultJSON = JSONTools.toResultJSON(ResponseCodeMsg.CODE_EX, "无法对不存在的记录进行减少操作");
135
                     return resultJSON;
117
                     return resultJSON;
136
-                } else {
137
-                    // 默认新增:可使用量=0+重量,已使用量=0
138
-                    cargo.setSumWeight(weight);
139
-                    cargo.setUseWeight(BigDecimal.ZERO);
140
                 }
118
                 }
141
 
119
 
142
                 cargo.setCancelFlag("0");
120
                 cargo.setCancelFlag("0");
146
             } else {
124
             } else {
147
                 // 更新现有记录
125
                 // 更新现有记录
148
                 cargo = existingCargo;
126
                 cargo = existingCargo;
127
+
128
+                // 检查减少操作的合法性
129
+                if ("减少".equals(subStr)) {
130
+                    // 检查启用状态和可使用量
131
+                    if ("1".equals(cargo.getEnableStatus()) &&
132
+                            (cargo.getSumWeight() == null || cargo.getSumWeight().compareTo(BigDecimal.ZERO) == 0)) {
133
+                        resultJSON = JSONTools.toResultJSON(ResponseCodeMsg.CODE_EX, "当前记录已启用且可使用量为0,不能进行减少操作");
134
+                        return resultJSON;
135
+                    }
136
+
137
+                    // 检查减少的重量是否大于当前可使用量
138
+                    BigDecimal oldSumWeight = cargo.getSumWeight() != null ? cargo.getSumWeight() : BigDecimal.ZERO;
139
+                    if (oldSumWeight.compareTo(weight) < 0) {
140
+                        resultJSON = JSONTools.toResultJSON(ResponseCodeMsg.CODE_EX, "减少的重量不能大于当前可使用量");
141
+                        return resultJSON;
142
+                    }
143
+                }
144
+
149
                 BigDecimal oldSumWeight = cargo.getSumWeight() != null ? cargo.getSumWeight() : BigDecimal.ZERO;
145
                 BigDecimal oldSumWeight = cargo.getSumWeight() != null ? cargo.getSumWeight() : BigDecimal.ZERO;
150
                 BigDecimal oldUseWeight = cargo.getUseWeight() != null ? cargo.getUseWeight() : BigDecimal.ZERO;
146
                 BigDecimal oldUseWeight = cargo.getUseWeight() != null ? cargo.getUseWeight() : BigDecimal.ZERO;
151
 
147
 
153
                     // 增加:可使用量=原可使用量+重量,已使用量不变
149
                     // 增加:可使用量=原可使用量+重量,已使用量不变
154
                     cargo.setSumWeight(oldSumWeight.add(weight));
150
                     cargo.setSumWeight(oldSumWeight.add(weight));
155
                 } else if ("减少".equals(subStr)) {
151
                 } else if ("减少".equals(subStr)) {
156
-                    // 减少:可使用量=原可使用量-重量,已使用量=0+重量
157
-                    if (oldSumWeight.compareTo(weight) < 0) {
158
-                        resultJSON = JSONTools.toResultJSON(ResponseCodeMsg.CODE_EX, "减少的重量不能大于当前可使用量");
159
-                        return resultJSON;
160
-                    }
152
+                    // 减少:可使用量=原可使用量-重量,已使用量不变
161
                     cargo.setSumWeight(oldSumWeight.subtract(weight));
153
                     cargo.setSumWeight(oldSumWeight.subtract(weight));
162
-                    cargo.setUseWeight(oldUseWeight.add(weight));
163
                 }
154
                 }
164
 
155
 
165
                 cargo.setModifyId(userId);
156
                 cargo.setModifyId(userId);
180
             changeRecord.setCancelFlag("0");
171
             changeRecord.setCancelFlag("0");
181
             changeRecord.setAddId(userId);
172
             changeRecord.setAddId(userId);
182
             changeRecord.setAddTime(date);
173
             changeRecord.setAddTime(date);
183
-            changeRecord.setModifyId(userId);
184
-            changeRecord.setModifyTime(date);
185
             cargoChangeRecordMapper.insert(changeRecord);
174
             cargoChangeRecordMapper.insert(changeRecord);
186
 
175
 
187
             resultJSON = JSONTools.toResultJSON(cargo);
176
             resultJSON = JSONTools.toResultJSON(cargo);
191
         }
180
         }
192
         return resultJSON;
181
         return resultJSON;
193
     }
182
     }
194
-   /* @Override
183
+
184
+    @Override
195
     public ResultJSON save(String userId, String json) {
185
     public ResultJSON save(String userId, String json) {
196
         try {
186
         try {
197
             Date date = new Date();
187
             Date date = new Date();
198
             Cargo cargo = JSON.parseObject(json, new TypeReference<Cargo>() {});
188
             Cargo cargo = JSON.parseObject(json, new TypeReference<Cargo>() {});
199
 
189
 
200
             if (StringUtils.isEmpty(cargo.getId())) {
190
             if (StringUtils.isEmpty(cargo.getId())) {
191
+                // 新增时检查是否已存在相同上游客户和客户的记录
192
+                QueryWrapper<Cargo> queryWrapper = new QueryWrapper<>();
193
+                queryWrapper.eq("uper_customer_id", cargo.getUperCustomerId())
194
+                        .eq("customer_id", cargo.getCustomerId())
195
+                        .eq("cancel_flag", "0");
196
+                Cargo existingCargo = cargoMapper.selectOne(queryWrapper);
197
+
198
+                if (existingCargo != null) {
199
+                    resultJSON = JSONTools.toResultJSON(ResponseCodeMsg.CODE_EX, "该上游客户和客户组合的货权记录已存在");
200
+                    return resultJSON;
201
+                }
202
+
201
                 cargo.setCancelFlag("0");
203
                 cargo.setCancelFlag("0");
202
                 cargo.setAddId(userId);
204
                 cargo.setAddId(userId);
203
                 cargo.setAddTime(date);
205
                 cargo.setAddTime(date);
216
         return resultJSON;
218
         return resultJSON;
217
     }
219
     }
218
 
220
 
219
-    @Override
220
-    public ResultJSON transfer(String userId, String json) {
221
-        try {
222
-            Date date = new Date();
223
-            Cargo cargo = JSON.parseObject(json, new TypeReference<Cargo>() {});
224
-            // 这里实现货权转移逻辑,包括记录变更履历
225
-            // 具体实现根据业务需求来写
226
-            resultJSON = JSONTools.toResultJSON(cargo);
227
-        } catch (Exception ex) {
228
-            ex.printStackTrace();
229
-            resultJSON = JSONTools.toResultJSON(ResponseCodeMsg.CODE_EX, ex);
230
-        }
231
-        return resultJSON;
232
-    }*/
233
-
234
     @Override
221
     @Override
235
     public ResultJSON remove(String userId, String id) {
222
     public ResultJSON remove(String userId, String id) {
236
         try {
223
         try {

Loading…
Cancel
Save