GZMachinesWeb/.svn/pristine/cb/cb3bdc691e9bf6287649b468dea...

590 lines
15 KiB
Plaintext
Raw Normal View History

2025-06-20 17:47:53 +08:00
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<OutStorageBean> 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<OutStorageBean> 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<OutStorageBean> 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<OutStorageBean> sameList = dao.getSameInfo(o);
if(sameList==null || sameList.size()<=0 ) {
return "-1";
}
//查询数据是否被记录
o.setTaskId(taskId);
o.setMaModelId(maModelId);
List<OutStorageBean> 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<OutStorageBean> 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<OutStorageBean> getOutStorageList(OutStorageBean o) {
// TODO Auto-generated method stub
return dao.getOutStorageList(o);
}
@Override
public List<OutStorageBean> 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<OutStorageBean> 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<OutStorageBean> getOutRecordList(OutStorageBean o) {
// TODO Auto-generated method stub
return dao.getOutRecordList(o);
}
@Override
public Page<OutStorageBean> outStorageQuery(OutStorageBean o, Page<OutStorageBean> page) {
// TODO Auto-generated method stub
page.setResults(dao.outStorageQuery(o, page));
return page;
}
@Override
public Page<OutStorageBean> findApproval(OutStorageBean o, Page<OutStorageBean> 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<OutStorageBean> findQueryContent(Page<OutStorageBean> page, OutStorageBean o) {
// TODO Auto-generated method stub
page.setResults(dao.findQueryContent(page, o));
return page;
}
@Override
public List<OutStorageBean> 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<OutStorageBean> findCodeBySupIdAndModId(OutStorageBean o) {
// TODO Auto-generated method stub
return dao.findCodeBySupIdAndModId(o);
}
@Override
@Transactional
public void addStorageData(OutStorageBean o) {
// ----------------------------操作工程库存表,配合结算相关数据修改-------开始---------------------------
List<MaTypeProjectStorageBean> 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<OutStorageBean> findBackApproval(OutStorageBean o, Page<OutStorageBean> 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<OutStorageBean> list=dao.findAlredyCollarNumList(o);
if(list.size()>0){
for(int i=0;i<list.size();i++){
String alredyCollarNum=list.get(i).getAlredyCollarNum();
String id=list.get(i).getId();
String taskId = list.get(i).getTaskId();
//等于null
if("0".equals(alredyCollarNum)){
dao.addBackRecord(o.getTaskId(),o.getMaModelId(),null,o.getOutNum(),o.getOperationTime(),userId);
}else{
//修改app已操作的领料单
updateDoneRecord(id,userId,o,taskId);
}
//删除wf_collar_details 领料详情
dao.delCollarDetaiils(o);
//删除wf_task_record 出库任务
dao.delCollarTask(taskId);
//删除wf_ma_outstock 删除app出库记录
dao.delOutStockInfo(id);
//修改mm_type 修改机具数量
String num=dao.findTypeNum(o.getMaModelId());
float nums=Float.parseFloat(num) + Float.parseFloat(o.getOutNum());
dao.updateTypeNum(nums+"",o.getMaModelId());
//删除bm_logs
dao.delBmLogs(o);
}
}
return "1";
}
public void updateDoneRecord(String id,int userId,OutStorageBean o,String taskId) {
List<OutStorageBean> listInfo=dao.findInfoRecord(taskId);
if(listInfo.size()>0){
for(int j=0;j<listInfo.size();j++){
if(listInfo.get(j) != null){
if(listInfo.get(j).getMaId() !=null){
String maId=listInfo.get(j).getMaId();
//修改mm_machine 修改机具状态
dao.updateMachinesBatchStats(maId);
dao.addBackRecord(o.getTaskId(),o.getMaModelId(),maId,o.getOutNum(),o.getOperationTime(),userId);
}
}else{
dao.addBackRecord(o.getTaskId(),o.getMaModelId(),null,o.getOutNum(),o.getOperationTime(),userId);
}
}
}
//删除wf_info_record 删除机具详情
dao.delInfoRecord(taskId,o.getMaModelId());
}
@Override
public void updateStorageNum(OutStorageBean r) {
dao.updateStorageNum(r);
}
}