lyfO_o
2021-10-28 f2d6527297ad1ae8aad6881d4c672e5bc9c1f908
采购管理新增:供应商需求管理
已修改6个文件
已添加1个文件
335 ■■■■■ 文件已修改
src/main/java/com/nanometer/smartlab/controller/RequireMngController.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/nanometer/smartlab/dao/OpeApplyDao.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/nanometer/smartlab/dao/OpeApplyDao.xml 79 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/nanometer/smartlab/service/OpeApplyService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/nanometer/smartlab/service/OpeApplyServiceImpl.java 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/WEB-INF/spring-menu.xml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/supplier_require_mng.xhtml 180 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/nanometer/smartlab/controller/RequireMngController.java
@@ -36,6 +36,7 @@
    private OpeOrderService opeOrderService;
    private LazyDataModel<OpeApply> dataModel;
    private LazyDataModel<OpeApply> supplerRequireMngDataModel;
    private OpeOrder opeOrder;
    private List<OpeApply> selectedList;
    private String reagentName;
@@ -174,6 +175,31 @@
        return dataModel;
    }
    public LazyDataModel<OpeApply> getSupplerRequireMngDataModel() {
        return new LazyDataModel<OpeApply>() {
            @Override
            public List<OpeApply> load(int first, int pageSize, String sortField, SortOrder sortOrder, Map<String, Object> filters) {
                List<OpeApply> list = null;
                try {
                    int count = opeApplyService.getOpeApplySupplerRequireMngTotalCount(getUser(),reagentName, startDeadline, endDeadline, ApplyStatus.APPROVED.getKey(),(byte)1);
                    this.setRowCount(count);
                    if (count > 0) {
                        list = opeApplyService.getOpeApplySupplerRequireMngList(getUser(),reagentName, startDeadline, endDeadline, ApplyStatus.APPROVED.getKey(), first, pageSize,(byte)1);
                    }
                } catch (Exception e) {
                    logger.error(e);
                }
                selectedList = null;
                return list;
            }
            @Override
            public OpeApply getRowData(String rowKey) {
                return opeApplyService.getOpeApply(rowKey);
            }
        };
    }
    public OpeOrder getOpeOrder() {
        return opeOrder;
    }
