zhuguifei
2026-03-10 58402bd5e762361363a0f7d7907153c77dbb819f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
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<MatParamBean> list = new ArrayList<MatParamBean>();
        List<MdMatParam> 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<Object[]> schWorkorders=(List<Object[]>)schWorkorderDao.queryBySql(sb.toString());
        List<Object[]> listfl=null;
        if( schWorkorders!=null && schWorkorders.size()>0 ) {
            for (Object[] s : schWorkorders) {
                Map<String, String> 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<Object[]>) 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);
                }
            }
        }
    }
 
}