fanxw месяцев назад: 11
Родитель
Сommit
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 19
 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
20 20
 import org.apache.poi.ss.util.CellRangeAddress;
21 21
 import org.springframework.stereotype.Service;
22
+import org.springframework.util.ObjectUtils;
22 23
 
23 24
 import com.chinaitop.depot.keeperAccount.mapper.StorageBgzzMapper;
24 25
 import com.chinaitop.depot.keeperAccount.model.BgzzListObject;
@@ -41,6 +42,23 @@ public class StorageBgzzServiceImpl implements StorageBgzzService {
41 42
 	@Resource
42 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 62
 	@Override
45 63
 	public void saveOrUpdateBgzzDataType0(StorageFcbgz fcbgz) throws Exception {
46 64
 		StorageBgzzExample example = new StorageBgzzExample();
@@ -57,6 +75,7 @@ public class StorageBgzzServiceImpl implements StorageBgzzService {
57 75
 		String lspz = fcbgz.getPz().toString();
58 76
 		if (null != list && list.size() > 0) {//修改
59 77
 			storageBgzz = list.get(0);
78
+			StorageBgzz hzz_storageBgzz = queryBgzzDataType1(fcbgz);//查询合计行的库存数量
60 79
 			//收入差=收入数量-支出数量
61 80
 			BigDecimal src = fcbgz.getSrsl().subtract(fcbgz.getZcsl()).setScale(3, BigDecimal.ROUND_DOWN);
62 81
 			if ("3164".equals(lspz)) {//小麦
@@ -66,9 +85,12 @@ public class StorageBgzzServiceImpl implements StorageBgzzService {
66 85
 				storageBgzz.setXmZcsl(zcsl);
67 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 94
 			} else if ("3166".equals(lspz)) {//稻谷
73 95
 				BigDecimal srsl = fcbgz.getSrsl().add(storageBgzz.getDgSrsl()).setScale(3, BigDecimal.ROUND_DOWN);
74 96
 				storageBgzz.setDgSrsl(srsl);
@@ -76,8 +98,11 @@ public class StorageBgzzServiceImpl implements StorageBgzzService {
76 98
 				storageBgzz.setDgZcsl(zcsl);
77 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 106
 			} else if ("7144".equals(lspz)) {//原油
82 107
 				BigDecimal srsl = fcbgz.getSrsl().add(storageBgzz.getDdyySrsl()).setScale(3, BigDecimal.ROUND_DOWN);
83 108
 				storageBgzz.setDdyySrsl(srsl);
@@ -85,8 +110,11 @@ public class StorageBgzzServiceImpl implements StorageBgzzService {
85 110
 				storageBgzz.setDdyyZcsl(zcsl);
86 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 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 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 141
 			if ("3164".equals(lspz)) {//小麦
114 142
 				storageBgzz.setXmSrsl(fcbgz.getSrsl());
115 143
 				storageBgzz.setXmZcsl(fcbgz.getZcsl());
@@ -177,29 +205,23 @@ public class StorageBgzzServiceImpl implements StorageBgzzService {
177 205
 			//查询这一年这个月的普通账数据
178 206
 			List<StorageBgzz> ydlist = bgzzUtilsServiceImpl.findConditionJzyf(fcbgz, StorageFcbgzUtils.DATA_TYPE_0);
179 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 211
 				storageBgzz.setXmKcsl(kcsl);
186 212
 			}
187 213
 
188 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 218
 				storageBgzz.setDgKcsl(kcsl);
195 219
 			}
196 220
 
197 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 225
 				storageBgzz.setDdyyKcsl(kcsl);
204 226
 			}
205 227
 
@@ -210,7 +232,7 @@ public class StorageBgzzServiceImpl implements StorageBgzzService {
210 232
 			storageBgzzMapper.updateByPrimaryKey(storageBgzz);
211 233
 			
212 234
 		} else {
213
-			//新增普通账数据
235
+			//新增合计账数据
214 236
 			storageBgzz = new StorageBgzz();
215 237
 			storageBgzz.setId(UUID.randomUUID().toString().replace("-", ""));
216 238
 			storageBgzz.setOrgId(Integer.parseInt(fcbgz.getOrgId()));
@@ -220,7 +242,7 @@ public class StorageBgzzServiceImpl implements StorageBgzzService {
220 242
 
221 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 246
 			if ("3164".equals(lspz)) {//小麦
225 247
 				storageBgzz.setXmSrsl(fcbgz.getSrsl());
226 248
 				storageBgzz.setXmZcsl(fcbgz.getZcsl());
@@ -282,7 +304,7 @@ public class StorageBgzzServiceImpl implements StorageBgzzService {
282 304
 				storageBgzz.setXmSrsl(srsl);
283 305
 				BigDecimal zcsl = ydlist.stream().map(StorageBgzz::getXmZcsl).reduce(BigDecimal.ZERO, BigDecimal::add);
284 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 308
 				storageBgzz.setXmKcsl(kcsl);
287 309
 			}
288 310
 			if ("3166".equals(lspz)) {//稻谷
@@ -290,7 +312,7 @@ public class StorageBgzzServiceImpl implements StorageBgzzService {
290 312
 				storageBgzz.setDgSrsl(srsl);
291 313
 				BigDecimal zcsl = ydlist.stream().map(StorageBgzz::getDgZcsl).reduce(BigDecimal.ZERO, BigDecimal::add);
292 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 316
 				storageBgzz.setDgKcsl(kcsl);
295 317
 			}
296 318
 			if ("7144".equals(lspz)) {//原油
@@ -298,7 +320,7 @@ public class StorageBgzzServiceImpl implements StorageBgzzService {
298 320
 				storageBgzz.setDdyySrsl(srsl);
299 321
 				BigDecimal zcsl = ydlist.stream().map(StorageBgzz::getDdyyZcsl).reduce(BigDecimal.ZERO, BigDecimal::add);
300 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 324
 				storageBgzz.setDdyyKcsl(kcsl);
303 325
 			}
304 326
 
@@ -317,7 +339,7 @@ public class StorageBgzzServiceImpl implements StorageBgzzService {
317 339
 
318 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 343
 			if ("3164".equals(lspz)) {//小麦
322 344
 				storageBgzz.setXmSrsl(fcbgz.getSrsl());
323 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 222
 		if (StringUtils.isNotBlank(storageFcbgz.getShr())) {
223 223
 			/* 普通账,审核后给总账表插入数据 */
224 224
 			if (storageFcbgz.getDataType().equals(StorageFcbgzUtils.DATA_TYPE_0)) {
225
+				//先新增或更新月合计账数据
226
+				storageBgzzService.saveOrUpdateBgzzDataType1(storageFcbgz);
225 227
 				//新增普通账数据
226 228
 				storageBgzzService.saveOrUpdateBgzzDataType0(storageFcbgz);
227
-				//新增或更新月合计账数据
228
-				storageBgzzService.saveOrUpdateBgzzDataType1(storageFcbgz);
229 229
 				//新增或更新年结转账数据
230 230
 				storageBgzzService.saveOrUpdateBgzzDataType2(storageFcbgz);
231 231
 			}