src/main/java/com/nanometer/smartlab/dao/OpeApplyDao.java
@@ -63,4 +63,7 @@
    List<Map> getApplyControlInfo();
    int getOpeApplySupplerRequireMngTotalCount(Map<String, Object> params);
    List<OpeApply> getOpeApplySupplerRequireMngList(Map<String, Object> params);
}
src/main/java/com/nanometer/smartlab/dao/OpeApplyDao.xml
@@ -611,6 +611,85 @@
        )
    </select>
    <select id="getOpeApplySupplerRequireMngTotalCount" resultType="java.lang.Integer">
        select count(1)
        from ope_apply as oa
        left join sys_reagent sr on oa.reagent_id = sr.id
        left join sys_supplier as ss on sr.supplier_id = ss.id
        left join sys_user as su on oa.apply_user_id = su.id
        left join sys_user as suApprove on oa.approve_user_id = suApprove.id
        left join sys_user as sys on sys.id=oa.before_approve_user_id
        left join sys_user as fir on fir.id=oa.first_user
        left join base_meta as bm on sr.product_home = bm.id
        left join base_meta as bm1 on bm1.id = sr.control_products
        where oa.valid_flag = 1
        <if test="isShow != null and isShow ==0">
            and (ss.valid_flag = 1 or sr.type = 0)
        </if>
        <if test="reagentName != null and reagentName != ''">
            and sr.name like concat("%",#{reagentName},"%")
        </if>
        <if test="startDeadline != null">
            and oa.deadline >= #{startDeadline}
        </if>
        <if test="endDeadline != null">
            and #{endDeadline} >= oa.deadline
        </if>
        <if test="status != null">
            and oa.status = #{status}
        </if>
        <if test="company != null and company != ''">
            and ss.name = #{company}
        </if>
    </select>
    <select id="getOpeApplySupplerRequireMngList" parameterType="java.util.Map" resultMap="OpeApply">
        select oa.*,sys.name as secondUserName,
        sr.name as reagentName,sr.price as reagentPrice ,sr.cas as reagentCas, sr.reagent_type as reagentType, sr.reagent_character as reagentCharacter, sr.supplier_id as reagentSupplierId,
        sr.reagent_format as reagentFormat, sr.main_metering as reagentMainMetering, sr.reagent_unit as reagentUnit, sr.per_box as reagentPerBox,
        sr.memo as reagentMemo, sr.valid_flag as reagentValidFlag, sr.create_time as reagentCreateTime, sr.update_time as reagentUpdateTime, sr.product_sn as reagentProductSn,
        sr.dangerous_flag as reagentDangerousFlag,sr.control_products as controlProducts,sr.product_home as productHome,
        ss.name as supplierName,
        su.name as applyUserName,
        suApprove.name as approveUserName,
        bm.meta_value as productHomeName,
        fir.name as firName,
        ss.valid_flag  as supplierFlag,
        sr.type as type
        from ope_apply as oa
        left join sys_reagent sr on oa.reagent_id = sr.id
        left join sys_supplier as ss on sr.supplier_id = ss.id
        left join sys_user as su on oa.apply_user_id = su.id
        left join sys_user as suApprove on oa.approve_user_id = suApprove.id
        left join sys_user as sys on sys.id=oa.before_approve_user_id
        left join sys_user as fir on fir.id=oa.first_user
        left join base_meta as bm on sr.product_home = bm.id
        left join base_meta as bm1 on bm1.id = sr.control_products
        where oa.valid_flag = 1
        <if test="isShow != null and isShow ==0">
            and (ss.valid_flag = 1 or sr.type = 0)
        </if>
        <if test="company != null and company != ''">
            and ss.name = #{company}
        </if>
        <if test="reagentName != null and reagentName != ''">
            and sr.name like concat("%",#{reagentName},"%")
        </if>
        <if test="startDeadline != null">
            and oa.deadline >= #{startDeadline}
        </if>
        <if test="endDeadline != null">
            and #{endDeadline} >= oa.deadline
        </if>
        <if test="status != null">
            and oa.status = #{status}
        </if>
        order by oa.create_time desc
        <if test="first != null and pageSize != null">
            limit #{first}, #{pageSize}
        </if>
    </select>
    <update id="updateByReId" parameterType="java.util.Map">
src/main/java/com/nanometer/smartlab/service/OpeApplyService.java
@@ -77,4 +77,8 @@
    void importApply(FileUploadEvent event, SysUser user) throws IOException;
    OpeApplyReserve getOpeApplyReserveListByNameForRowData(String rowKey);
    int getOpeApplySupplerRequireMngTotalCount(SysUser user,String reagentName, Timestamp startDeadline, Timestamp endDeadline, int key, byte b);
    List<OpeApply> getOpeApplySupplerRequireMngList(SysUser user,String reagentName, Timestamp startDeadline, Timestamp endDeadline, int key, int first, int pageSize, byte b);
}
src/main/java/com/nanometer/smartlab/service/OpeApplyServiceImpl.java
@@ -67,6 +67,8 @@
    SysSequenceService sysSequenceService;
    @Resource
    private SysUserService sysUserService;
    @Resource
    private BaseMetaService baseMetaService;
    @Transactional(propagation = Propagation.REQUIRED)
    public List<OpeApply> getOpeApplyList(String reagentName, Timestamp startDeadline, String controlProduct,Timestamp endDeadline, Integer status,
@@ -888,4 +890,39 @@
        return opeApplyDao.getOpeApplyReserveListByNameForRowData(rowKey);
    }
    @Override
    public int getOpeApplySupplerRequireMngTotalCount(SysUser user,String reagentName, Timestamp startDeadline, Timestamp endDeadline, int status, byte isShow) {
        Map<String, Object> params = new HashMap<>();
        params.put("reagentName",reagentName );
        params.put("startDeadline", startDeadline);
        params.put("endDeadline", endDeadline);
        params.put("status", status);
        params.put("isShow", isShow);
        //看到供应商是自己的单位的数据
        String company = baseMetaService.getBaseMetaValue(user.getCompany());
        if (user.getSeeFlag().getKey() != SeeFlag.MANAGE.getKey()
                && user.getSeeFlag().getKey() != SeeFlag.LEADING.getKey()) {
            params.put("company", company);
        }
        return this.opeApplyDao.getOpeApplySupplerRequireMngTotalCount(params);
    }
    @Override
    public List<OpeApply> getOpeApplySupplerRequireMngList(SysUser user,String reagentName, Timestamp startDeadline, Timestamp endDeadline, int status, int first, int pageSize, byte isShow) {
        Map<String, Object> params = new HashMap<>();
        params.put("reagentName", reagentName);
        params.put("startDeadline", startDeadline);
        params.put("endDeadline", endDeadline);
        params.put("status", status);
        params.put("isShow", isShow);
        //看到供应商是自己的单位的数据
        String company = baseMetaService.getBaseMetaValue(user.getCompany());
        if (user.getSeeFlag().getKey() != SeeFlag.MANAGE.getKey()
                && user.getSeeFlag().getKey() != SeeFlag.LEADING.getKey()) {
            params.put("company", company);
        }
        return this.opeApplyDao.getOpeApplySupplerRequireMngList(params);
    }
}
src/main/webapp/WEB-INF/spring-menu.xml
@@ -37,6 +37,12 @@
                        <property name="privilegeCode" value="require_mng"></property>
                    </bean>
                    <bean class="com.nanometer.smartlab.model.MenuModel">
                        <property name="id" value="supplier_require_mng"></property>
                        <property name="title" value="供应商需求管理"></property>
                        <property name="page" value="supplier_require_mng"></property>
                        <property name="privilegeCode" value="supplier_require_mng"></property>
                    </bean>
                    <bean class="com.nanometer.smartlab.model.MenuModel">
                        <property name="id" value="order_mng"></property>
                        <property name="title" value="订单管理"></property>
                        <property name="page" value="order_mng"></property>
