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
package com.shlanbao.tzsc.pms.sch.workorder.service.impl;
 
import java.util.ArrayList;
import java.util.List;
 
import com.shlanbao.tzsc.base.dao.SchWorkorderDaoI;
import com.shlanbao.tzsc.utils.tools.FillUserInfoUtil;
import com.shlanbao.tzsc.utils.tools.LogAnno;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
 
import com.shlanbao.tzsc.base.dao.SchWorkorderBomDaoI;
import com.shlanbao.tzsc.base.mapping.MdMat;
import com.shlanbao.tzsc.base.mapping.MdUnit;
import com.shlanbao.tzsc.base.mapping.SchWorkorder;
import com.shlanbao.tzsc.base.mapping.SchWorkorderBom;
import com.shlanbao.tzsc.base.model.DataGrid;
import com.shlanbao.tzsc.base.service.BaseService;
import com.shlanbao.tzsc.pms.sch.workorder.beans.BomBean;
import com.shlanbao.tzsc.pms.sch.workorder.service.BomServiceI;
 
import javax.servlet.http.HttpServletRequest;
 
@Service
public class BomServiceImpl extends BaseService implements BomServiceI{
    @Autowired
    private SchWorkorderBomDaoI schWorkorderBomDao;
    @Autowired
    private SchWorkorderDaoI workorderDaoI;
    @Autowired
    private HttpServletRequest request;
 
    @Override
    public DataGrid queryBomByWorkOrder(String workOrderId) {
        SchWorkorder workorder = workorderDaoI.findById(SchWorkorder.class,workOrderId);
        try {
            String hql = "from SchWorkorderBom o join fetch o.mdMat m join fetch o.mdUnit u where o.bom_lot_id=?";
 
            List<SchWorkorderBom> schWorkorderBoms = schWorkorderBomDao.query(hql, workorder.getBomVersion());
 
            List<BomBean> bomBeans = new ArrayList<BomBean>();
 
 
            for (SchWorkorderBom schWorkorderBom : schWorkorderBoms) {
                BomBean bean = new BomBean();
                bean.setId(schWorkorderBom.getId());
                bean.setMat(schWorkorderBom.getMdMat().getSimpleName());
                bean.setQty(schWorkorderBom.getQty());
                bean.setUnit(schWorkorderBom.getMdUnit().getName());
                bean.setMatId(schWorkorderBom.getMdMat().getCode());
                bomBeans.add(bean);
 
            }
 
            return new DataGrid(bomBeans, 0L);
 
        } catch (Exception e) {
 
            log.error("查询工单ID:["+workOrderId+"]的BOM异常", e);
 
        }
 
        return null;
    }
    @Override
    public void addBom(BomBean bomBean) {
        SchWorkorderBom o = new SchWorkorderBom();
        o.setMdMat(new MdMat(bomBean.getMat()));
        o.setQty(bomBean.getQty());
        o.setMdUnit(new MdUnit(bomBean.getUnit()));
        o.setSchWorkorder(new SchWorkorder(bomBean.getOrderId()));
        schWorkorderBomDao.save(o);
    }
    @LogAnno(operateType = "投料信息编辑")
    @Override
    public void editBom(BomBean bomBean) {
        SchWorkorderBom o = schWorkorderBomDao.findById(SchWorkorderBom.class, bomBean.getId());
        o.setMdMat(new MdMat(bomBean.getMat()));
        o.setQty(bomBean.getQty());
        o.setMdUnit(new MdUnit(bomBean.getUnit()));
        FillUserInfoUtil.fillUpdateUserInfo(o,request);
        //o.setSchWorkorder(new SchWorkorder(bomBean.getOrderId()));
    }
    @LogAnno(operateType = "投料信息删除")
    @Override
    public void deleteBom(String id) {
        schWorkorderBomDao.deleteById(id, SchWorkorderBom.class);
    }
    @Override
    public BomBean getBomById(String id) {
        SchWorkorderBom schWorkorderBom = schWorkorderBomDao.findById(SchWorkorderBom.class, id);
        BomBean bean = new BomBean();
        bean.setId(schWorkorderBom.getId());
        bean.setMat(schWorkorderBom.getMdMat().getSimpleName());
        bean.setMatId(schWorkorderBom.getMdMat().getId());
        bean.setQty(schWorkorderBom.getQty());
        bean.setUnit(schWorkorderBom.getMdUnit().getName());
        bean.setUnitId(schWorkorderBom.getMdUnit().getId());
        return bean;
    }
    /**
     * 查询
     * @author wanchanghuang
     * @create 2019年5月6日16:54:32
     * @param schWkBom
     */
    @Override
    public long querySchWkOrderBom  (SchWorkorderBom schWkBom) {
        try {
            String hql="from SchWorkorderBom o  where o.bom_lot_id=? and o.mdMat.id=?";
            List<SchWorkorderBom> list=schWorkorderBomDao.query(hql, schWkBom.getBom_lot_id(),schWkBom.getMdMat().getId());
            if(list!=null) {
                return list.size();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return 0;
    }
    /**
     *插入
     * @author wanchanghuang
     * @create 2019年5月6日16:54:32
     * @param schWkBom
     */
    @Override
    public void addSchWkOrderBom(SchWorkorderBom schWkBom) {
        schWorkorderBomDao.save(schWkBom);
    }
    /**
     *查询
     * @author wanchanghuang
     * @create 2019年5月6日16:54:32
     * @param schWkBom
     */
    @Override
    public List<SchWorkorderBom> querySchWorkBomByBomId(SchWorkorder schWk) {
        String hql="from SchWorkorderBom o  where o.bom_lot_id=? and o.del=1 ";//1表示数采关键物料
        List<SchWorkorderBom> list=schWorkorderBomDao.query(hql, schWk.getBomVersion());
        return list;
    }
 
    @Override
    public void deleteBomByBomId(String schWkBom) {
        String sql = "delete from sch_workorder_bom where bom_lot_id = ?";
        List<Object> list = new ArrayList<>();
        list.add(schWkBom);
        schWorkorderBomDao.updateBySql(sql,list);
    }
 
 
    public SchWorkorderDaoI getWorkorderDaoI() {
        return workorderDaoI;
    }
 
    public void setWorkorderDaoI(SchWorkorderDaoI workorderDaoI) {
        this.workorderDaoI = workorderDaoI;
    }
}