Commit c0d65a5f sunke

PN增加供应商

1 个父辈 8d45b57d
...@@ -49,4 +49,6 @@ public interface IDataLogDao extends IMongoDao { ...@@ -49,4 +49,6 @@ public interface IDataLogDao extends IMongoDao {
List<DataLog> findByFeedPosId(String feederPosId); List<DataLog> findByFeedPosId(String feederPosId);
List<DataLog> findHistory(String barcode, Date startDate, Date endDate); List<DataLog> findHistory(String barcode, Date startDate, Date endDate);
List<DataLog> findHistory(String barcode, int num);
} }
...@@ -176,4 +176,23 @@ public class DataLogDaoImpl extends AbstractMongoDao implements IDataLogDao { ...@@ -176,4 +176,23 @@ public class DataLogDaoImpl extends AbstractMongoDao implements IDataLogDao {
return findByQuery(Query.query(c)); return findByQuery(Query.query(c));
} }
@Override
public List<DataLog> findHistory(String barcode, int num) {
Criteria c = new Criteria();
if(barcode != null && !barcode.isEmpty()){
c.and("barcode").is(barcode);
}
//if(startDate != null){
// c.and("createDate").gte(startDate);
//}
// if(endDate != null){
// c.and("updateDate").lte(endDate);
// }
Query q = Query.query(c);
q.limit(num);
q.with(new Sort(Sort.Direction.DESC, "updateDate"));
return findByQuery(q);
}
} }
...@@ -9,13 +9,13 @@ import java.util.List; ...@@ -9,13 +9,13 @@ import java.util.List;
*/ */
public interface IComponentManager extends IManager<Component> { public interface IComponentManager extends IManager<Component> {
public Component findByPartNumber(String partNumber, String provider); Component findOneByPn(String partNumber);
Component findProviderPn(String partNumber, String provider);
List<Component> listByPn(String pn); List<Component> listByPn(String pn);
List<Component> allNeedAlarmComponents(); List<Component> allNeedAlarmComponents();
List<Component> findByType(int type); List<Component> findByType(int type);
//List<Component> listByPartNumber(String partNumber);
} }
...@@ -57,7 +57,7 @@ public class BarcodeManagerImpl implements IBarcodeManager { ...@@ -57,7 +57,7 @@ public class BarcodeManagerImpl implements IBarcodeManager {
@Override @Override
public Barcode save(Barcode barcode) throws ValidateException{ public Barcode save(Barcode barcode) throws ValidateException{
validateSave(barcode); validateSave(barcode);
Component component = componentManager.findByPartNumber(barcode.getPartNumber(), barcode.getProvider()); Component component = componentManager.findOneByPn(barcode.getPartNumber());
if(component != null){ if(component != null){
if(barcode.getMaxStorageTime() <= 0){ if(barcode.getMaxStorageTime() <= 0){
barcode.setMaxStorageTime(component.getMaxStorageTime()); barcode.setMaxStorageTime(component.getMaxStorageTime());
...@@ -119,7 +119,7 @@ public class BarcodeManagerImpl implements IBarcodeManager { ...@@ -119,7 +119,7 @@ public class BarcodeManagerImpl implements IBarcodeManager {
protected boolean validateComponent(Barcode barcode) { protected boolean validateComponent(Barcode barcode) {
return componentManager.findByPartNumber(barcode.getPartNumber(),barcode.getProvider()) != null; return componentManager.findOneByPn(barcode.getPartNumber()) != null;
} }
protected boolean validateUnique(Barcode barcode) { protected boolean validateUnique(Barcode barcode) {
......
...@@ -33,10 +33,31 @@ public class ComponentManagerImpl implements IComponentManager { ...@@ -33,10 +33,31 @@ public class ComponentManagerImpl implements IComponentManager {
} }
@Override @Override
public Component findByPartNumber(String partNumber, String provider) { public Component findOneByPn(String partNumber) {
if (StringUtils.isEmpty(partNumber)) if (StringUtils.isEmpty(partNumber))
return null; return null;
else return componentDao.findOneByCondition(new String[] {"partNumber","provider"}, new String[] {partNumber,provider}); else {
return componentDao.findOneByCondition(new String[] {"partNumber"}, new String[] {partNumber});
}
}
@Override
public Component findProviderPn(String partNumber, String provider) {
if (StringUtils.isEmpty(partNumber))
return null;
else {
Component component = componentDao.findOneByCondition(new String[] {"partNumber","provider"}, new String[] {partNumber,provider});
if(component == null){
component = componentDao.findOneByCondition(new String[] {"partNumber","provider"}, new String[] {partNumber,null});
if(component != null){
component.setProvider(provider);
component = componentDao.save(component);
}
}
return component;
}
} }
@Override @Override
...@@ -71,7 +92,7 @@ public class ComponentManagerImpl implements IComponentManager { ...@@ -71,7 +92,7 @@ public class ComponentManagerImpl implements IComponentManager {
public Component save(Component component) throws ValidateException{ public Component save(Component component) throws ValidateException{
String partNumber = component.getPartNumber(); String partNumber = component.getPartNumber();
Component dbComponent = findByPartNumber(partNumber, component.getProvider()); Component dbComponent = findProviderPn(partNumber, component.getProvider());
if(dbComponent != null){ if(dbComponent != null){
//数据库中已存在,但不是更新(要保存的没有 ID,或者有 ID但与数据库中的 ID不一致) //数据库中已存在,但不是更新(要保存的没有 ID,或者有 ID但与数据库中的 ID不一致)
if(Strings.isNullOrEmpty(component.getId()) || !dbComponent.getId().equals(component.getId()) ){ if(Strings.isNullOrEmpty(component.getId()) || !dbComponent.getId().equals(component.getId()) ){
......
...@@ -177,7 +177,7 @@ public class TcpServer { ...@@ -177,7 +177,7 @@ public class TcpServer {
barcode.setAmount(amount); barcode.setAmount(amount);
//未补过料 //未补过料
if(Strings.isNullOrEmpty(barcode.getNextBarcode())){ if(Strings.isNullOrEmpty(barcode.getNextBarcode())){
Component component = componentManager.findByPartNumber(barcode.getPartNumber(), barcode.getProvider()); Component component = componentManager.findOneByPn(barcode.getPartNumber());
int alarmAmount = component.getAlarmAmount(); int alarmAmount = component.getAlarmAmount();
if(amount <= alarmAmount){ if(amount <= alarmAmount){
StoragePos pos = storagePosManager.findPartNumberPos(null,barcode.getPartNumber(),new ArrayList<String>(), StorageConstants.CHECKOUT_TYPE.FIFO); StoragePos pos = storagePosManager.findPartNumberPos(null,barcode.getPartNumber(),new ArrayList<String>(), StorageConstants.CHECKOUT_TYPE.FIFO);
......
...@@ -274,7 +274,7 @@ public class QisdaApi { ...@@ -274,7 +274,7 @@ public class QisdaApi {
AppendInfo appendInfo = barcode.getAppendInfo(); AppendInfo appendInfo = barcode.getAppendInfo();
Object infoObj = resultMap.get("info"); Object infoObj = resultMap.get("info");
if(infoObj != null){ if(infoObj != null){
log.info("写入条码工单数量信息,并清空分盘数据"); log.info("写入条码["+reelid+"]工单数量信息,并清空分盘数据");
Map infoMap = (Map)infoObj; Map infoMap = (Map)infoObj;
String so = infoMap.get("so").toString(); String so = infoMap.get("so").toString();
//有工单信息,需要绑定工单 //有工单信息,需要绑定工单
......
...@@ -185,7 +185,7 @@ public class FileUploadController extends BaseFormController { ...@@ -185,7 +185,7 @@ public class FileUploadController extends BaseFormController {
log.debug("Parse component to list with size: " + list.size()); log.debug("Parse component to list with size: " + list.size());
if (list != null && list.size() > 0) { if (list != null && list.size() > 0) {
for (ComponentExcel componentExcel : list) { for (ComponentExcel componentExcel : list) {
Component component = componentManager.findByPartNumber(componentExcel.getPartNumber(), null); Component component = componentManager.findOneByPn(componentExcel.getPartNumber());
if (component == null) { if (component == null) {
component = new Component(); component = new Component();
} }
...@@ -254,7 +254,7 @@ public class FileUploadController extends BaseFormController { ...@@ -254,7 +254,7 @@ public class FileUploadController extends BaseFormController {
if(partNumber.isEmpty()){ if(partNumber.isEmpty()){
log.warn("行[partNumber="+partNumber + ","+"reelId="+reelId+",qty="+qty+"]中PN 为空,此行忽略"); log.warn("行[partNumber="+partNumber + ","+"reelId="+reelId+",qty="+qty+"]中PN 为空,此行忽略");
}else{ }else{
Component component = componentManager.findByPartNumber(partNumber,""); Component component = componentManager.findOneByPn(partNumber);
if(component == null){ if(component == null){
log.info("未找到["+ partNumber+"]的档案,创建新的数量为["+qty+"]档案"); log.info("未找到["+ partNumber+"]的档案,创建新的数量为["+qty+"]档案");
component = new Component(); component = new Component();
......
...@@ -65,7 +65,7 @@ public class BarcodeGenerateController extends BaseUpdateController { ...@@ -65,7 +65,7 @@ public class BarcodeGenerateController extends BaseUpdateController {
barcode.setStatus(StorageConstants.BARCODE_STATUS.NEW); barcode.setStatus(StorageConstants.BARCODE_STATUS.NEW);
barcode.setUsed(false); barcode.setUsed(false);
//String componentId = barcode.getComponentId(); //String componentId = barcode.getComponentId();
Component component = componentManager.findByPartNumber(barcode.getPartNumber(),barcode.getProvider()); Component component = componentManager.findOneByPn(barcode.getPartNumber());
if(StringUtils.isEmpty(barcode.getBarcode())) { if(StringUtils.isEmpty(barcode.getBarcode())) {
String bs = getUuid(); String bs = getUuid();
......
...@@ -160,12 +160,10 @@ public class OutInfoCache { ...@@ -160,12 +160,10 @@ public class OutInfoCache {
List<StoragePos> bindPosList = storagePosDao.allBindPos(so); List<StoragePos> bindPosList = storagePosDao.allBindPos(so);
for (StoragePos storagePos : bindPosList) { for (StoragePos storagePos : bindPosList) {
storagePosDao.unbindReel(storagePos); storagePosDao.unbindReel(storagePos);
log.info("解除["+storagePos.getBarcode().getBarcode()+"]的工单so=["+so+"]绑定");
count = count + 1; count = count + 1;
log.info("解除["+storagePos.getBarcode().getBarcode()+"]的工单so=["+so+"]绑定,累计解除"+count);
} }
String msg = "工单so=["+so+"]解除绑定完成,共解绑["+count+"]盘"; return "";
log.info(msg);
return msg;
} }
......
...@@ -282,7 +282,7 @@ public class BoxChartController extends BaseController { ...@@ -282,7 +282,7 @@ public class BoxChartController extends BaseController {
List<SolderInventoryItem> results = Lists.newArrayList(); List<SolderInventoryItem> results = Lists.newArrayList();
for (InventoryItem inventoryItem : storageTypeInventory.values()) { for (InventoryItem inventoryItem : storageTypeInventory.values()) {
String partNumber = inventoryItem.getPartNumber(); String partNumber = inventoryItem.getPartNumber();
Component component = componentManager.findByPartNumber(partNumber, ""); Component component = componentManager.findOneByPn(partNumber);
int minStoreNum = component.getMinStoreNum(); int minStoreNum = component.getMinStoreNum();
int maxStoreNum = component.getMaxStoreNum(); int maxStoreNum = component.getMaxStoreNum();
......
...@@ -106,7 +106,7 @@ public class ComponentUpdateController extends BaseUpdateController{ ...@@ -106,7 +106,7 @@ public class ComponentUpdateController extends BaseUpdateController{
if(Strings.isNullOrEmpty(component.getFixtureNumber())){ if(Strings.isNullOrEmpty(component.getFixtureNumber())){
throw new ValidateException("夹具编号不能为空"); throw new ValidateException("夹具编号不能为空");
}else { }else {
Component fixture = componentmanager.findByPartNumber(component.getFixtureNumber(), null); Component fixture = componentmanager.findOneByPn(component.getFixtureNumber());
if(fixture == null){ if(fixture == null){
throw new ValidateException("不存在编号为【"+component.getFixtureNumber()+"】的夹具"); throw new ValidateException("不存在编号为【"+component.getFixtureNumber()+"】的夹具");
}else{ }else{
......
...@@ -209,16 +209,7 @@ public class DataCache{ ...@@ -209,16 +209,7 @@ public class DataCache{
private Component getComponent(Barcode barcode) throws ValidateException { private Component getComponent(Barcode barcode) throws ValidateException {
boolean needSave = false; boolean needSave = false;
Component component = componentManager.findByPartNumber(barcode.getPartNumber(), barcode.getProvider()); Component component = componentManager.findProviderPn(barcode.getPartNumber(),barcode.getProvider());
if(component == null){
component = componentManager.findByPartNumber(barcode.getPartNumber(), null);
if(component != null){
if(component.getProvider() == null){
component.setProvider(barcode.getProvider());
needSave = true;
}
}
}
if(component == null){ if(component == null){
if(barcode.getPlateSize() > 0){ if(barcode.getPlateSize() > 0){
log.info("自动添加["+barcode.getPartNumber()+"]的档案信息"); log.info("自动添加["+barcode.getPartNumber()+"]的档案信息");
......
...@@ -5,6 +5,8 @@ import com.google.common.collect.Lists; ...@@ -5,6 +5,8 @@ import com.google.common.collect.Lists;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
import com.google.common.collect.Sets; import com.google.common.collect.Sets;
import com.myproject.bean.update.*; import com.myproject.bean.update.*;
import com.myproject.bean.utils.BoxStatusBean;
import com.myproject.bean.utils.StatusBean;
import com.myproject.dao.mongo.IDataLogDao; import com.myproject.dao.mongo.IDataLogDao;
import com.myproject.exception.ValidateException; import com.myproject.exception.ValidateException;
import com.myproject.manager.IBarcodeManager; import com.myproject.manager.IBarcodeManager;
...@@ -66,7 +68,7 @@ public class MesApiController extends BaseController { ...@@ -66,7 +68,7 @@ public class MesApiController extends BaseController {
log.info("收到 MES 的 数据同步信息"+Partnumber+"【"+w+"x"+h+"】"); log.info("收到 MES 的 数据同步信息"+Partnumber+"【"+w+"x"+h+"】");
Component c = componentManager.findByPartNumber(Partnumber, null); Component c = componentManager.findOneByPn(Partnumber);
if(c == null){ if(c == null){
c = new Component(); c = new Component();
} }
...@@ -98,7 +100,7 @@ public class MesApiController extends BaseController { ...@@ -98,7 +100,7 @@ public class MesApiController extends BaseController {
String PARTNUMBER = checkParameter(request,"PN"); String PARTNUMBER = checkParameter(request,"PN");
String QTY = checkParameter(request,"QTY"); String QTY = checkParameter(request,"QTY");
log.info("收到条码同步信息:RI="+REEL_ID + " PN=" + PARTNUMBER + " QTY="+QTY); log.info("收到条码同步信息:RI="+REEL_ID + " PN=" + PARTNUMBER + " QTY="+QTY);
Component c = componentManager.findByPartNumber(PARTNUMBER, null); Component c = componentManager.findOneByPn(PARTNUMBER);
if(c == null){ if(c == null){
return "Error: 物料编号[" + PARTNUMBER + "]的档案不存在"; return "Error: 物料编号[" + PARTNUMBER + "]的档案不存在";
} }
...@@ -287,14 +289,30 @@ public class MesApiController extends BaseController { ...@@ -287,14 +289,30 @@ public class MesApiController extends BaseController {
@ResponseBody @ResponseBody
public List<Map<String,Object>> history(HttpServletRequest request) { public List<Map<String,Object>> history(HttpServletRequest request) {
String bid = request.getParameter("bid"); String bid = request.getParameter("bid");
String start = request.getParameter("start"); // String start = request.getParameter("start");
String end = request.getParameter("end"); // String end = request.getParameter("end");
Date startDate = toDate(start); // Date startDate = toDate(start);
Date endDate = toDate(end); // Date endDate = toDate(end);
String numStr = request.getParameter("num");
int num = 20;
if(!Strings.isNullOrEmpty(numStr)){
try{
num = Integer.valueOf(numStr);
}catch (Exception e){
}
}
List<Map<String,Object>> results = Lists.newArrayList(); List<Map<String,Object>> results = Lists.newArrayList();
List<DataLog> datas = dataLogDao.findHistory(bid,startDate,endDate); List<DataLog> datas = dataLogDao.findHistory(bid,num);
datas.sort(new Comparator<DataLog>() {
@Override
public int compare(DataLog o1, DataLog o2) {
return o1.getCreateDate().compareTo(o2.getCreateDate());
}
});
for (DataLog dataItem : datas){ for (DataLog dataItem : datas){
Map<String,Object> item = Maps.newHashMap(); Map<String,Object> item = Maps.newHashMap();
item.put("barcode",dataItem.getBarcode()); item.put("barcode",dataItem.getBarcode());
...@@ -302,7 +320,9 @@ public class MesApiController extends BaseController { ...@@ -302,7 +320,9 @@ public class MesApiController extends BaseController {
item.put("qty",dataItem.getNum()); item.put("qty",dataItem.getNum());
item.put("type", dataItem.getType()); item.put("type", dataItem.getType());
item.put("opor", dataItem.getOperator()); item.put("opor", dataItem.getOperator());
item.put("pos",dataItem.getPosStr()); item.put("boxName",dataItem.getStorageName());
item.put("posName",dataItem.getPosName());
item.put("source",dataItem.getSourceId());
item.put("status", dataItem.getStatus()); item.put("status", dataItem.getStatus());
item.put("date", DateUtil.toDateTimeString(dataItem.getCreateDate())); item.put("date", DateUtil.toDateTimeString(dataItem.getCreateDate()));
results.add(item); results.add(item);
...@@ -310,6 +330,31 @@ public class MesApiController extends BaseController { ...@@ -310,6 +330,31 @@ public class MesApiController extends BaseController {
return results; return results;
} }
@RequestMapping(value = "/status")
@ResponseBody
public Map<String,Object> status(HttpServletRequest request) {
Map<String,Object> results = Maps.newHashMap();
for (Storage storage : dataCache.getAllStorage().values()){
StatusBean statusBean = taskService.getStatus(storage.getCid());
Map<Integer, BoxStatusBean> boxStatusMap = statusBean.getBoxStatus();
int status = -1;
if(boxStatusMap != null){
BoxStatusBean boxStatusBean = boxStatusMap.get(1);
if(boxStatusBean != null){
status = boxStatusBean.getStatus();
}
}
int storageStatus = status;
if(status == StorageConstants.STATUS.OFFLINE || statusBean.timeOut()){
//离线
storageStatus = -1;
}
results.put(storage.getName(), storageStatus);
}
return results;
}
private Date toDate(String dateStr){ private Date toDate(String dateStr){
try { try {
return DateUtil.toDate(dateStr,"yyyyMMddHHmmss"); return DateUtil.toDate(dateStr,"yyyyMMddHHmmss");
......
...@@ -612,23 +612,44 @@ public class QisdaDeviceController extends BaseController { ...@@ -612,23 +612,44 @@ public class QisdaDeviceController extends BaseController {
List<DataLog> allTasks = taskService.getAllTasks(); List<DataLog> allTasks = taskService.getAllTasks();
for (DataLog unFinishedTask : allTasks) { for (DataLog unFinishedTask : allTasks) {
if(!unFinishedTask.isFinished() && !unFinishedTask.isCancel() && unFinishedTask.isCheckOutTask()){ if(!unFinishedTask.isFinished() && !unFinishedTask.isCancel() && unFinishedTask.isCheckOutTask()){
if(unFinishedTask.isCutReel()){
totalCutTask = totalCutTask + 1;
if(unFinishedTask.isPackageReel()){ if(unFinishedTask.isPackageReel()){
if(unFinishedTask.getCid().equals(cid)){ if(unFinishedTask.getCid().equals(cid)){
if(unFinishedTask.isCutReel()){ //当前包装料仓的分盘任务
cutPackageTask = cutPackageTask + 1; cutPackageTask = cutPackageTask + 1;
totalCutTask = totalCutTask + 1;
}else if(unFinishedTask.isUrgentReel()){
urgentPackageTask = urgentPackageTask + 1;
totalUrgentTask = totalUrgentTask + 1;
}
} }
}else if(unFinishedTask.isCutReel()){ }else{
cutTask = cutTask + 1; cutTask = cutTask + 1;
totalCutTask = totalCutTask + 1; }
}else if(unFinishedTask.isUrgentReel()){ }else if(unFinishedTask.isUrgentReel()){
urgentTask = urgentTask + 1;
totalUrgentTask = totalUrgentTask + 1; totalUrgentTask = totalUrgentTask + 1;
if(unFinishedTask.isPackageReel()) {
if (unFinishedTask.getCid().equals(cid)) {
urgentPackageTask = urgentPackageTask + 1;
}
}else{
urgentTask = urgentTask + 1;
}
} }
// if(unFinishedTask.isPackageReel()){
// if(unFinishedTask.getCid().equals(cid)){
// if(unFinishedTask.isCutReel()){
// cutPackageTask = cutPackageTask + 1;
// totalCutTask = totalCutTask + 1;
// }else if(unFinishedTask.isUrgentReel()){
// urgentPackageTask = urgentPackageTask + 1;
// totalUrgentTask = totalUrgentTask + 1;
// }
// }
// }else if(unFinishedTask.isCutReel()){
// cutTask = cutTask + 1;
// totalCutTask = totalCutTask + 1;
// }else if(unFinishedTask.isUrgentReel()){
// urgentTask = urgentTask + 1;
// totalUrgentTask = totalUrgentTask + 1;
// }
} }
} }
......
...@@ -70,14 +70,7 @@ ...@@ -70,14 +70,7 @@
</display:column> </display:column>
<display:column sortProperty="barcode" sortable="true" titleKey="barcode.barcode" media="csv" property="barcode"/> <display:column sortProperty="barcode" sortable="true" titleKey="barcode.barcode" media="csv" property="barcode"/>
<display:column property="partNumber" sortProperty="partNumber" sortable="true" titleKey="barcode.partNumber"/> <display:column property="partNumber" sortProperty="partNumber" sortable="true" titleKey="barcode.partNumber"/>
<!-- 成都凯天--> <display:column property="provider" sortProperty="provider" sortable="true" titleKey="barcode.provider"/>
<c:if test='<%=DataCache.isProductionFor("ChengDuKaiTian") %>'>
<display:column property="otherField2" sortProperty="otherField2" sortable="true" titleKey="产品型号"/>
<display:column property="otherField3" sortProperty="otherField3" sortable="true" titleKey="组件型号"/>
<display:column property="otherField1" sortProperty="otherField1" sortable="true" titleKey="配套单号"/>
<display:column property="otherField4" sortProperty="otherField4" sortable="true" titleKey="元器件型号"/>
<display:column property="otherField5" sortProperty="otherField5" sortable="true" titleKey="检验编号"/>
</c:if>
<display:column property="amount" escapeXml="true" titleKey="barcode.amount"/> <display:column property="amount" escapeXml="true" titleKey="barcode.amount"/>
<display:column titleKey="barcode.plateSize"> <display:column titleKey="barcode.plateSize">
${barcode.plateSize} x ${barcode.height} ${barcode.plateSize} x ${barcode.height}
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!