src/main/webapp/supplier_require_mng.xhtml
对比新文件
@@ -0,0 +1,180 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html
        PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:p="http://primefaces.org/ui"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:c="http://java.sun.com/jsp/jstl/core">
<head></head>
<ui:composition>
    <h:form id="requireMngForm">
        <p:panel styleClass="center-header">
            <p:outputLabel styleClass="title" value="供应商需求管理"></p:outputLabel>
            <p:panelGrid styleClass="filter" columns="7">
                <p:outputLabel value="申购产品:"></p:outputLabel>
                <p:inputText value="#{requireMngController.reagentName}"></p:inputText>
                <p:outputLabel value="货期:"></p:outputLabel>
                <p:calendar value="#{requireMngController.startDeadline}" converter="timestampConvert"
                            pattern="yyyy-MM-dd" locale="zh_CN"></p:calendar>
                <p:outputLabel value=" ~ " style="margin-left: 10px;margin-right: 10px"></p:outputLabel>
                <p:calendar value="#{requireMngController.endDeadline}" converter="timestampConvert"
                            pattern="yyyy-MM-dd" locale="zh_CN"></p:calendar>
                <p:commandLink styleClass="search" process="@form" update="@form"></p:commandLink>
            </p:panelGrid>
        </p:panel>
        <p:panel styleClass="center-body">
            <p:panelGrid columns="3" styleClass="btn">
                <p:commandButton value="生成订单" styleClass="new-btn"
                                 process="@form" update=":centerRootPanel"
                                 actionListener="#{requireMngController.onNewBtnClick}"></p:commandButton>
                <p:commandButton value="查看" styleClass="view-btn"
                                 process="@form"
                                 actionListener="#{requireMngController.onViewBtnClick}"
                                 update=":dialog,:dialogForm"></p:commandButton>
                <p:commandButton value="取消" styleClass="edit-btn" process="@form" update=":centerRootPanel"
                                 actionListener="#{requireMngController.onCancelApplyClick}">
                    <p:confirm header="确认" message="确认操作?"></p:confirm>
                </p:commandButton>
            </p:panelGrid>
            <p:dataTable id="requireMngDataTable" styleClass="data-table"
                         paginator="true" paginatorAlwaysVisible="false" paginatorPosition="bottom"
                         lazy="true" value="#{requireMngController.supplerRequireMngDataModel}" var="row" rowKey="#{row.id}"
                         emptyMessage="无数据" selection="#{requireMngController.selectedList}"
                         rows="20" pageLinks="5">
                <p:column selectionMode="multiple" style="width: 30px;text-align: center;"/>
                <p:column headerText="订单状态" width="58px;" style="text-align: center">
                    <h:outputText value="#{row.status!=null?row.status.text:''}"></h:outputText>
                </p:column>
                <p:column headerText="申购编号" width="118px;">
                    <h:outputText value="#{row.applyCode}"></h:outputText>
                </p:column>
                <p:column headerText="产品编号" width="94px;">
                    <h:outputText value="#{row.reagent!=null?row.reagent.productSn:''}"></h:outputText>
                </p:column>
                <p:column headerText="试剂名称" width="129px;">
                    <h:outputText value="#{row.reagent!=null?row.reagent.name:''}" style="font-size: 13px;"></h:outputText>
                </p:column>
                <p:column headerText="管制品">
                    <h:outputText value="#{row.reagent!=null?baseMetaService.getBaseMetaValue(row.reagent.controlProducts):''}"></h:outputText>
                </p:column>
                <p:column headerText="规格型号" width="66px;">
                    <h:outputText value="#{row.reagent!=null?baseMetaService.getBaseMetaValue(row.reagent.reagentFormat):''}"  style="font-size:13px"></h:outputText>
                </p:column>
                <p:column headerText="包装">
                    <h:outputText value="#{row.reagent!=null?(''.concat(row.reagent.mainMetering).concat(baseMetaService.getBaseMetaValue(row.reagent.reagentUnit))):''}"></h:outputText>
                </p:column>
                <p:column headerText="含税售价">
                    <h:outputText value="#{row.applyPrice}"></h:outputText>
                </p:column>
                <p:column headerText="CAS号">
                    <h:outputText value="#{row.reagent!=null?row.reagent.cas:''}"></h:outputText>
                </p:column>
                <p:column headerText="危险性质"  width="85px;">
                    <h:outputText value="#{baseMetaService.getBaseMetaValue(row.reagent.reagentCharacter)}"></h:outputText>
                </p:column>
                <p:column headerText="厂家" width="64px;">
                    <h:outputText value="#{row.reagent!=null?row.reagent.productHomeName:''}"></h:outputText>
                </p:column>
                <p:column headerText="供应商" width="92px;">
                    <h:outputText value="#{row.reagent!=null?row.reagent.supplierName:''}" style="font-size: 13px;white-space: normal;"></h:outputText>
                </p:column>
                <p:column headerText="试剂类型" width="29px;">
                    <h:outputText value="#{baseMetaService.getBaseMetaValue(row.reagent.reagentType)}"></h:outputText>
                </p:column>
                <p:column headerText="申购数量" width="29px;">
                    <h:outputText value="#{row.num}"></h:outputText>
                </p:column>
                <p:column headerText="申购日期" width="73px;">
                    <h:outputText value="#{row.createTime}">
                        <f:convertDateTime pattern="yyyy-MM-dd" locale="zh_CN"></f:convertDateTime>
                    </h:outputText>
                </p:column>
                <p:column headerText="期望货期" width="73px;">
                    <h:outputText value="#{row.deadline}">
                        <f:convertDateTime pattern="yyyy-MM-dd" locale="zh_CN"></f:convertDateTime>
                    </h:outputText>
                </p:column>
                <p:column headerText="审批批注">
                    <h:outputText value="#{row.memo}"></h:outputText>
                </p:column>
            </p:dataTable>
        </p:panel>
    </h:form>
    <p:dialog modal="true" header="查看" appendTo="@(body)"
              id="dialog" widgetVar="dialog"
              resizable="false" width="800">
        <h:form id="dialogForm">
            <p:panelGrid columns="4" styleClass="content2 grid-padding-bottom2">
                <p:outputLabel value="申购编号"></p:outputLabel>
                <p:inputText value="#{requireMngController.opeApply.applyCode}" disabled="true"></p:inputText>
                <p:outputLabel value="申购产品"></p:outputLabel>
                <p:inputText value="#{requireMngController.opeApply.reagent.name}" disabled="true"></p:inputText>
                <p:outputLabel value="CAS"></p:outputLabel>
                <p:inputText value="#{requireMngController.opeApply.reagent.cas}" disabled="true"></p:inputText>
                <p:outputLabel value="指定供应商"></p:outputLabel>
                <p:inputText value="#{requireMngController.opeApply.reagent.supplierName}" disabled="true"></p:inputText>
                <p:outputLabel value="规格"></p:outputLabel>
                <p:inputText value="#{baseMetaService.getBaseMetaValue(requireMngController.opeApply.reagent.reagentFormat)}" disabled="true"></p:inputText>
                <p:outputLabel value="包装"></p:outputLabel>
                <p:inputText value="#{''.concat(requireMngController.opeApply.reagent.mainMetering).concat(baseMetaService.getBaseMetaValue(requireMngController.opeApply.reagent.reagentUnit))}"
                             disabled="true"></p:inputText>
                <p:outputLabel value="含税价格"></p:outputLabel>
                <p:inputText value="#{requireMngController.opeApply.reagent.price}" disabled="true"></p:inputText>
                <p:outputLabel value="每箱数量"></p:outputLabel>
                <p:inputText value="#{requireMngController.opeApply.reagent.perBox}" disabled="true"></p:inputText>
                <p:outputLabel value="申购数量"></p:outputLabel>
                <p:inputText value="#{requireMngController.opeApply.num}" disabled="true"></p:inputText>
                <p:outputLabel value="货期"></p:outputLabel>
                <p:inputText value="#{requireMngController.opeApply.deadline}" disabled="true">
                    <f:convertDateTime pattern="yyyy-MM-dd" locale="zh_CN"></f:convertDateTime>
                </p:inputText>
                <p:outputLabel value="申购目的"></p:outputLabel>
                <p:inputText value="#{baseMetaService.getBaseMetaValue(requireMngController.opeApply.objective)}" disabled="true"></p:inputText>
                <p:outputLabel value="申购日期"></p:outputLabel>
                <p:inputText value="#{requireMngController.opeApply.createTime}" disabled="true">
                    <f:convertDateTime pattern="yyyy-MM-dd" locale="zh_CN"></f:convertDateTime>
                </p:inputText>
                <p:outputLabel value="批注"></p:outputLabel>
                <p:inputTextarea value="#{requireMngController.opeApply.memo}"
                                 rows="5" disabled="true"></p:inputTextarea>
            </p:panelGrid>
            <p:panel styleClass="btn" style="text-align: right">
            </p:panel>
        </h:form>
    </p:dialog>
</ui:composition>
</html>