BarcodeManagerImpl.java
5.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
package com.myproject.manager.impl;
import com.google.common.base.Strings;
import com.myproject.bean.search.PageList;
import com.myproject.bean.update.Barcode;
import com.myproject.bean.update.Component;
import com.myproject.dao.mongo.IBarcodeDao;
import com.myproject.exception.ValidateException;
import com.myproject.manager.IBarcodeManager;
import com.myproject.manager.IComponentManager;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import java.util.Date;
import java.util.List;
/**
* Created by kangmor on 2015/12/1.
*/
@Service
public class BarcodeManagerImpl implements IBarcodeManager {
@Autowired
protected IBarcodeDao barcodeDao;
@Autowired
protected IComponentManager componentManager;
protected final transient Logger log = LogManager.getLogger(getClass());
@Override
public Barcode findByBarcode(String barcode) {
log.debug("Find barcode " + barcode);
if (StringUtils.isEmpty(barcode))
return null;
return barcodeDao.findOneByCondition(new String[]{"barcode"}, new String[]{barcode});
}
@Override
public void updatePutInDate(){
for (Barcode barcode : findAll()) {
long putInTime = barcode.getPutInTime();
if(putInTime > 0){
barcode.setPutInDate(new Date(putInTime));
barcodeDao.save(barcode);
}
}
}
@Override
public Barcode get(String id) {
return barcodeDao.findOneById(id);
}
@Override
public Barcode save(Barcode barcode) throws ValidateException{
validateSave(barcode);
Component component = componentManager.findByPartNumber(barcode.getPartNumber());
if(component != null){
if(barcode.getMaxStorageTime() <= 0){
barcode.setMaxStorageTime(component.getMaxStorageTime());
}
if(barcode.getAmount() == 1){
barcode.setAmount(component.getAmount());
}
barcode.setType(component.getType());
barcode.setWarmTime(component.getWarmTime());
barcode.setOtherField1(component.getProductionType());
barcode.setFixtureNumber(component.getFixtureNumber());
if(barcode.getPlateSize() <= 0){
log.info("设置置["+barcode.getBarcode()+"]的尺寸信息");
barcode.setPlateSize(component.getPlateSize());
barcode.setHeight(component.getHeight());
}
}else{
log.error("未找到物料["+barcode.getPartNumber()+"]的档案");
}
// String id = barcode.getId();
// if(!Strings.isNullOrEmpty(id)){
// Barcode oldBarcode = get(id);
// //barcode.setNoChangeField(oldBarcode);
// }
return barcodeDao.save(barcode);
}
@Override
public void delete(Barcode barcode) throws ValidateException{
barcodeDao.removeOne(barcode);
}
@Override
public List<Barcode> findAll() {
return barcodeDao.findAll();
}
@Override
public PageList findByQuery(Query query, PageList pageList) {
return barcodeDao.findByQuery(query, pageList);
}
protected void validateSave(Barcode barcode) throws ValidateException {
if (StringUtils.isEmpty(barcode.getBarcode())) {
throw new ValidateException("barcode.error.empty");
}
if (StringUtils.isEmpty(barcode.getPartNumber())) {
throw new ValidateException("barcode.error.partNumber.empty", new String[]{barcode.getBarcode()});
}
if (barcode.getAmount() < 0) {
throw new ValidateException("barcode.error.amount.negative", new String[]{barcode.getBarcode()});
}
if (!validateUnique(barcode)) {
throw new ValidateException("barcode.error.unique", new String[]{barcode.getBarcode()});
}
if (!validateComponent(barcode)) {
throw new ValidateException("barcode.error.component.notExist", new String[]{barcode.getBarcode()});
}
}
protected boolean validateComponent(Barcode barcode) {
return componentManager.findByPartNumber(barcode.getPartNumber()) != null;
}
protected boolean validateUnique(Barcode barcode) {
boolean unique = true;
if (Strings.isNullOrEmpty(barcode.getId())){
Barcode anotherBarcode = findByBarcode(barcode.getBarcode());
if(anotherBarcode != null){
log.info("ID:"+barcode.getId()+"[barcode:"+barcode.getBarcode() +"] another ID:" + anotherBarcode.getId() +" With the same barcode:"+anotherBarcode.getBarcode());
unique = false;
}
}
return unique;
}
@Override
public void validate(Barcode barcode, List errors) {
}
public void setBarcodeDao(IBarcodeDao barcodeDao) {
this.barcodeDao = barcodeDao;
}
public void setComponentManager(IComponentManager componentManager) {
this.componentManager = componentManager;
}
}