From f2d6527297ad1ae8aad6881d4c672e5bc9c1f908 Mon Sep 17 00:00:00 2001
From: lyfO_o <764716047@qq.com>
Date: Thu, 28 Oct 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