package com.shlanbao.tzsc.pms.md.matparam.service.impl; import java.util.*; import com.shlanbao.tzsc.base.dao.impl.SchWorkorderBomDaoImpl; import com.shlanbao.tzsc.base.dao.impl.SchWorkorderDaoImpl; import com.shlanbao.tzsc.utils.tools.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.shlanbao.tzsc.base.dao.MdMatParamDaoI; import com.shlanbao.tzsc.base.mapping.MdMat; import com.shlanbao.tzsc.base.mapping.MdMatParam; import com.shlanbao.tzsc.base.model.DataGrid; import com.shlanbao.tzsc.base.service.BaseService; import com.shlanbao.tzsc.pms.md.matparam.beans.MatParamBean; import com.shlanbao.tzsc.pms.md.matparam.service.MatParamServiceI; import javax.servlet.http.HttpServletRequest; @Service public class MatParamServiceImpl extends BaseService implements MatParamServiceI{ @Autowired private MdMatParamDaoI mdMatParamDao; @Autowired private HttpServletRequest request; @Autowired private SchWorkorderDaoImpl schWorkorderDao; @Autowired private SchWorkorderBomDaoImpl schWorkorderBomDao; @LogAnno(operateType = "新增辅料系数") @Override public void addMatParam(MatParamBean MatParamBean) throws Exception { MdMatParam o = new MdMatParam(); BeanConvertor.copyProperties(MatParamBean, o); o.setMdMat(new MdMat(MatParamBean.getMat())); FillUserInfoUtil.fillCreateUserInfo(o,request); mdMatParamDao.save(o); } @LogAnno(operateType = "编辑辅料系数") @Override public void editMatParam(MatParamBean MatParamBean) throws Exception { MdMatParam o = mdMatParamDao.findById(MdMatParam.class, MatParamBean.getId()); BeanConvertor.copyProperties(MatParamBean, o); o.setMdMat(new MdMat(MatParamBean.getMat())); mdMatParamDao.save(o); FillUserInfoUtil.fillUpdateUserInfo(o,request); } @LogAnno(operateType = "删除辅料系数") @Override public void deleteMatParam(String id) throws Exception { mdMatParamDao.deleteById(id, MdMatParam.class); } @Override public DataGrid getAllMatParams(MatParamBean matParamBean) throws Exception { String hql = "from MdMatParam o where 1=1 "; if(StringUtil.notNull(matParamBean.getMatType())){ hql = hql.concat(" and o.mdMat.mdMatType.id='"+matParamBean.getMatType()+"'"); } //and o.name like '%"+MatParam.getName()+"%' order by o.seq asc"; List list = new ArrayList(); List ts=mdMatParamDao.query(hql); for (MdMatParam mdMatParam :ts) { MatParamBean bean = new MatParamBean(); bean.setId(mdMatParam.getId()); bean.setLength(mdMatParam.getLength()); bean.setWidth(mdMatParam.getWidth()); bean.setDensity(mdMatParam.getDensity()); bean.setVal(mdMatParam.getVal()); bean.setDes(mdMatParam.getDes()); if(mdMatParam.getMdMat()!=null){ bean.setMatName(mdMatParam.getMdMat().getId()); // 辅料ID bean.setMat(mdMatParam.getMdMat().getName());//辅料 bean.setMatType(mdMatParam.getMdMat().getMdMatType().getId()); } /*MatParamBean bean = BeanConvertor.copyProperties(mdMatParam, MatParamBean.class); if(mdMatParam.getMdMat()!=null){ bean.setMatName(mdMatParam.getMdMat().getId()); bean.setMat(mdMatParam.getMdMat().getName());//辅料 }*/ FillUserInfoUtil.fillCreateAndUpdateUserInfo(mdMatParam,bean); list.add(bean); } return new DataGrid(list, 0L); } @Override public MatParamBean getMatParamById(String id) throws Exception{ MdMatParam MdMatParam = mdMatParamDao.findById(MdMatParam.class, id); MatParamBean bean = BeanConvertor.copyProperties(MdMatParam, MatParamBean.class); if(MdMatParam.getMdMat()!= null){ bean.setMat(MdMatParam.getMdMat().getId());//辅料 bean.setMatName(MdMatParam.getMdMat().getName());//辅料 } return bean; } @LogAnno(operateType = "批量删除辅料系数") @Override public void batchDeleteMatParam(String ids) { String[] split = ids.split(","); for (int i = 0; i < split.length; i++) { mdMatParamDao.deleteById(split[i], MdMatParam.class); } } @Override public void initCalcValue(){ StringBuilder sb=new StringBuilder(); sb.append("select ") .append(" id,type,shift,team,eqp,mat,date_ ,bom_version, ") .append(" (select code from MD_EQP_TYPE where id=(select eqp_type_id from MD_EQUIPMENT where id=eqp) ) as eqptype, ") .append(" ( select equipment_code from MD_EQUIPMENT where id=eqp) as eqpcode ") .append(" from SCH_WORKORDER ") .append(" where del=0 ") .append(" and to_char(date_,'yyyy-MM-dd')= to_char(sysdate,'yyyy-MM-dd') ") .append(" and shift in (select shift from SCH_CALENDAR where 1=1 and del=0 and sysdate between stim and etim) "); //查询当前班次所有工单 List schWorkorders=(List)schWorkorderDao.queryBySql(sb.toString()); List listfl=null; if( schWorkorders!=null && schWorkorders.size()>0 ) { for (Object[] s : schWorkorders) { Map map = new HashMap<>(); if (s[9] != null) { RedisUtil.del(s[9] + "CC"); //查询当前工单的辅料系数 、设备类型、辅料类型 StringBuilder sb2 = new StringBuilder(); sb2.append("select ") .append(" mp.val as flxsVal, ") .append(" MP.EQP_TYPE as eqptype, ") .append(" ( ") .append(" select code from MD_MAT_TYPE where id=(select tid from MD_MAT where id=mp.mat) ") .append(" ) as matTypeCode ") .append(" from Sch_Workorder_Bom bom,Md_Mat_Param mp where 1=1 ") .append(" and bom.del=0 ") .append(" and bom.mat=mp.mat ") .append(" and bom_lot_id= '" + s[7] + "'"); listfl = (List) schWorkorderBomDao.queryBySql(sb2.toString()); if ("1".equals(StringUtil.convertObjToString(s[1]))) { Double shuisongzhiValue = null; //水松纸系数 if (listfl != null && listfl.size() > 0) { for (Object[] fl : listfl) { if ("3".equals(StringUtil.convertObjToString(fl[2]))) { String flxsVal = StringUtil.convertObjToString(fl[0]); if (!"" .equals(flxsVal)) { shuisongzhiValue = Double.valueOf(flxsVal); } } } } //判断是否配置完整 if (shuisongzhiValue == null) { shuisongzhiValue = 1D; log.error("工单ID:" + s[0] + " 水松纸转换参数未配置"); } map.put("ssz", shuisongzhiValue.toString()); } if ("2".equals(StringUtil.convertObjToString(s[1]))) { //包装机 if (listfl != null && listfl.size() > 0) { Double xiaohemoValue = null; //小盒膜系数 Double tiaohemoValue = null; //条盒膜系数 Double neichenzhiValue = null;//内衬纸系数 for (Object[] fl : listfl) { //7-小盒纸 8-条盒纸 5小盒膜 6条盒膜9内衬纸 if ("5".equals(StringUtil.convertObjToString(fl[2]))) { String flxsVal = StringUtil.convertObjToString(fl[0]); if (!"" .equals(flxsVal)) { xiaohemoValue = Double.valueOf(flxsVal); } } else if ("6".equals(StringUtil.convertObjToString(fl[2]))) { String flxsVal = StringUtil.convertObjToString(fl[0]); if (!"" .equals(flxsVal)) { tiaohemoValue = Double.valueOf(flxsVal); } } else if ("9".equals(StringUtil.convertObjToString(fl[2]))) { String flxsVal = StringUtil.convertObjToString(fl[0]); if (!"" .equals(flxsVal)) { neichenzhiValue = Double.valueOf(flxsVal); } } } //判断是否配置完整 if (xiaohemoValue == null) { xiaohemoValue = 1D; log.error("工单ID:" + s[0] + " 小盒膜辅料计数参数未配置"); } if (tiaohemoValue == null) { tiaohemoValue = 1D; log.error("工单ID:" + s[0] + " 条盒膜辅料计数参数未配置"); } if (neichenzhiValue == null) { neichenzhiValue = 1D; log.error("工单ID:" + s[0] + " 内衬纸辅料计数参数未配置"); } map.put("xhm", xiaohemoValue.toString()); map.put("thm", tiaohemoValue.toString()); map.put("ncz", neichenzhiValue.toString()); } } RedisUtil.setMap(s[9]+"CC",map); } } } } }