lyfO_o
2021-06-16 0b0d7c1efa03ba43ccd21f9b89b1b7f359db7961
试剂流向:报废试剂
已修改9个文件
240 ■■■■ 文件已修改
src/main/java/com/nanometer/smartlab/controller/OpeUseFlowInfoController.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/nanometer/smartlab/dao/OpeReagentStatusDao.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/nanometer/smartlab/dao/OpeReagentStatusDao.xml 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/nanometer/smartlab/entity/enumtype/OperateStatus.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/nanometer/smartlab/service/OpeReagentStatusService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/nanometer/smartlab/service/OpeReagentStatusServiceImpl.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/nanometer/smartlab/service/OpeUseFlowService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/nanometer/smartlab/service/OpeUseFlowServiceImpl.java 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/reagent_user_flow_info.xhtml 139 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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>