package com.bonus.lease.service; import java.text.DecimalFormat; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import com.bonus.bm.beans.LogBean; import com.bonus.bm.dao.LogDao; import com.bonus.core.DateTimeHelper; import com.bonus.core.StringHelper; import com.bonus.core.exception.ZeroAffectRowsException; import com.bonus.lease.beans.OutStorageBean; import com.bonus.lease.beans.ReceiveDetailsBean; import com.bonus.lease.dao.OutStorageDao; import com.bonus.lease.dao.ReceiveDetailsDao; import com.bonus.ma.beans.MachineBean; import com.bonus.ma.beans.MachineTypeBean; import com.bonus.ma.dao.MachineDao; import com.bonus.ma.dao.MachineTypeDao; import com.bonus.newSettlement.beans.MaTypeProjectStorageBean; import com.bonus.newSettlement.dao.MaTypeProjectStorageDao; import com.bonus.sys.BaseServiceImp; import com.bonus.sys.Page; import com.bonus.sys.UserShiroHelper; import com.bonus.sys.beans.UserBean; import com.bonus.wf.beans.TaskRecordBean; import com.bonus.wf.dao.TaskRecordDao; @Service("out") public class OutStorageServiceImp extends BaseServiceImp implements OutStorageService { @Autowired OutStorageDao dao; @Autowired TaskRecordDao trDao; @Autowired MachineDao maDao; @Autowired MachineTypeDao mtDao; @Autowired ReceiveDetailsDao rdDao; @Autowired MaTypeProjectStorageDao storageDao; @Autowired LogDao logDao; @Override public void buildAuditingTask(OutStorageBean o) { dao.isSure(o); // 修改出库任务状态 updateIsFinish(o); } // 修改出库任务状态 public void updateIsFinish(OutStorageBean o) { List list = dao.findIsSureInfo(o); if (list != null && list.size() > 0) { return; } else { TaskRecordBean bean = new TaskRecordBean(); bean.setId(o.getTaskId()); bean.setIsFinish("1"); trDao.update(bean); } } /* * 生成审核任务 * * 暂时不用 **/ public void addAuditingTask(OutStorageBean o) { OutStorageBean bean = dao.findByTaskId(o); TaskRecordBean trBean = new TaskRecordBean(); trBean.setOperationTime(DateTimeHelper.getNowTime()); trBean.setOperationUserId(o.getOutPersonId()); trBean.setDefinitionId("6"); trBean.setProcessId("2"); trBean.setIsFinish("0"); trBean.setTaskId(bean.getTaskId()); trDao.insert(trBean); } @Override public String isExamine(OutStorageBean o) { String res = ""; try { UserBean user = UserShiroHelper.getRealCurrentUser(); int userId = user.getId(); o.setExamineUser(userId+""); dao.isExamine(o); //updateStatus(o); res = "1"; } catch (Exception e) { logger.error(e.toString(), e); res = "-1"; } return res; } /** * * @param o */ public void updateStatus(OutStorageBean o) { MachineTypeBean mtBean = new MachineTypeBean(); mtBean.setMaModelId(o.getMaModelId()); MachineTypeBean mBean = mtDao.findByModelId(mtBean); if ("0".equals(mBean.getIsCount())) { List list = dao.findCodeByModel(o); MachineBean maBean = new MachineBean(); for (OutStorageBean bean : list) { maBean.setTypeId(o.getMaModelId()); maBean.setDeviceCode(bean.getMaCode()); maBean.setBatchStatus("15");// 出库审核通过待批准 maDao.updateMachineStatus(maBean); } } else { return; } } @Override public String isApproval(OutStorageBean o) { String taskId=o.getTaskId(); String maModelId=o.getMaModelId(); String res = ""; try { //1、数据校验 //数据一致性校验 o.setTaskId(taskId); o.setMaModelId(maModelId); List sameList = dao.getSameInfo(o); if(sameList==null || sameList.size()<=0 ) { return "-1"; } //查询数据是否被记录 o.setTaskId(taskId); o.setMaModelId(maModelId); List repeatlist = dao.getRepeatInfo(o); if(repeatlist != null && repeatlist.size()>0) { return "-1"; } //库存不足校验 LogBean logBean= new LogBean(); logBean.setModel("领料出库"); logBean.setFun("isApproval"); logBean.setTask(taskId); logBean.setTypeId(maModelId); LogBean inBean=logDao.findInNum(logBean); String inNum = inBean.getInNum(); String outNum = o.getOutNum(); //增加库存不足校验 float thisOutNum = Float.parseFloat(outNum); float stNum = Float.parseFloat(inNum); if(thisOutNum >stNum){ return "-1"; } //增加批准数和出库数校验 o.setTaskId(taskId); o.setMaModelId(maModelId); OutStorageBean ou = dao.getPreOutInfo(o); String preNum = ou.getPreOutNum(); if(!outNum.equals(preNum)) { return "-1"; } //2、业务处理 UserBean user = UserShiroHelper.getRealCurrentUser(); int userId = user.getId(); o.setApprovalUser(String.valueOf(userId)); o.setTaskId(taskId); o.setMaModelId(maModelId); dao.isApproval(o); //查询状态是否被改变 OutStorageBean outStorageBean=new OutStorageBean(); outStorageBean.setTaskId(taskId); outStorageBean.setMaModelId(maModelId); String isApprovalStatu=dao.getIsApprovalStatus(outStorageBean); if(!StringHelper.isEmptyAndNull(isApprovalStatu) && "1".equals(isApprovalStatu)) { o.setTaskId(taskId); o.setMaModelId(maModelId); updateDevStatus(o); updateAlCollerNum(o); OutStorageBean bean = dao.getOutTask(o); if(bean != null){ updateOutStatus(bean); } //3、日志记录 String description="在库数:"+inBean.getInNum()+";出库数:"+o.getOutNum(); logBean.setDescription(description); logBean.setTime(DateTimeHelper.currentDateTime()); logBean.setCreator(UserShiroHelper.getRealCurrentUser().getId()+""); logDao.insertLog(logBean); return "1"; }else { return "-1"; } } catch (Exception e) { logger.error(e.toString(), e); res = "-1"; } return res; } private void updateOutStatus(OutStorageBean bean) { dao.updateOutStatus(bean); } public void updateAlCollerNum(OutStorageBean o) { ReceiveDetailsBean bean = new ReceiveDetailsBean(); bean.setTaskId(o.getTaskId()); bean.setMaModelId(o.getMaModelId()); bean.setAlreadyCollerNum(o.getOutNum()); rdDao.update(bean); } public void updateDevStatus(OutStorageBean o) { /* MachineTypeBean mmtBean = new MachineTypeBean(); mmtBean.setMaModelId(o.getMaModelId()); MachineTypeBean mmBean = mtDao.findByModelId(mmtBean); if (mmBean.getIsCount().equals("0")) { List list = dao.findCodeByModel(o); MachineBean maBean = new MachineBean(); for (OutStorageBean bean : list) { maBean.setTypeId(o.getMaModelId()); maBean.setDeviceCode(bean.getMaCode()); maBean.setBatchStatus("6"); // 改状态 maDao.updateMachineStatus(maBean); } updateMaNum(o); } else { updateMaNum(o); }*/ updateMaNum(o); } public void updateMaNum(OutStorageBean o) { MachineBean maBean = new MachineBean(); maBean.setTypeId(o.getMaModelId()); MachineBean mBean = maDao.findMachineNum(maBean); // 修改库存 float sums = Float.parseFloat(mBean.getSums()); float outNum = Float.parseFloat(o.getOutNum()); float maNum = sums - outNum; DecimalFormat mFormat = new DecimalFormat(".000"); String formatNum = mFormat.format(maNum); MachineTypeBean mtBean = new MachineTypeBean(); mtBean.setId(o.getMaModelId()); mtBean.setNums(formatNum); // 修改库存 mtDao.update(mtBean); } @Override public List getOutStorageList(OutStorageBean o) { // TODO Auto-generated method stub return dao.getOutStorageList(o); } @Override public List getOutStorageDetailsList(OutStorageBean o) { // TODO Auto-generated method stub return dao.getOutStorageDetailsList(o); } @Override public OutStorageBean getAlOutNum(OutStorageBean o) { // TODO Auto-generated method stub return dao.getAlOutNum(o); } @Override public int updateAlOutNum(OutStorageBean o) { // TODO Auto-generated method stub return dao.updateAlOutNum(o); } @Override public void addOutRecord(OutStorageBean o) { // TODO Auto-generated method stub dao.addOutRecord(o); } @Override public List getOutInfoByNum(OutStorageBean o) { // TODO Auto-generated method stub return dao.getOutInfoByNum(o); } @Override @Transactional public OutStorageBean confirmOutTask(OutStorageBean o) { return dao.confirmOutTask(o); } @Override public List getOutRecordList(OutStorageBean o) { // TODO Auto-generated method stub return dao.getOutRecordList(o); } @Override public Page outStorageQuery(OutStorageBean o, Page page) { // TODO Auto-generated method stub page.setResults(dao.outStorageQuery(o, page)); return page; } @Override public Page findApproval(OutStorageBean o, Page page) { page.setResults(dao.findApproval(o, page)); return page; } @Override public Integer cancelOutTask(OutStorageBean o) { int task = 0; task = dao.cancelOutTask(o); return task; } @Override public Integer updateCollarTask(OutStorageBean o) { int collar = 0; collar = dao.updateCollarTask(o); return collar; } @Override public Integer updateOutTask(OutStorageBean o) { int out = 0; out = dao.updateOutTask(o); return out; } @Override public OutStorageBean findSomeId(OutStorageBean o) { return dao.findSomeId(o); } @Override public Page findQueryContent(Page page, OutStorageBean o) { // TODO Auto-generated method stub page.setResults(dao.findQueryContent(page, o)); return page; } @Override public List findIsFinishById(OutStorageBean bean) { // TODO Auto-generated method stub return dao.findIsFinishById(bean); } @Override public void updateOutNum(OutStorageBean osbean) { // TODO Auto-generated method stub dao.updateOutNum(osbean); } @Override public List findCodeBySupIdAndModId(OutStorageBean o) { // TODO Auto-generated method stub return dao.findCodeBySupIdAndModId(o); } @Override @Transactional public void addStorageData(OutStorageBean o) { // ----------------------------操作工程库存表,配合结算相关数据修改-------开始--------------------------- List waitList = rdDao.findProjectStorageListByTaskId(o); if (waitList != null && waitList.size() > 0) { int size = waitList.size(); MaTypeProjectStorageBean temp = null; for (int i = 0; i < size; i++) { temp = waitList.get(i); int result = storageDao.insertBean(temp); if (result == 0) { throw new ZeroAffectRowsException("结束失败,工程库存插入操作失败!"); } temp = null; } } else { throw new ZeroAffectRowsException("结束失败,工程待入库列表获取失败!"); } // ----------------------------操作工程库存表,配合结算相关数据修改-------结束--------------------------- } @Override @Transactional public String rejectExamine(OutStorageBean o) { String res = ""; int result = 0; try { //1修改审核状态 UserBean user = UserShiroHelper.getRealCurrentUser(); int userId = user.getId(); o.setExamineUser(userId+""); o.setIsExamine("2"); o.setAuditRemark(o.getAuditRemark()); result = dao.updateExaStatus(o); if (result == 0) { throw new ZeroAffectRowsException("修改审核状态操作失败!"); } //2删除发布领料任务 OutStorageBean bean = dao.findOutTaskInfo(o); if(bean != null){ result = dao.delOutTask(bean); if (result == 0) { throw new ZeroAffectRowsException("修改出库任务操作失败!"); } result = dao.delOutDetail(bean); if (result == 0) { throw new ZeroAffectRowsException("修改出库任务数据操作失败!"); } } res = "1"; } catch (Exception e) { logger.error(e.toString(), e); res = "-1"; } return res; } @Override @Transactional public String rejectApproval(OutStorageBean o) { String res = ""; int result = 0; try { //1修改审核状态 UserBean user = UserShiroHelper.getRealCurrentUser(); int userId = user.getId(); o.setApprovalUser(userId+""); o.setIsApproval("2"); o.setApprovalRemark(o.getApprovalRemark()); result = dao.updateExaStatus(o); if (result == 0) { throw new ZeroAffectRowsException("修改审核状态操作失败!"); } //2删除发布领料任务 OutStorageBean bean = dao.findOutTaskInfo(o); if(bean != null){ result = dao.delOutTask(bean); if (result == 0) { throw new ZeroAffectRowsException("修改出库任务操作失败!"); } result = dao.delOutDetail(bean); if (result == 0) { throw new ZeroAffectRowsException("修改出库任务数据操作失败!"); } } res = "1"; } catch (Exception e) { logger.error(e.toString(), e); res = "-1"; } return res; } @Override public Page findBackApproval(OutStorageBean o, Page page) { // TODO Auto-generated method stub page.setResults(dao.findBackApproval(o, page)); return page; } @Override public String isBackApproval(OutStorageBean o) { UserBean user = UserShiroHelper.getRealCurrentUser(); int userId = user.getId(); List list=dao.findAlredyCollarNumList(o); if(list.size()>0){ for(int i=0;i listInfo=dao.findInfoRecord(taskId); if(listInfo.size()>0){ for(int j=0;j