From f2d6527297ad1ae8aad6881d4c672e5bc9c1f908 Mon Sep 17 00:00:00 2001 From: lyfO_o <764716047@qq.com> Date: 星期四, 28 十月 2021 11:05:48 +0800 Subject: [PATCH] 采购管理新增:供应商需求管理 --- src/main/java/com/nanometer/smartlab/service/OpeApplyService.java | 4 src/main/webapp/WEB-INF/spring-menu.xml | 6 + src/main/java/com/nanometer/smartlab/controller/RequireMngController.java | 26 ++++ src/main/java/com/nanometer/smartlab/dao/OpeApplyDao.xml | 79 +++++++++++++ src/main/webapp/supplier_require_mng.xhtml | 180 ++++++++++++++++++++++++++++++ src/main/java/com/nanometer/smartlab/dao/OpeApplyDao.java | 3 src/main/java/com/nanometer/smartlab/service/OpeApplyServiceImpl.java | 37 ++++++ 7 files changed, 335 insertions(+), 0 deletions(-) diff --git a/src/main/java/com/nanometer/smartlab/controller/RequireMngController.java b/src/main/java/com/nanometer/smartlab/controller/RequireMngController.java index b1ac5e2..02d6601 100644 --- a/src/main/java/com/nanometer/smartlab/controller/RequireMngController.java +++ b/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; } diff --git a/src/main/java/com/nanometer/smartlab/dao/OpeApplyDao.java b/src/main/java/com/nanometer/smartlab/dao/OpeApplyDao.java index 99904eb..3503bfc 100644 --- a/src/main/java/com/nanometer/smartlab/dao/OpeApplyDao.java +++ b/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); } diff --git a/src/main/java/com/nanometer/smartlab/dao/OpeApplyDao.xml b/src/main/java/com/nanometer/smartlab/dao/OpeApplyDao.xml index e3787bf..f4c2a24 100644 --- a/src/main/java/com/nanometer/smartlab/dao/OpeApplyDao.xml +++ b/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"> diff --git a/src/main/java/com/nanometer/smartlab/service/OpeApplyService.java b/src/main/java/com/nanometer/smartlab/service/OpeApplyService.java index 95dc9f1..08ab215 100644 --- a/src/main/java/com/nanometer/smartlab/service/OpeApplyService.java +++ b/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); } diff --git a/src/main/java/com/nanometer/smartlab/service/OpeApplyServiceImpl.java b/src/main/java/com/nanometer/smartlab/service/OpeApplyServiceImpl.java index 23bfaf4..2c60a06 100644 --- a/src/main/java/com/nanometer/smartlab/service/OpeApplyServiceImpl.java +++ 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); + } + } diff --git a/src/main/webapp/WEB-INF/spring-menu.xml b/src/main/webapp/WEB-INF/spring-menu.xml index cd1d4b4..b6b5713 100644 --- a/src/main/webapp/WEB-INF/spring-menu.xml +++ b/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> diff --git a/src/main/webapp/supplier_require_mng.xhtml b/src/main/webapp/supplier_require_mng.xhtml new file mode 100644 index 0000000..c0b2154 --- /dev/null +++ b/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> -- Gitblit v1.9.2