src/main/java/com/nanometer/smartlab/controller/OpeUseFlowInfoController.java
@@ -7,7 +7,9 @@ import com.nanometer.smartlab.entity.SysUser; import com.nanometer.smartlab.entity.dto.ApplyListDto; import com.nanometer.smartlab.exception.BusinessException; import com.nanometer.smartlab.service.SysUserService; import com.nanometer.smartlab.util.FacesUtils; import com.nanometer.smartlab.util.Utils; import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; @@ -72,6 +74,8 @@ private List<SysReagent> reagentSelectList; private OpeUseFlow selectedOne; public List<SysReagent> getReagentSelectList() { if (this.reagentSelectList == null) { @@ -211,6 +215,26 @@ } } //报废试剂 public void scrapReagent(){ if (this.selectedOne == null) { FacesUtils.warn("请选择"); return; } try { String reagentCode = this.selectedOne.getReagentCode(); String reagentId = this.selectedOne.getReagent().getId(); opeUseFlowService.scrapReagent(reagentId, reagentCode, getUserId()); FacesUtils.warn("操作成功"); } catch (BusinessException e) { FacesUtils.warn(e.getMessage()); } catch (Exception e) { e.printStackTrace(); FacesUtils.warn("操作失败"); } } public void setStartDate(Date startDate) { this.startDate = startDate; } @@ -243,4 +267,12 @@ public void setContainerCode(String containerCode) { this.containerCode = containerCode; } public OpeUseFlow getSelectedOne() { return selectedOne; } public void setSelectedOne(OpeUseFlow selectedOne) { this.selectedOne = selectedOne; } } src/main/java/com/nanometer/smartlab/dao/OpeReagentStatusDao.java
@@ -59,4 +59,7 @@ void updateArticleNumberByRCode(String code, String articleNumber); List<Map> selectExportList(Map params); OpeReagentStatus getStatus(@Param("reagentId") String reagentId,@Param("reagentCode") String reagentCode); } src/main/java/com/nanometer/smartlab/dao/OpeReagentStatusDao.xml
@@ -639,4 +639,12 @@ </choose> order by oa.reagent_code asc </select> <select id="getStatus" resultMap="OpeReagentStatus"> select * from ope_reagent_status where valid_flag = 1 and reagent_code = #{reagentCode} and reagent_id = #{reagentId} </select> </mapper> src/main/java/com/nanometer/smartlab/entity/enumtype/OperateStatus.java
@@ -3,7 +3,8 @@ import java.util.HashMap; public enum OperateStatus { WAREHOUSEIN(10, "仓库入库"), WAREHOUSEOUT(11, "仓库领用"), LABORATORYIN(0, "试剂柜入库"), TRANSFER(6,"转移"); WAREHOUSEIN(10, "仓库入库"), WAREHOUSEOUT(11, "仓库领用"), LABORATORYIN(0, "试剂柜入库"), TRANSFER(6,"转移"), SCRAP(5, "报废"); private int key; private String text; src/main/java/com/nanometer/smartlab/service/OpeReagentStatusService.java
@@ -112,4 +112,6 @@ String reagentCode, String userId,String labName); void exportLabStock2Excel(List<Map> list) throws Exception; OpeReagentStatus getStatus(String reagentId, String reagentCode); } src/main/java/com/nanometer/smartlab/service/OpeReagentStatusServiceImpl.java
@@ -1129,5 +1129,12 @@ ExcelUtils.export2Excel(list,"实验室库存",map); } @Override public OpeReagentStatus getStatus(String reagentId, String reagentCode) { return opeReagentStatusDao.getStatus(reagentId,reagentCode); } } src/main/java/com/nanometer/smartlab/service/OpeUseFlowService.java
@@ -57,4 +57,6 @@ int getApplyInfoSize(String receiptNumber); int getOpeUseFlow(OpeUseFlow opeUseFlow); void scrapReagent(String reagentId,String reagentCode, String userId); } src/main/java/com/nanometer/smartlab/service/OpeUseFlowServiceImpl.java
@@ -8,9 +8,7 @@ import javax.annotation.Resource; import com.nanometer.smartlab.dao.BaseMetaDao; import com.nanometer.smartlab.dao.SysLaboratoryContainerDao; import com.nanometer.smartlab.dao.SysWarehouseContainerDao; import com.nanometer.smartlab.dao.*; import com.nanometer.smartlab.entity.*; import com.nanometer.smartlab.entity.dto.PersonUseDetail; import com.nanometer.smartlab.entity.enumtype.OperateStatus; @@ -25,7 +23,6 @@ import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import com.nanometer.smartlab.dao.OpeUseFlowDao; import com.nanometer.smartlab.entity.enumtype.ArrivalStatus; import com.nanometer.smartlab.entity.enumtype.SeeFlag; import com.nanometer.smartlab.exception.AlarmCode; @@ -59,6 +56,8 @@ private SysReagentService sysReagentService; @Resource private BaseMetaDao baseMetaDao; @Resource private OpeReagentStatusDao opeReagentStatusDao; @Transactional(propagation = Propagation.REQUIRED) @@ -540,4 +539,41 @@ return opeUseFlowDao.countOpeUseFlow(opeUseFlow); } @Override @Transactional public void scrapReagent(String reagentId,String reagentCode, String userId) { //1.试剂状态表更新试剂状态为报废 OpeReagentStatus status = opeReagentStatusService.getStatus(reagentId, reagentCode); if (status.getStatus() == ArrivalStatus.SCRAP) { throw new BusinessException(ExceptionEnumCode.PARAM_ERR,"该试剂已是报废状态,无法进行操作"); } //报废 status.setStatus(ArrivalStatus.SCRAP); status.setUserId(userId); opeReagentStatusDao.updateOpeReagentStatusDao(status); //2.插入一条报废的流向记录 OpeUseFlow useFlow = new OpeUseFlow(); //获取报废状态id Map<String, Object> params = new HashMap<>(); params.put("groupId", "operate_status"); params.put("metaKey", String.valueOf(OperateStatus.SCRAP.getKey())); List<BaseMeta> baseMetas = baseMetaDao.getBaseMetaList(params); useFlow.setOperateState(baseMetas.get(0).getId()); useFlow.setReagentCode(reagentCode); useFlow.setContainerId(status.getContainerId()); useFlow.setHouseId(status.getHouseId()); useFlow.setUserId(userId); useFlow.setPlace(status.getPlace()); useFlow.setRemainder(status.getRemainder()); useFlow.setStoreType(status.getStoreType()); useFlow.setProject(status.getProjectNum()); useFlow.setArticleNumber(status.getArticleNumber()); useFlow.setCreateTime(new Timestamp(new Date().getTime())); useFlow.setId(IDUtils.uuid()); opeUseFlowDao.insertOpeUseFlow(useFlow); } } src/main/webapp/reagent_user_flow_info.xhtml
@@ -9,6 +9,7 @@ xmlns:c="http://java.sun.com/jsp/jstl/core"> <head></head> <ui:composition> <h:form id="reagentUseFlowInfoForm"> <p:panel styleClass="center-header"> <p:outputLabel styleClass="title" value="试剂流向追踪"></p:outputLabel> @@ -37,7 +38,79 @@ </p:panel> </p:panel> <p:panel styleClass="center-body"> <p:panelGrid columns="1" styleClass="btn"> <p:commandButton value="报废" styleClass="del-btn" ajax="false" actionListener="#{opeUseFlowInfoController.scrapReagent}" /> </p:panelGrid> <p:dataTable id="reagentUseFlowInfoDataTable" styleClass="data-table" paginator="true" paginatorAlwaysVisible="false" paginatorPosition="bottom" lazy="true" value="#{opeUseFlowInfoController.dataModel}" var="row" selectionMode="single" selection="#{opeUseFlowInfoController.selectedOne}" rowKey="#{row.id}" emptyMessage="无数据" rows="20" pageLinks="5"> <p:column headerText="试剂条形码"> <h:outputText value="#{row.reagentCode}"></h:outputText> </p:column> <p:column headerText="试剂名称"> <h:outputText value="#{row.reagent.name}"></h:outputText> </p:column> <p:column headerText="柜号"> <h:outputText value="#{row.laboratoryContainerCode}" rendered="${!empty row.laboratoryContainerName}"/> <h:outputText value="#{row.warehouseContainerCode}" rendered="${!empty row.warehouseContainerName}"/> </p:column> <p:column headerText="操作状态"> <h:outputText value="#{row.operatestateName}" /> </p:column> <p:column headerText="残存量"> <h:outputText value="#{row.remainder == null?'':row.remainder}" rendered="#{row.operatestateName ne '仓库领用' and row.operatestateName ne '仓库入库'}"/> </p:column> <!--<p:column headerText="重量"> <h:outputText value="#{row.remainder}"></h:outputText> </p:column>--> <p:column headerText="持有者"> <h:outputText value="#{row.userName}" /> </p:column> <p:column headerText="更新时间"> <h:outputText value="#{row.createTime}"> <f:convertDateTime pattern="yyyy-MM-dd HH:mm:ss" locale="zh_CN"></f:convertDateTime> </h:outputText> </p:column> <p:column headerText="场所名"> <h:outputText value="#{row.laboratoryName}" rendered="#{!empty row.laboratoryName}"/> <h:outputText value="#{row.warehouseName}" rendered="#{!empty row.warehouseName}"/> </p:column> <!-- <p:column headerText="领用单号">--> <!-- <h:outputText value="#{row.receiptNumber}"/>--> <!-- </p:column>--> <!-- <p:column headerText="操作" style="text-align: center">--> <!-- <p:commandButton value="生成领用单"--> <!-- actionListener="#{opeUseFlowInfoController.generateRecipients(row)}"--> <!-- rendered="#{row.receiptNumber != null}"--> <!-- update="reagentUseFlowInfoForm:apply-ui"--> <!-- oncomplete="PF('printDialog').show()"--> <!-- async="true"--> <!-- >--> <!-- </p:commandButton>--> <!-- </p:column>--> </p:dataTable> </p:panel> </h:form> <p:dialog id="apply-ui" header="领用单" widgetVar="printDialog" appendTo="@(body)" modal="true" resizable="false" width="1000"> <div id="printTarget"> @@ -147,71 +220,5 @@ </script> </p:dialog> <p:dataTable id="reagentUseFlowInfoDataTable" styleClass="data-table" paginator="true" paginatorAlwaysVisible="false" paginatorPosition="bottom" lazy="true" value="#{opeUseFlowInfoController.dataModel}" var="row" rowKey="#{row.id}" emptyMessage="无数据" rows="20" pageLinks="5"> <p:column headerText="试剂条形码"> <h:outputText value="#{row.reagentCode}"></h:outputText> </p:column> <p:column headerText="试剂名称"> <h:outputText value="#{row.reagent.name}"></h:outputText> </p:column> <p:column headerText="柜号"> <h:outputText value="#{row.laboratoryContainerCode}" rendered="${!empty row.laboratoryContainerName}"/> <h:outputText value="#{row.warehouseContainerCode}" rendered="${!empty row.warehouseContainerName}"/> </p:column> <p:column headerText="操作状态"> <h:outputText value="#{row.operatestateName}" /> </p:column> <p:column headerText="残存量"> <h:outputText value="#{row.remainder == null?'':row.remainder}" rendered="#{row.operatestateName ne '仓库领用' and row.operatestateName ne '仓库入库'}"/> </p:column> <!--<p:column headerText="重量"> <h:outputText value="#{row.remainder}"></h:outputText> </p:column>--> <p:column headerText="持有者"> <h:outputText value="#{row.userName}" /> </p:column> <p:column headerText="更新时间"> <h:outputText value="#{row.createTime}"> <f:convertDateTime pattern="yyyy-MM-dd HH:mm:ss" locale="zh_CN"></f:convertDateTime> </h:outputText> </p:column> <p:column headerText="场所名"> <h:outputText value="#{row.laboratoryName}" rendered="#{!empty row.laboratoryName}"/> <h:outputText value="#{row.warehouseName}" rendered="#{!empty row.warehouseName}"/> </p:column> <!-- <p:column headerText="领用单号">--> <!-- <h:outputText value="#{row.receiptNumber}"/>--> <!-- </p:column>--> <!-- <p:column headerText="操作" style="text-align: center">--> <!-- <p:commandButton value="生成领用单"--> <!-- actionListener="#{opeUseFlowInfoController.generateRecipients(row)}"--> <!-- rendered="#{row.receiptNumber != null}"--> <!-- update="reagentUseFlowInfoForm:apply-ui"--> <!-- oncomplete="PF('printDialog').show()"--> <!-- async="true"--> <!-- >--> <!-- </p:commandButton>--> <!-- </p:column>--> </p:dataTable> </p:panel> </h:form> </ui:composition> </html>