fanxw 11 months ago
parent
commit
7fbfb2ccb3

+ 50 - 28
src/main/java/com/chinaitop/depot/keeperAccount/service/impl/StorageBgzzServiceImpl.java

@@ -19,6 +19,7 @@ import org.apache.poi.hssf.usermodel.HSSFSheet;
19
 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
19
 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
20
 import org.apache.poi.ss.util.CellRangeAddress;
20
 import org.apache.poi.ss.util.CellRangeAddress;
21
 import org.springframework.stereotype.Service;
21
 import org.springframework.stereotype.Service;
22
+import org.springframework.util.ObjectUtils;
22
 
23
 
23
 import com.chinaitop.depot.keeperAccount.mapper.StorageBgzzMapper;
24
 import com.chinaitop.depot.keeperAccount.mapper.StorageBgzzMapper;
24
 import com.chinaitop.depot.keeperAccount.model.BgzzListObject;
25
 import com.chinaitop.depot.keeperAccount.model.BgzzListObject;
@@ -41,6 +42,23 @@ public class StorageBgzzServiceImpl implements StorageBgzzService {
41
 	@Resource
42
 	@Resource
42
 	private BgzzUtilsServiceImpl bgzzUtilsServiceImpl;
43
 	private BgzzUtilsServiceImpl bgzzUtilsServiceImpl;
43
 
44
 
45
+	public StorageBgzz queryBgzzDataType1(StorageFcbgz fcbgz) {
46
+		StorageBgzzExample example = new StorageBgzzExample();
47
+		StorageBgzzExample.Criteria criteria = example.createCriteria();
48
+		criteria.andOrgIdEqualTo(Integer.parseInt(fcbgz.getOrgId()));
49
+		criteria.andDataTypeEqualTo(StorageFcbgzUtils.DATA_TYPE_1);
50
+		criteria.andJzndEqualTo(fcbgz.getJznd());
51
+		criteria.andJzyfEqualTo(fcbgz.getSjfm());
52
+		criteria.andLyxzEqualTo(fcbgz.getLyxz());
53
+		criteria.andYwlxEqualTo(fcbgz.getYwlx());
54
+		List<StorageBgzz> list = storageBgzzMapper.selectByExample(example);
55
+		StorageBgzz storageBgzz = null;
56
+		if (null != list && list.size() > 0) {//修改
57
+			storageBgzz = list.get(0);
58
+		}
59
+		return storageBgzz;
60
+	}
61
+	
44
 	@Override
62
 	@Override
45
 	public void saveOrUpdateBgzzDataType0(StorageFcbgz fcbgz) throws Exception {
63
 	public void saveOrUpdateBgzzDataType0(StorageFcbgz fcbgz) throws Exception {
46
 		StorageBgzzExample example = new StorageBgzzExample();
64
 		StorageBgzzExample example = new StorageBgzzExample();
@@ -57,6 +75,7 @@ public class StorageBgzzServiceImpl implements StorageBgzzService {
57
 		String lspz = fcbgz.getPz().toString();
75
 		String lspz = fcbgz.getPz().toString();
58
 		if (null != list && list.size() > 0) {//修改
76
 		if (null != list && list.size() > 0) {//修改
59
 			storageBgzz = list.get(0);
77
 			storageBgzz = list.get(0);
78
+			StorageBgzz hzz_storageBgzz = queryBgzzDataType1(fcbgz);//查询合计行的库存数量
60
 			//收入差=收入数量-支出数量
79
 			//收入差=收入数量-支出数量
61
 			BigDecimal src = fcbgz.getSrsl().subtract(fcbgz.getZcsl()).setScale(3, BigDecimal.ROUND_DOWN);
80
 			BigDecimal src = fcbgz.getSrsl().subtract(fcbgz.getZcsl()).setScale(3, BigDecimal.ROUND_DOWN);
62
 			if ("3164".equals(lspz)) {//小麦
81
 			if ("3164".equals(lspz)) {//小麦
@@ -66,9 +85,12 @@ public class StorageBgzzServiceImpl implements StorageBgzzService {
66
 				storageBgzz.setXmZcsl(zcsl);
85
 				storageBgzz.setXmZcsl(zcsl);
67
 				//BigDecimal kcsl = fcbgzUtilsServiceImpl.findConditionKcsl(fcbgz);
86
 				//BigDecimal kcsl = fcbgzUtilsServiceImpl.findConditionKcsl(fcbgz);
68
 				//库存数量=原库存数量+收入差
87
 				//库存数量=原库存数量+收入差
69
-				BigDecimal kcsl = storageBgzz.getXmKcsl().add(src).setScale(3, BigDecimal.ROUND_DOWN);
88
+				//BigDecimal kcsl = storageBgzz.getXmKcsl().add(src).setScale(3, BigDecimal.ROUND_DOWN);
89
+				//storageBgzz.setXmKcsl(kcsl);
90
+				if (!ObjectUtils.isEmpty(hzz_storageBgzz)) {
91
+					storageBgzz.setXmKcsl(hzz_storageBgzz.getXmKcsl());
92
+				}
70
 				
93
 				
71
-				storageBgzz.setXmKcsl(kcsl);
72
 			} else if ("3166".equals(lspz)) {//稻谷
94
 			} else if ("3166".equals(lspz)) {//稻谷
73
 				BigDecimal srsl = fcbgz.getSrsl().add(storageBgzz.getDgSrsl()).setScale(3, BigDecimal.ROUND_DOWN);
95
 				BigDecimal srsl = fcbgz.getSrsl().add(storageBgzz.getDgSrsl()).setScale(3, BigDecimal.ROUND_DOWN);
74
 				storageBgzz.setDgSrsl(srsl);
96
 				storageBgzz.setDgSrsl(srsl);
@@ -76,8 +98,11 @@ public class StorageBgzzServiceImpl implements StorageBgzzService {
76
 				storageBgzz.setDgZcsl(zcsl);
98
 				storageBgzz.setDgZcsl(zcsl);
77
 				//BigDecimal kcsl = fcbgzUtilsServiceImpl.findConditionKcsl(fcbgz);
99
 				//BigDecimal kcsl = fcbgzUtilsServiceImpl.findConditionKcsl(fcbgz);
78
 				//库存数量=原库存数量+收入差
100
 				//库存数量=原库存数量+收入差
79
-				BigDecimal kcsl = storageBgzz.getDgKcsl().add(src).setScale(3, BigDecimal.ROUND_DOWN);
80
-				storageBgzz.setDgKcsl(kcsl);
101
+				//BigDecimal kcsl = storageBgzz.getDgKcsl().add(src).setScale(3, BigDecimal.ROUND_DOWN);
102
+				//storageBgzz.setDgKcsl(kcsl);
103
+				if (!ObjectUtils.isEmpty(hzz_storageBgzz)) {
104
+					storageBgzz.setDgKcsl(hzz_storageBgzz.getDgKcsl());
105
+				}
81
 			} else if ("7144".equals(lspz)) {//原油
106
 			} else if ("7144".equals(lspz)) {//原油
82
 				BigDecimal srsl = fcbgz.getSrsl().add(storageBgzz.getDdyySrsl()).setScale(3, BigDecimal.ROUND_DOWN);
107
 				BigDecimal srsl = fcbgz.getSrsl().add(storageBgzz.getDdyySrsl()).setScale(3, BigDecimal.ROUND_DOWN);
83
 				storageBgzz.setDdyySrsl(srsl);
108
 				storageBgzz.setDdyySrsl(srsl);
@@ -85,8 +110,11 @@ public class StorageBgzzServiceImpl implements StorageBgzzService {
85
 				storageBgzz.setDdyyZcsl(zcsl);
110
 				storageBgzz.setDdyyZcsl(zcsl);
86
 				//BigDecimal kcsl = fcbgzUtilsServiceImpl.findConditionKcsl(fcbgz);
111
 				//BigDecimal kcsl = fcbgzUtilsServiceImpl.findConditionKcsl(fcbgz);
87
 				//库存数量=原库存数量+收入差
112
 				//库存数量=原库存数量+收入差
88
-				BigDecimal kcsl = storageBgzz.getDdyyKcsl().add(src).setScale(3, BigDecimal.ROUND_DOWN);
89
-				storageBgzz.setDdyyKcsl(kcsl);
113
+				//BigDecimal kcsl = storageBgzz.getDdyyKcsl().add(src).setScale(3, BigDecimal.ROUND_DOWN);
114
+				//storageBgzz.setDdyyKcsl(kcsl);
115
+				if (!ObjectUtils.isEmpty(hzz_storageBgzz)) {
116
+					storageBgzz.setDdyyKcsl(hzz_storageBgzz.getDdyyKcsl());
117
+				}
90
 			}
118
 			}
91
 
119
 
92
 			BigDecimal xj = storageBgzz.getXmKcsl().add(storageBgzz.getDgKcsl()).add(storageBgzz.getDdyyKcsl()).setScale(3, BigDecimal.ROUND_DOWN);
120
 			BigDecimal xj = storageBgzz.getXmKcsl().add(storageBgzz.getDgKcsl()).add(storageBgzz.getDdyyKcsl()).setScale(3, BigDecimal.ROUND_DOWN);
@@ -109,7 +137,7 @@ public class StorageBgzzServiceImpl implements StorageBgzzService {
109
 			BigDecimal val = new BigDecimal(0);
137
 			BigDecimal val = new BigDecimal(0);
110
 
138
 
111
 			//收入差(取绝对值)=收入数量-支出数量
139
 			//收入差(取绝对值)=收入数量-支出数量
112
-			BigDecimal src = fcbgz.getSrsl().subtract(fcbgz.getZcsl()).abs().setScale(3, BigDecimal.ROUND_DOWN);
140
+			//BigDecimal src = fcbgz.getSrsl().subtract(fcbgz.getZcsl()).abs().setScale(3, BigDecimal.ROUND_DOWN);
113
 			if ("3164".equals(lspz)) {//小麦
141
 			if ("3164".equals(lspz)) {//小麦
114
 				storageBgzz.setXmSrsl(fcbgz.getSrsl());
142
 				storageBgzz.setXmSrsl(fcbgz.getSrsl());
115
 				storageBgzz.setXmZcsl(fcbgz.getZcsl());
143
 				storageBgzz.setXmZcsl(fcbgz.getZcsl());
@@ -177,29 +205,23 @@ public class StorageBgzzServiceImpl implements StorageBgzzService {
177
 			//查询这一年这个月的普通账数据
205
 			//查询这一年这个月的普通账数据
178
 			List<StorageBgzz> ydlist = bgzzUtilsServiceImpl.findConditionJzyf(fcbgz, StorageFcbgzUtils.DATA_TYPE_0);
206
 			List<StorageBgzz> ydlist = bgzzUtilsServiceImpl.findConditionJzyf(fcbgz, StorageFcbgzUtils.DATA_TYPE_0);
179
 			if ("3164".equals(lspz)) {//小麦
207
 			if ("3164".equals(lspz)) {//小麦
180
-				BigDecimal srsl = ydlist.stream().map(StorageBgzz::getXmSrsl).reduce(BigDecimal.ZERO, BigDecimal::add);
181
-				storageBgzz.setXmSrsl(srsl);
182
-				BigDecimal zcsl = ydlist.stream().map(StorageBgzz::getXmZcsl).reduce(BigDecimal.ZERO, BigDecimal::add);
183
-				storageBgzz.setXmZcsl(zcsl);
184
-				BigDecimal kcsl = ydlist.stream().map(StorageBgzz::getXmKcsl).reduce(BigDecimal.ZERO, BigDecimal::add);
208
+				storageBgzz.setXmSrsl(storageBgzz.getXmSrsl().add(fcbgz.getSrsl()).setScale(3, BigDecimal.ROUND_DOWN));
209
+				storageBgzz.setXmZcsl(storageBgzz.getXmZcsl().add(fcbgz.getZcsl()).setScale(3, BigDecimal.ROUND_DOWN));
210
+				BigDecimal kcsl = storageBgzz.getXmSrsl().subtract(storageBgzz.getXmZcsl()).abs().setScale(3, BigDecimal.ROUND_DOWN);
185
 				storageBgzz.setXmKcsl(kcsl);
211
 				storageBgzz.setXmKcsl(kcsl);
186
 			}
212
 			}
187
 
213
 
188
 			if ("3166".equals(lspz)) {//稻谷
214
 			if ("3166".equals(lspz)) {//稻谷
189
-				BigDecimal srsl = ydlist.stream().map(StorageBgzz::getDgSrsl).reduce(BigDecimal.ZERO, BigDecimal::add);
190
-				storageBgzz.setDgSrsl(srsl);
191
-				BigDecimal zcsl = ydlist.stream().map(StorageBgzz::getDgZcsl).reduce(BigDecimal.ZERO, BigDecimal::add);
192
-				storageBgzz.setDgZcsl(zcsl);
193
-				BigDecimal kcsl = ydlist.stream().map(StorageBgzz::getDgKcsl).reduce(BigDecimal.ZERO, BigDecimal::add);
215
+				storageBgzz.setDgSrsl(storageBgzz.getDgSrsl().add(fcbgz.getSrsl()).setScale(3, BigDecimal.ROUND_DOWN));
216
+				storageBgzz.setDgZcsl(storageBgzz.getDgZcsl().add(fcbgz.getZcsl()).setScale(3, BigDecimal.ROUND_DOWN));
217
+				BigDecimal kcsl = storageBgzz.getDgSrsl().subtract(storageBgzz.getDgZcsl()).abs().setScale(3, BigDecimal.ROUND_DOWN);
194
 				storageBgzz.setDgKcsl(kcsl);
218
 				storageBgzz.setDgKcsl(kcsl);
195
 			}
219
 			}
196
 
220
 
197
 			if ("7144".equals(lspz)) {//原油
221
 			if ("7144".equals(lspz)) {//原油
198
-				BigDecimal srsl = ydlist.stream().map(StorageBgzz::getDdyySrsl).reduce(BigDecimal.ZERO, BigDecimal::add);
199
-				storageBgzz.setDdyySrsl(srsl);
200
-				BigDecimal zcsl = ydlist.stream().map(StorageBgzz::getDdyyZcsl).reduce(BigDecimal.ZERO, BigDecimal::add);
201
-				storageBgzz.setDdyyZcsl(zcsl);
202
-				BigDecimal kcsl = ydlist.stream().map(StorageBgzz::getDdyyKcsl).reduce(BigDecimal.ZERO, BigDecimal::add);
222
+				storageBgzz.setDdyySrsl(storageBgzz.getDdyySrsl().add(fcbgz.getSrsl()).setScale(3, BigDecimal.ROUND_DOWN));
223
+				storageBgzz.setDdyyZcsl(storageBgzz.getDdyySrsl().add(fcbgz.getSrsl()).setScale(3, BigDecimal.ROUND_DOWN));
224
+				BigDecimal kcsl = storageBgzz.getDdyySrsl().subtract(storageBgzz.getDdyyZcsl()).abs().setScale(3, BigDecimal.ROUND_DOWN);
203
 				storageBgzz.setDdyyKcsl(kcsl);
225
 				storageBgzz.setDdyyKcsl(kcsl);
204
 			}
226
 			}
205
 
227
 
@@ -210,7 +232,7 @@ public class StorageBgzzServiceImpl implements StorageBgzzService {
210
 			storageBgzzMapper.updateByPrimaryKey(storageBgzz);
232
 			storageBgzzMapper.updateByPrimaryKey(storageBgzz);
211
 			
233
 			
212
 		} else {
234
 		} else {
213
-			//新增普通账数据
235
+			//新增合计账数据
214
 			storageBgzz = new StorageBgzz();
236
 			storageBgzz = new StorageBgzz();
215
 			storageBgzz.setId(UUID.randomUUID().toString().replace("-", ""));
237
 			storageBgzz.setId(UUID.randomUUID().toString().replace("-", ""));
216
 			storageBgzz.setOrgId(Integer.parseInt(fcbgz.getOrgId()));
238
 			storageBgzz.setOrgId(Integer.parseInt(fcbgz.getOrgId()));
@@ -220,7 +242,7 @@ public class StorageBgzzServiceImpl implements StorageBgzzService {
220
 
242
 
221
 			BigDecimal val = new BigDecimal(0);
243
 			BigDecimal val = new BigDecimal(0);
222
 
244
 
223
-			BigDecimal src = fcbgz.getSrsl().subtract(fcbgz.getZcsl()).abs().setScale(3, BigDecimal.ROUND_DOWN);
245
+			//BigDecimal src = fcbgz.getSrsl().subtract(fcbgz.getZcsl()).abs().setScale(3, BigDecimal.ROUND_DOWN);
224
 			if ("3164".equals(lspz)) {//小麦
246
 			if ("3164".equals(lspz)) {//小麦
225
 				storageBgzz.setXmSrsl(fcbgz.getSrsl());
247
 				storageBgzz.setXmSrsl(fcbgz.getSrsl());
226
 				storageBgzz.setXmZcsl(fcbgz.getZcsl());
248
 				storageBgzz.setXmZcsl(fcbgz.getZcsl());
@@ -282,7 +304,7 @@ public class StorageBgzzServiceImpl implements StorageBgzzService {
282
 				storageBgzz.setXmSrsl(srsl);
304
 				storageBgzz.setXmSrsl(srsl);
283
 				BigDecimal zcsl = ydlist.stream().map(StorageBgzz::getXmZcsl).reduce(BigDecimal.ZERO, BigDecimal::add);
305
 				BigDecimal zcsl = ydlist.stream().map(StorageBgzz::getXmZcsl).reduce(BigDecimal.ZERO, BigDecimal::add);
284
 				storageBgzz.setXmZcsl(zcsl);
306
 				storageBgzz.setXmZcsl(zcsl);
285
-				BigDecimal kcsl = ydlist.stream().map(StorageBgzz::getXmKcsl).reduce(BigDecimal.ZERO, BigDecimal::add);
307
+				BigDecimal kcsl = srsl.subtract(zcsl).abs().setScale(3, BigDecimal.ROUND_DOWN);
286
 				storageBgzz.setXmKcsl(kcsl);
308
 				storageBgzz.setXmKcsl(kcsl);
287
 			}
309
 			}
288
 			if ("3166".equals(lspz)) {//稻谷
310
 			if ("3166".equals(lspz)) {//稻谷
@@ -290,7 +312,7 @@ public class StorageBgzzServiceImpl implements StorageBgzzService {
290
 				storageBgzz.setDgSrsl(srsl);
312
 				storageBgzz.setDgSrsl(srsl);
291
 				BigDecimal zcsl = ydlist.stream().map(StorageBgzz::getDgZcsl).reduce(BigDecimal.ZERO, BigDecimal::add);
313
 				BigDecimal zcsl = ydlist.stream().map(StorageBgzz::getDgZcsl).reduce(BigDecimal.ZERO, BigDecimal::add);
292
 				storageBgzz.setDgZcsl(zcsl);
314
 				storageBgzz.setDgZcsl(zcsl);
293
-				BigDecimal kcsl = ydlist.stream().map(StorageBgzz::getDgKcsl).reduce(BigDecimal.ZERO, BigDecimal::add);
315
+				BigDecimal kcsl = srsl.subtract(zcsl).abs().setScale(3, BigDecimal.ROUND_DOWN);
294
 				storageBgzz.setDgKcsl(kcsl);
316
 				storageBgzz.setDgKcsl(kcsl);
295
 			}
317
 			}
296
 			if ("7144".equals(lspz)) {//原油
318
 			if ("7144".equals(lspz)) {//原油
@@ -298,7 +320,7 @@ public class StorageBgzzServiceImpl implements StorageBgzzService {
298
 				storageBgzz.setDdyySrsl(srsl);
320
 				storageBgzz.setDdyySrsl(srsl);
299
 				BigDecimal zcsl = ydlist.stream().map(StorageBgzz::getDdyyZcsl).reduce(BigDecimal.ZERO, BigDecimal::add);
321
 				BigDecimal zcsl = ydlist.stream().map(StorageBgzz::getDdyyZcsl).reduce(BigDecimal.ZERO, BigDecimal::add);
300
 				storageBgzz.setDdyyZcsl(zcsl);
322
 				storageBgzz.setDdyyZcsl(zcsl);
301
-				BigDecimal kcsl = ydlist.stream().map(StorageBgzz::getDdyyKcsl).reduce(BigDecimal.ZERO, BigDecimal::add);
323
+				BigDecimal kcsl = srsl.subtract(zcsl).abs().setScale(3, BigDecimal.ROUND_DOWN);
302
 				storageBgzz.setDdyyKcsl(kcsl);
324
 				storageBgzz.setDdyyKcsl(kcsl);
303
 			}
325
 			}
304
 
326
 
@@ -317,7 +339,7 @@ public class StorageBgzzServiceImpl implements StorageBgzzService {
317
 
339
 
318
 			BigDecimal val = new BigDecimal(0);
340
 			BigDecimal val = new BigDecimal(0);
319
 
341
 
320
-			BigDecimal src = fcbgz.getSrsl().subtract(fcbgz.getZcsl()).abs().setScale(3, BigDecimal.ROUND_DOWN);
342
+			//BigDecimal src = fcbgz.getSrsl().subtract(fcbgz.getZcsl()).abs().setScale(3, BigDecimal.ROUND_DOWN);
321
 			if ("3164".equals(lspz)) {//小麦
343
 			if ("3164".equals(lspz)) {//小麦
322
 				storageBgzz.setXmSrsl(fcbgz.getSrsl());
344
 				storageBgzz.setXmSrsl(fcbgz.getSrsl());
323
 				storageBgzz.setXmZcsl(fcbgz.getZcsl());
345
 				storageBgzz.setXmZcsl(fcbgz.getZcsl());

+ 2 - 2
src/main/java/com/chinaitop/depot/keeperAccount/service/impl/StorageFcbgzServiceImpl.java

@@ -222,10 +222,10 @@ public class StorageFcbgzServiceImpl implements StorageFcbgzService {
222
 		if (StringUtils.isNotBlank(storageFcbgz.getShr())) {
222
 		if (StringUtils.isNotBlank(storageFcbgz.getShr())) {
223
 			/* 普通账,审核后给总账表插入数据 */
223
 			/* 普通账,审核后给总账表插入数据 */
224
 			if (storageFcbgz.getDataType().equals(StorageFcbgzUtils.DATA_TYPE_0)) {
224
 			if (storageFcbgz.getDataType().equals(StorageFcbgzUtils.DATA_TYPE_0)) {
225
+				//先新增或更新月合计账数据
226
+				storageBgzzService.saveOrUpdateBgzzDataType1(storageFcbgz);
225
 				//新增普通账数据
227
 				//新增普通账数据
226
 				storageBgzzService.saveOrUpdateBgzzDataType0(storageFcbgz);
228
 				storageBgzzService.saveOrUpdateBgzzDataType0(storageFcbgz);
227
-				//新增或更新月合计账数据
228
-				storageBgzzService.saveOrUpdateBgzzDataType1(storageFcbgz);
229
 				//新增或更新年结转账数据
229
 				//新增或更新年结转账数据
230
 				storageBgzzService.saveOrUpdateBgzzDataType2(storageFcbgz);
230
 				storageBgzzService.saveOrUpdateBgzzDataType2(storageFcbgz);
231
 			}
231
 			}