package com.slcf.service.impl; import java.util.HashMap; import java.util.List; import java.util.Map; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.interceptor.TransactionAspectSupport; import com.slcf.bean.LocDetailCondition; import com.slcf.dao.LocDetailDao; import com.slcf.dao.LocationDao; import com.slcf.dao.MatCodeDao; import com.slcf.dao.StationDao; import com.slcf.dao.WaitPakInDao; import com.slcf.dao.WaitPakOutDao; import com.slcf.dao.WorkFileDao; import com.slcf.dao.WorkNoDao; import com.slcf.pojo.WorkMastBean; import com.slcf.service.OperateService; import com.slcf.service.WaitPakOutService; import com.slcf.util.CommonMethod; import com.slcf.util.DateTimeUtil; import com.slcf.pojo.LocDetailBean; import com.slcf.pojo.LocationBean; import com.slcf.pojo.MatCodeBean; import com.slcf.pojo.StationBean; import com.slcf.pojo.UserBean; import com.slcf.pojo.WaitPakInBean; import com.slcf.pojo.WaitPakOutBean; import com.slcf.pojo.WorkDetailBean; /** * 入出库作业接口实现 * @author admin * @date 2018年12月4日 */ @Service public class OperateServiceImpl implements OperateService { @Autowired WorkFileDao workFileDao; @Autowired MatCodeDao matCodeDao; @Autowired WaitPakInDao waitPakInDao; @Autowired LocationDao locationDao; @Autowired StationDao stationDao; @Autowired WorkNoDao workNoDao; @Autowired LocDetailDao locDetailDao; @Autowired WaitPakOutDao waitPakOutDao; @Autowired WaitPakOutService waitPakOutService; /** * 入库作业 */ @Transactional public Map insertPakStoreIn(WorkMastBean workMast,String[] detls, StationBean station,UserBean user) throws Exception{ Map map=new HashMap(); try { //插入workDetail if(detls!=null) { for(String str : detls) { String[] arr = str.split(";"); if(arr!=null && arr.length>2) { String sheet_no = arr[0]; String mat_no = arr[1]; int store_qty = Integer.parseInt(arr[2]); WorkDetailBean workDetl = new WorkDetailBean(); workDetl.setWrk_no(workMast.getWrk_no()); workDetl.setMat_no(mat_no); workDetl.setIo_time(workMast.getIo_time()); workDetl.setModi_user(user.getUser_account()); int result=0; WorkDetailBean detl = workFileDao.getWorkDetlByIdNo(workMast.getWrk_no(),mat_no); if(detl==null) {//插入 workDetl.setQty(store_qty); result = workFileDao.insertWorkDetail(workDetl); }else {//修改,数量相加 workDetl.setQty(store_qty + detl.getQty()); result = workFileDao.upWorkDetail(workDetl); } if(result>0) { WaitPakInBean bean = new WaitPakInBean(); bean.setSheet_no(sheet_no); bean.setMat_no(mat_no); WaitPakInBean waitPakIn = waitPakInDao.getWaitPakInById(bean); if(waitPakIn!=null) { int in_qty = waitPakIn.getIn_qty() + store_qty; waitPakIn.setIn_qty(in_qty); if(in_qty>=waitPakIn.getQty()) { waitPakIn.setIo_status("Y"); } result = waitPakInDao.upWaitPakIn(waitPakIn); }else { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); map.put("code", 1); map.put("msg", "查询通知档待入库资料失败:单号--" + sheet_no + "\n物料编号--" + mat_no); return map; } }else { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); map.put("code", 1); map.put("msg", "插入工作明细档失败:" + workDetl.getMat_no()); return map; } }else { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); map.put("code", 1); map.put("msg", "无入库明细数据"); return map; } } } else { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); map.put("code", 1); map.put("msg", "无入库明细数据"); return map; } //插入workMast int result = workFileDao.insertWorkMast(workMast); if(result>0) { station.setWrk_no(workMast.getWrk_no()); station.setIn_enable(station.getIn_enable()); station.setOut_enable(station.getOut_enable()); station.setBarcode(station.getBarcode()); station.setDec_desc(station.getDec_desc()); station.setModi_user(user.getUser_account()); result = stationDao.upStation(station); if(result<=0) { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); map.put("code", 1); map.put("msg", "更新设备档失败:" + station.getDev_no()); return map; } LocationBean location = locationDao.getLocationById(workMast.getLoc_no()); if(location!=null) { if(location.getLoc_sts().equals("O")) { location.setLoc_sts("S"); location.setModi_user(user.getUser_account()); result = locationDao.upLocation(location); if(result<=0) { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); map.put("code", 1); map.put("msg", "预约库位状态失败:" + workMast.getLoc_no()); return map; } }else { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); map.put("code", 1); map.put("msg", "预约库位状态失败,库位号不存在:" + workMast.getLoc_no()); return map; } } }else { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); map.put("code", 1); map.put("msg", "插入工作主档失败"); return map; } map.put("code", 0); map.put("msg", "库位号:" + workMast.getLoc_no()); return map; }catch(Exception e) { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); System.out.println(e.getMessage()); map.put("code", 1); map.put("msg", "启动入库失败--" + e.getMessage()); } return map; } /** * 空托盘入库作业 */ @Transactional public Map insertEmptyStoreIn(WorkMastBean workMast, StationBean station,UserBean user) throws Exception{ Map map=new HashMap(); try { //插入workMast int result = workFileDao.insertWorkMast(workMast); if(result>0) { station.setWrk_no(workMast.getWrk_no()); station.setIn_enable(station.getIn_enable()); station.setOut_enable(station.getOut_enable()); station.setBarcode(station.getBarcode()); station.setDec_desc(station.getDec_desc()); station.setModi_user(user.getUser_account()); result = stationDao.upStation(station); if(result<=0) { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); map.put("code", 1); map.put("msg", "更新设备档失败:" + station.getDev_no()); return map; } LocationBean location = locationDao.getLocationById(workMast.getLoc_no()); if(location!=null) { if(location.getLoc_sts().equals("O")) { location.setLoc_sts("S"); location.setModi_user(user.getUser_account()); result = locationDao.upLocation(location); if(result<=0) { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); map.put("code", 1); map.put("msg", "预约库位状态失败:" + workMast.getLoc_no()); return map; } }else { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); map.put("code", 1); map.put("msg", "预约库位状态失败,库位号不存在:" + workMast.getLoc_no()); return map; } } }else { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); map.put("code", 1); map.put("msg", "插入工作主档失败"); return map; } map.put("code", 0); map.put("msg", "库位号:" + workMast.getLoc_no()); return map; }catch(Exception e) { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); System.out.println(e.getMessage()); map.put("code", 1); map.put("msg", "启动入库失败--" + e.getMessage()); } return map; } /** * 空托盘出库作业 */ @Transactional public Map insertemptyRetrieve(WorkMastBean workMast,String[] locs, int stn_no,UserBean user, CommonMethod commonMethod) throws Exception{ Map map=new HashMap(); try { int result = 0; //插入workDetail if(locs!=null) { for(String loc_no : locs) { int wrk_no = commonMethod.getNewWorkNo(workNoDao.getWorkNoById(0)); if(wrk_no<=0) { map.put("code", 1); map.put("msg", "生成工作号失败,请联系管理员"); return map; }else { WorkMastBean workFile = workFileDao.getWorkMastById(wrk_no); if(workFile!=null) { map.put("code", 1); map.put("msg", "生成工作号" + wrk_no + "在工作档中已存在"); return map; } } int crn_no = Integer.parseInt(loc_no.substring(0,2)); crn_no = (crn_no + 1) / 2; int s_staNo = commonMethod.getIoStaNo(110,crn_no,stn_no); if(s_staNo<=0) { map.put("code", 1); map.put("msg", "获取堆垛机站点失败"); return map; } String io_time = DateTimeUtil.getStringDateTime(19); workMast.setWrk_no(wrk_no); workMast.setIo_time(io_time); workMast.setCrn_no(crn_no); workMast.setSource_sta_no(s_staNo); workMast.setSta_no(stn_no); workMast.setSource_loc_no(loc_no); //插入workMast result = workFileDao.insertWorkMast(workMast); if(result>0) { LocationBean location = locationDao.getLocationById(workMast.getSource_loc_no()); if(location!=null) { if(location.getLoc_sts().equals("D")) { location.setLoc_sts("R"); location.setModi_user(user.getUser_account()); result = locationDao.upLocation(location); if(result<=0) { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); map.put("code", 1); map.put("msg", "预约库位状态失败:" + workMast.getSource_loc_no()); return map; } }else { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); map.put("code", 1); map.put("msg", "预约库位状态失败,库位号不存在:" + workMast.getSource_loc_no()); return map; } } }else { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); map.put("code", 1); map.put("msg", "插入工作主档失败"); return map; } } } map.put("code", 0); map.put("msg", "库位号:" + workMast.getSource_loc_no()); return map; }catch(Exception e) { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); System.out.println(e.getMessage()); map.put("code", 1); map.put("msg", "启动入库失败--" + e.getMessage()); } return map; } /** * 库位移转 */ @Transactional public Map insertLocMove(WorkMastBean workMast,String old_loc_no, String new_loc_no,UserBean user) throws Exception{ Map map=new HashMap(); try { LocDetailCondition locationCon = new LocDetailCondition(); locationCon.setLoc_no(old_loc_no); List list = locDetailDao.getLocDetailAll(locationCon); //插入workDetail if(list!=null && list.size()>0) { for(LocDetailBean locDetail : list) { WorkDetailBean workDetl = new WorkDetailBean(); workDetl.setWrk_no(workMast.getWrk_no()); workDetl.setMat_no(locDetail.getMat_no()); workDetl.setIo_time(workMast.getIo_time()); workDetl.setQty(locDetail.getQty()); // workDetl.setCtns(locDetail.getCtns()); // workDetl.setWt(locDetail.getWt()); workDetl.setModi_user(user.getUser_account()); int result = workFileDao.insertWorkDetail(workDetl); if(result<=0) { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); map.put("code", 1); map.put("msg", "插入工作明细档失败:" + workDetl.getMat_no()); return map; } } } //插入workMast int result = workFileDao.insertWorkMast(workMast); if(result>0) { LocationBean slocation = locationDao.getLocationById(workMast.getSource_loc_no()); if(slocation!=null) { if(slocation.getLoc_sts().equals("F") || slocation.getLoc_sts().equals("D")) { slocation.setLoc_sts("R"); slocation.setModi_user(user.getUser_account()); result = locationDao.upLocation(slocation); if(result<=0) { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); map.put("code", 1); map.put("msg", "预约原库位状态失败:" + workMast.getSource_loc_no()); return map; } }else { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); map.put("code", 1); map.put("msg", "预约原库位状态失败,库位号不存在:" + workMast.getLoc_no()); return map; } } LocationBean location = locationDao.getLocationById(workMast.getLoc_no()); if(location!=null) { if(location.getLoc_sts().equals("O")) { location.setLoc_sts("S"); location.setModi_user(user.getUser_account()); result = locationDao.upLocation(location); if(result<=0) { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); map.put("code", 1); map.put("msg", "预约新库位状态失败:" + workMast.getLoc_no()); return map; } }else { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); map.put("code", 1); map.put("msg", "预约新库位状态失败,库位号不存在:" + workMast.getLoc_no()); return map; } } }else { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); map.put("code", 1); map.put("msg", "插入工作主档失败"); return map; } map.put("code", 0); map.put("msg", "库位号:" + workMast.getSource_loc_no() + "-->" + workMast.getLoc_no()); return map; }catch(Exception e) { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); System.out.println(e.getMessage()); map.put("code", 1); map.put("msg", "启动库位移转失败--" + e.getMessage()); } return map; } /** * 指定库位盘点作业 */ @Transactional public Map insertLocCheck(String value, int stn_no,UserBean user, CommonMethod commonMethod) throws Exception{ Map map=new HashMap(); try { String loc_no = value; String io_time = DateTimeUtil.getStringDateTime(19); //插入workDetail int wrk_no = commonMethod.getNewWorkNo(workNoDao.getWorkNoById(0)); if(wrk_no<=0) { map.put("code", 1); map.put("msg", "生成工作号失败,请联系管理员"); return map; }else { WorkMastBean workFile = workFileDao.getWorkMastById(wrk_no); if(workFile!=null) { map.put("code", 1); map.put("msg", "生成工作号" + wrk_no + "在工作档中已存在"); return map; } } LocDetailCondition locationCon = new LocDetailCondition(); locationCon.setLoc_no(loc_no); List list = locDetailDao.getLocDetailAll(locationCon); //插入workDetail if(list!=null && list.size()>0) { for(LocDetailBean locDetail : list) { WorkDetailBean workDetl = new WorkDetailBean(); workDetl.setWrk_no(wrk_no); workDetl.setMat_no(locDetail.getMat_no()); workDetl.setIo_time(io_time); workDetl.setQty(locDetail.getQty()); workDetl.setModi_user(user.getUser_account()); int result = workFileDao.insertWorkDetail(workDetl); if(result<=0) { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); map.put("code", 1); map.put("msg", "插入工作明细档失败:" + workDetl.getMat_no()); return map; } } } WorkMastBean workMast = new WorkMastBean(); int crn_no = Integer.parseInt(loc_no.substring(0,2)); crn_no = (crn_no + 1) / 2; int s_staNo = commonMethod.getIoStaNo(107,crn_no,stn_no); if(s_staNo<=0) { map.put("code", 1); map.put("msg", "获取堆垛机站点失败"); return map; } workMast.setWrk_no(wrk_no); workMast.setIo_time(io_time); workMast.setWrk_sts(11); workMast.setIo_type(107); workMast.setIo_pri(13); workMast.setCrn_no(crn_no); workMast.setSource_sta_no(s_staNo); workMast.setSta_no(stn_no); workMast.setSource_loc_no(loc_no); workMast.setFull_plt("N"); workMast.setPicking("N"); workMast.setExit_mk("N"); workMast.setEmpty_mk("N"); workMast.setLink_mis("N"); workMast.setModi_user(user.getUser_account()); //插入workMast int result = workFileDao.insertWorkMast(workMast); if(result>0) { LocationBean location = locationDao.getLocationById(workMast.getSource_loc_no()); if(location!=null) { if(location.getLoc_sts().equals("F")) { location.setLoc_sts("P"); location.setModi_user(user.getUser_account()); result = locationDao.upLocation(location); if(result<=0) { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); map.put("code", 1); map.put("msg", "预约库位状态失败:" + workMast.getSource_loc_no()); return map; } }else { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); map.put("code", 1); map.put("msg", "预约库位状态失败,库位号不存在:" + workMast.getSource_loc_no()); return map; } }else { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); map.put("code", 1); map.put("msg", "库位号不存在:" + workMast.getSource_loc_no()); return map; } }else { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); map.put("code", 1); map.put("msg", "插入工作主档失败"); return map; } map.put("code", 0); // map.put("msg", "库位号:" + workMast.getSource_loc_no()); map.put("msg", ""); return map; }catch(Exception e) { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); System.out.println(e.getMessage()); map.put("code", 1); map.put("msg", "启动盘点失败--" + e.getMessage()); } return map; } /** * 并板作业 */ @Transactional public Map insertPakCombine(WorkMastBean workMast,String[] detls, UserBean user) throws Exception{ Map map=new HashMap(); try { //插入workDetail if(detls!=null) { for(String str : detls) { String[] arr = str.split(";"); if(arr!=null && arr.length>2) { String sheet_no = arr[0]; String mat_no = arr[1]; int store_qty = Integer.parseInt(arr[2]); WorkDetailBean workDetl = new WorkDetailBean(); workDetl.setWrk_no(workMast.getWrk_no()); workDetl.setMat_no(mat_no); workDetl.setIo_time(workMast.getIo_time()); workDetl.setModi_user(user.getUser_account()); int result=0; WorkDetailBean detl = workFileDao.getWorkDetlByIdNo(workMast.getWrk_no(),mat_no); if(detl==null) {//插入 workDetl.setQty(store_qty); result = workFileDao.insertWorkDetail(workDetl); }else {//修改,数量相加 workDetl.setQty(store_qty + detl.getQty()); result = workFileDao.upWorkDetail(workDetl); } if(result>0) { WaitPakInBean bean = new WaitPakInBean(); bean.setSheet_no(sheet_no); bean.setMat_no(mat_no); WaitPakInBean waitPakIn = waitPakInDao.getWaitPakInById(bean); if(waitPakIn!=null) { int in_qty = waitPakIn.getIn_qty() + store_qty; waitPakIn.setIn_qty(in_qty); if(in_qty>=waitPakIn.getQty()) { waitPakIn.setIo_status("Y"); } result = waitPakInDao.upWaitPakIn(waitPakIn); }else { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); map.put("code", 1); map.put("msg", "查询通知档待入库资料失败:单号--" + sheet_no + "\n物料编号--" + mat_no); return map; } }else { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); map.put("code", 1); map.put("msg", "插入工作明细档失败:" + workDetl.getMat_no()); return map; } }else { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); map.put("code", 1); map.put("msg", "无入库明细数据"); return map; } } } //插入workMast int result = workFileDao.insertWorkMast(workMast); if(result>0) { LocationBean location = locationDao.getLocationById(workMast.getSource_loc_no()); if(location!=null) { if(location.getLoc_sts().equals("F")) { location.setLoc_sts("P"); location.setModi_user(user.getUser_account()); result = locationDao.upLocation(location); if(result<=0) { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); map.put("code", 1); map.put("msg", "预约库位状态失败:" + workMast.getSource_loc_no()); return map; } }else { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); map.put("code", 1); map.put("msg", "预约库位状态失败,库位号不存在:" + workMast.getSource_loc_no()); return map; } } }else { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); map.put("code", 1); map.put("msg", "插入工作主档失败"); return map; } map.put("code", 0); map.put("msg", "库位号:" + workMast.getSource_loc_no()); return map; }catch(Exception e) { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); System.out.println(e.getMessage()); map.put("code", 1); map.put("msg", "启动并板失败--" + e.getMessage()); } return map; } /** * 出库作业 */ @Transactional public Map insertPakRetrieve(String loc_no, String[] detls, int stn_no,UserBean user, CommonMethod commonMethod) throws Exception{ Map map=new HashMap(); try { String io_time = DateTimeUtil.getStringDateTime(19); //插入workDetail int wrk_no = commonMethod.getNewWorkNo(workNoDao.getWorkNoById(1)); if(wrk_no<=0) { map.put("code", 1); map.put("msg", "生成工作号失败,请联系管理员"); return map; }else { WorkMastBean workFile = workFileDao.getWorkMastById(wrk_no); if(workFile!=null) { map.put("code", 1); map.put("msg", "生成工作号" + wrk_no + "在工作档中已存在"); return map; } } // int qty=0; //插入workDetail if(detls!=null) { for(String str : detls) { String[] arr = str.split(";"); if(arr!=null && arr.length>4) { if(!loc_no.equals(arr[0])) { continue; } String matnr = arr[1]; String lgnum = arr[2]; String tbnum = arr[3]; String tbpos = arr[4]; LocDetailBean locDetl = locDetailDao.getLocDetailById(loc_no,matnr); WorkDetailBean workDetl = new WorkDetailBean(); workDetl.setWrk_no(wrk_no); workDetl.setMatnr(matnr); workDetl.setLgnum(lgnum); workDetl.setTbnum(Integer.parseInt(tbnum)); workDetl.setTbpos(Integer.parseInt(tbpos)); workDetl.setZmatid(locDetl.getZmatid()); workDetl.setMaktx(locDetl.getMaktx()); workDetl.setWerks(locDetl.getWerks()); workDetl.setAnfme(locDetl.getAnfme()); workDetl.setAltme(locDetl.getAltme()); workDetl.setBname(locDetl.getBname()); workDetl.setZpallet(locDetl.getZpallet()); workDetl.setIo_time(io_time); // workDetl.setQty(retrieve_qty); workDetl.setModi_user(user.getUser_account()); int result=workFileDao.insertWorkDetail(workDetl); if(result>0) { // WaitPakOutBean waitPakOut = new WaitPakOutBean(); // int random = (int)(Math.random()*900 + 100); // waitPakOut.setSheet_no(DateTimeUtil.getStringDateTime(14)+Integer.toString(random)); // waitPakOut.setMat_no(mat_no); // waitPakOut.setQty(retrieve_qty); // waitPakOut.setOut_qty(retrieve_qty); // waitPakOut.setStatus("Y"); // waitPakOut.setIo_status("Y"); // waitPakOut.setType("ASRS"); // waitPakOut.setModi_user(user.getUser_account()); // result = waitPakOutDao.insertWaitPakOut(waitPakOut); }else { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); map.put("code", 1); map.put("msg", "插入工作明细档失败:" + workDetl.getMat_no()); return map; } // qty = qty + retrieve_qty; }else { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); map.put("code", 1); map.put("msg", "无入库明细数据"); return map; } } }else { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); map.put("code", 1); map.put("msg", "无入库明细数据"); return map; } WorkMastBean workMast = new WorkMastBean(); int crn_no = Integer.parseInt(loc_no.substring(0,2)); crn_no = (crn_no + 1) / 2; String loc_sts=""; // int stk_qty = locDetailDao.getStockQtyByLoc(loc_no); int s_staNo = commonMethod.getIoStaNo(101,crn_no,stn_no); if(s_staNo<=0) { map.put("code", 1); map.put("msg", "获取堆垛机站点失败"); return map; } workMast.setSource_sta_no(s_staNo); workMast.setSta_no(stn_no); workMast.setIo_type(101); workMast.setPicking("N"); loc_sts = "R"; workMast.setWrk_no(wrk_no); workMast.setIo_time(io_time); workMast.setWrk_sts(11); workMast.setIo_pri(13); workMast.setCrn_no(crn_no); workMast.setSource_loc_no(loc_no); workMast.setFull_plt("Y"); workMast.setExit_mk("N"); workMast.setEmpty_mk("N"); workMast.setLink_mis("N"); workMast.setModi_user(user.getUser_account()); //插入workMast int result = workFileDao.insertWorkMast(workMast); if(result>0) { LocationBean location = locationDao.getLocationById(loc_no); if(location!=null) { if(location.getLoc_sts().equals("F")) { location.setLoc_sts(loc_sts); location.setModi_user(user.getUser_account()); result = locationDao.upLocation(location); if(result<=0) { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); map.put("code", 1); map.put("msg", "预约库位状态失败:" + loc_no); return map; } }else { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); map.put("code", 1); map.put("msg", "预约库位状态失败,库位号不存在:" + loc_no); return map; } } }else { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); map.put("code", 1); map.put("msg", "插入工作主档失败"); return map; } map.put("code", 0); map.put("msg", ""); return map; }catch(Exception e) { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); System.out.println(e.getMessage()); map.put("code", 1); map.put("msg", "启动失败--" + e.getMessage()); } return map; } /** * 预约出库->出库作业 */ @Transactional public Map insertPakRetrieve1(String loc_no, String[] detls, int stn_no,UserBean user, CommonMethod commonMethod) throws Exception{ Map map=new HashMap(); try { String io_time = DateTimeUtil.getStringDateTime(19); String mat_no = ""; //插入workDetail int wrk_no = commonMethod.getNewWorkNo(workNoDao.getWorkNoById(1)); if(wrk_no<=0) { map.put("code", 1); map.put("msg", "生成工作号失败,请联系管理员"); return map; }else { WorkMastBean workFile = workFileDao.getWorkMastById(wrk_no); if(workFile!=null) { map.put("code", 1); map.put("msg", "生成工作号" + wrk_no + "在工作档中已存在"); return map; } } // int qty=0; //插入workDetail if(detls!=null) { for(String str : detls) { String[] arr = str.split(";"); if(arr!=null && arr.length>1) { if(!loc_no.equals(arr[0])) { continue; } mat_no = arr[1]; WorkDetailBean workDetl = new WorkDetailBean(); workDetl.setWrk_no(wrk_no); workDetl.setMat_no(mat_no); workDetl.setIo_time(io_time); // workDetl.setQty(retrieve_qty); workDetl.setModi_user(user.getUser_account()); int result=workFileDao.insertWorkDetail(workDetl); if(result>0) { }else { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); map.put("code", 1); map.put("msg", "插入工作明细档失败:" + workDetl.getMat_no()); return map; } // qty = qty + retrieve_qty; }else { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); map.put("code", 1); map.put("msg", "无入库明细数据"); return map; } } }else { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); map.put("code", 1); map.put("msg", "无入库明细数据"); return map; } WorkMastBean workMast = new WorkMastBean(); int crn_no = Integer.parseInt(loc_no.substring(0,2)); crn_no = (crn_no + 1) / 2; String loc_sts=""; // int stk_qty = locDetailDao.getStockQtyByLoc(loc_no); int s_staNo = commonMethod.getIoStaNo(101,crn_no,stn_no); if(s_staNo<=0) { map.put("code", 1); map.put("msg", "获取堆垛机站点失败"); return map; } workMast.setSource_sta_no(s_staNo); workMast.setSta_no(stn_no); workMast.setIo_type(101); workMast.setPicking("N"); loc_sts = "R"; workMast.setWrk_no(wrk_no); workMast.setIo_time(io_time); workMast.setWrk_sts(11); WaitPakOutBean waitPakOutBean = waitPakOutService.queryWaitPakOutByMatNo(mat_no); if(waitPakOutBean!=null) { workMast.setIo_pri(waitPakOutBean.getCtns()); } // workMast.setIo_pri(13); workMast.setCrn_no(crn_no); workMast.setSource_loc_no(loc_no); workMast.setFull_plt("Y"); workMast.setExit_mk("N"); workMast.setEmpty_mk("N"); workMast.setLink_mis("N"); workMast.setModi_user(user.getUser_account()); //插入workMast int result = workFileDao.insertWorkMast(workMast); if(result>0) { LocationBean location = locationDao.getLocationById(loc_no); if(location!=null) { if(location.getLoc_sts().equals("L")) { location.setLoc_sts(loc_sts); location.setModi_user(user.getUser_account()); result = locationDao.upLocation(location); if(result>0) { //更新待出库档 // WaitPakOutBean waitPakOutBean = waitPakOutDao.getWaitPakOutByMatNo(mat_no); if(waitPakOutBean!=null) { waitPakOutBean.setIo_status("2"); waitPakOutBean.setModi_time(io_time); result=waitPakOutDao.upWaitPakOutByLocNo(waitPakOutBean); } }else { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); map.put("code", 1); map.put("msg", "预约库位状态失败:" + loc_no); return map; } }else { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); map.put("code", 1); map.put("msg", "预约库位状态失败,库位号不存在:" + loc_no); return map; } } }else { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); map.put("code", 1); map.put("msg", "插入工作主档失败"); return map; } map.put("code", 0); map.put("msg", ""); return map; }catch(Exception e) { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); System.out.println(e.getMessage()); map.put("code", 1); map.put("msg", "启动失败--" + e.getMessage()); } return map; } /** * 手持端入库作业 */ @Transactional public Map insertApiStoreIn(WorkMastBean workMast,String barcode, StationBean station,UserBean user) throws Exception{ Map map=new HashMap(); try { //插入workDetail MatCodeBean matCode = matCodeDao.getMatCodeByBarcode(barcode); if(matCode!=null) { WorkDetailBean workDetl = new WorkDetailBean(); workDetl.setWrk_no(workMast.getWrk_no()); workDetl.setMat_no(matCode.getMat_no()); workDetl.setIo_time(workMast.getIo_time()); workDetl.setModi_user(user.getUser_account()); int result=0; result = workFileDao.insertWorkDetail(workDetl); if(result<=0) { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); map.put("code", 1); map.put("msg", "插入工作明细档失败:" + workDetl.getMat_no()); return map; } }else { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); map.put("code", 1); map.put("msg", "条码数据为空"); return map; } // List list = waitPakInDao.getApiWaitPakInList(barcode); // if(list!=null && list.size()>0) { // for(WaitPakInBean pak : list) { // WorkDetailBean workDetl = new WorkDetailBean(); // workDetl.setWrk_no(workMast.getWrk_no()); // workDetl.setMat_no(pak.getMat_no()); // workDetl.setIo_time(workMast.getIo_time()); // workDetl.setModi_user(user.getUser_account()); // workDetl.setQty(pak.getQty()); // int result=0; // result = workFileDao.insertWorkDetail(workDetl); // // if(result>0) { // pak.setIn_qty(pak.getQty()); // result = waitPakInDao.upWaitPakIn(pak); // }else { // TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); // map.put("code", 1); // map.put("msg", "插入工作明细档失败:" + workDetl.getMat_no()); // return map; // } // } // }else { // TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); // map.put("code", 1); // map.put("msg", "条码数据为空"); // return map; // } //插入workMast workMast.setBarcode(barcode); int result = workFileDao.insertWorkMast(workMast); if(result>0) { station.setWrk_no(workMast.getWrk_no()); station.setIn_enable(station.getIn_enable()); station.setOut_enable(station.getOut_enable()); station.setBarcode(station.getBarcode()); station.setDec_desc(station.getDec_desc()); station.setModi_user(user.getUser_account()); result = stationDao.upStation(station); if(result<=0) { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); map.put("code", 1); map.put("msg", "更新设备档失败:" + station.getDev_no()); return map; } LocationBean location = locationDao.getLocationById(workMast.getLoc_no()); if(location!=null) { if(location.getLoc_sts().equals("O")) { location.setLoc_sts("S"); location.setModi_user(user.getUser_account()); result = locationDao.upLocation(location); if(result<=0) { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); map.put("code", 1); map.put("msg", "预约库位状态失败:" + workMast.getLoc_no()); return map; } }else { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); map.put("code", 1); map.put("msg", "预约库位状态失败,库位号不存在:" + workMast.getLoc_no()); return map; } } }else { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); map.put("code", 1); map.put("msg", "插入工作主档失败"); return map; } map.put("code", 0); map.put("msg", "库位号:" + workMast.getLoc_no()); return map; }catch(Exception e) { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); System.out.println(e.getMessage()); map.put("code", 1); map.put("msg", "启动入库失败--" + e.getMessage()); } return map; } /** * 手持端出库作业 */ @Transactional public Map insertApiPakRetrieve(String loc_no, int stn_no,UserBean user, CommonMethod commonMethod, String barcode) throws Exception{ Map map=new HashMap(); try { String io_time = DateTimeUtil.getStringDateTime(19); //插入workDetail int wrk_no = commonMethod.getNewWorkNo(workNoDao.getWorkNoById(1)); if(wrk_no<=0) { map.put("code", 1); map.put("msg", "生成工作号失败,请联系管理员"); return map; }else { WorkMastBean workFile = workFileDao.getWorkMastById(wrk_no); if(workFile!=null) { map.put("code", 1); map.put("msg", "生成工作号" + wrk_no + "在工作档中已存在"); return map; } } //插入workDetail List list = locDetailDao.getLocDetlByLoc(loc_no); if(list!=null && list.size()>0) { for(LocDetailBean detl : list) { WorkDetailBean workDetl = new WorkDetailBean(); workDetl.setWrk_no(wrk_no); workDetl.setMat_no(detl.getMat_no()); workDetl.setIo_time(io_time); workDetl.setQty(detl.getQty()); workDetl.setModi_user(user.getUser_account()); int result=workFileDao.insertWorkDetail(workDetl); if(result>0) { // WaitPakOutBean waitPakOut = new WaitPakOutBean(); // int random = (int)(Math.random()*900 + 100); // waitPakOut.setSheet_no(DateTimeUtil.getStringDateTime(14)+Integer.toString(random)); // waitPakOut.setMat_no(detl.getMat_no()); // waitPakOut.setQty(detl.getQty()); // waitPakOut.setOut_qty(detl.getQty()); // waitPakOut.setStatus("Y"); // waitPakOut.setIo_status("Y"); // waitPakOut.setType("ASRS"); // waitPakOut.setModi_user(user.getUser_account()); // result = waitPakOutDao.insertWaitPakOut(waitPakOut); }else { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); map.put("code", 1); map.put("msg", "插入工作明细档失败:" + workDetl.getMat_no()); return map; } } }else { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); map.put("code", 1); map.put("msg", "无库存明细数据"); return map; } WorkMastBean workMast = new WorkMastBean(); int crn_no = Integer.parseInt(loc_no.substring(0,2)); crn_no = (crn_no+1) / 2 ; int s_staNo = commonMethod.getIoStaNo(101,crn_no,stn_no); if(s_staNo<=0) { map.put("code", 1); map.put("msg", "获取堆垛机站点失败"); return map; } workMast.setSource_sta_no(s_staNo); workMast.setSta_no(stn_no); workMast.setIo_type(101); workMast.setPicking("N"); workMast.setWrk_no(wrk_no); workMast.setIo_time(io_time); workMast.setWrk_sts(11); workMast.setIo_pri(13); workMast.setCrn_no(crn_no); workMast.setSource_loc_no(loc_no); workMast.setFull_plt("Y"); workMast.setExit_mk("N"); workMast.setEmpty_mk("N"); workMast.setLink_mis("N"); workMast.setModi_user(user.getUser_account()); if(barcode!=null && !barcode.equals("")) { workMast.setBarcode(barcode); } //插入workMast int result = workFileDao.insertWorkMast(workMast); if(result>0) { LocationBean location = locationDao.getLocationById(loc_no); if(location!=null) { if(location.getLoc_sts().equals("F")) { location.setLoc_sts("R"); location.setModi_user(user.getUser_account()); result = locationDao.upLocation(location); if(result<=0) { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); map.put("code", 1); map.put("msg", "预约库位状态失败:" + loc_no); return map; } }else { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); map.put("code", 1); map.put("msg", "预约库位状态失败,库位号不存在:" + loc_no); return map; } } }else { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); map.put("code", 1); map.put("msg", "插入工作主档失败"); return map; } map.put("code", 0); map.put("msg", ""); return map; }catch(Exception e) { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); System.out.println(e.getMessage()); map.put("code", 1); map.put("msg", "启动失败--" + e.getMessage()); } return map; } }