package com.nanometer.smartlab.controller;
|
|
import java.text.SimpleDateFormat;
|
import java.util.*;
|
|
import javax.annotation.Resource;
|
|
import com.nanometer.smartlab.entity.OpeUseFlow;
|
import com.nanometer.smartlab.entity.SysLaboratory;
|
import com.nanometer.smartlab.entity.dto.ApplyListDto;
|
import com.nanometer.smartlab.entity.dto.PersonUseDetail;
|
import com.nanometer.smartlab.service.SysLaboratoryService;
|
import com.nanometer.smartlab.util.FacesUtils;
|
import com.nanometer.smartlab.util.Utils;
|
import org.apache.log4j.Logger;
|
import org.primefaces.context.RequestContext;
|
import org.primefaces.model.LazyDataModel;
|
import org.primefaces.model.SortOrder;
|
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.context.annotation.Scope;
|
import org.springframework.stereotype.Controller;
|
|
import com.nanometer.smartlab.entity.OpeReagentStatus;
|
import com.nanometer.smartlab.entity.SysReagent;
|
import com.nanometer.smartlab.service.OpeReagentStatusService;
|
import com.nanometer.smartlab.service.OpeUseFlowService;
|
import com.nanometer.smartlab.service.SysReagentService;
|
|
/**
|
* Created by cmower on 17/11/20.
|
*/
|
@Controller
|
@Scope("session")
|
public class PersonalUseInfoController extends BaseController {
|
|
private static final long serialVersionUID = 101543880938627455L;
|
|
private static Logger logger = Logger.getLogger(PersonalUseInfoController.class);
|
|
@Resource
|
private OpeUseFlowService opeUseFlowService;
|
@Resource
|
private OpeReagentStatusService opeReagentStatusService;
|
|
@Resource
|
private SysReagentService sysReagentService;
|
@Resource
|
private SysLaboratoryService sysLaboratoryService;
|
@Value("${institute.name}")
|
String instituteName;
|
|
/**
|
* 数据源
|
*/
|
private LazyDataModel<OpeReagentStatus> dataModel;
|
private String reagentId;
|
private String reagentCode;
|
private String applyPerson;
|
private Date startTime;
|
private Date endTime;
|
private String project;
|
private String department;
|
private String receiptNumber;
|
private LazyDataModel<OpeUseFlow> dataModel2;
|
private OpeUseFlow selectOne;
|
private List<PersonUseDetail> personUseDetail;
|
private Hashtable<String,Object> printTable;
|
|
private List<OpeReagentStatus> selectedList;
|
private List<SysReagent> reagentSelectList;
|
|
public List<OpeReagentStatus> getSelectedList() {
|
return selectedList;
|
}
|
|
public void setSelectedList(List<OpeReagentStatus> selectedList) {
|
this.selectedList = selectedList;
|
}
|
|
public List<SysReagent> getReagentSelectList() {
|
if (this.reagentSelectList == null) {
|
this.initReagentSelectList();
|
}
|
return reagentSelectList;
|
}
|
|
public void setReagentSelectList(List<SysReagent> reagentSelectList) {
|
this.reagentSelectList = reagentSelectList;
|
}
|
|
private void initReagentSelectList() {
|
this.setReagentSelectList(this.sysReagentService.getSysReagentList(null,null, null, null, null, null));
|
}
|
|
public void initPage() {
|
this.initReagentSelectList();
|
}
|
|
public void updateTimeByCode(){
|
List<OpeReagentStatus> list=this.selectedList;
|
if(list!=null&&list.size()>0){
|
for(int i=0;i<list.size();i++){
|
this.opeReagentStatusService.updateTimeByCode(list.get(i).getReagentCode());
|
this.opeUseFlowService.updateTimeByCode(list.get(i).getReagentCode());
|
}
|
FacesUtils.info("更新成功。");
|
}else {
|
FacesUtils.info("请选择数据。");
|
}
|
}
|
|
/**
|
*@description 取消试剂认领
|
*@date 2020/7/20
|
*@author celin
|
*/
|
public void reagentReturn(){
|
|
try {
|
List<OpeReagentStatus> list=this.selectedList;
|
opeReagentStatusService.batchUpdateStatusByCode(list);
|
FacesUtils.info("已取消试剂");
|
}catch (Exception e){
|
FacesUtils.info("请选择数据");
|
}
|
|
|
}
|
/**
|
* 生成领用单
|
*/
|
|
public void generateReceipt() {
|
if (this.selectOne == null) {
|
FacesUtils.warn("请选择数据");
|
return;
|
}
|
|
printTable = new Hashtable<>();
|
printTable.put("head", instituteName);
|
printTable.put("title", "领用单");
|
printTable.put("applyPerson", selectOne.getUserName());
|
printTable.put("department", selectOne.getDepartment());
|
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
|
printTable.put("date", dateFormat.format(selectOne.getCreateTime()));
|
printTable.put("phone", selectOne.getPhone());
|
printTable.put("receiptNumber", selectOne.getReceiptNumber());
|
printTable.put("project", selectOne.getProject());
|
SysLaboratory sysLaboratory = sysLaboratoryService.getSysLaboratory(selectOne.getHouseId());
|
printTable.put("lab", sysLaboratory.getName());
|
//整理数据
|
List<PersonUseDetail> applyInfo = opeUseFlowService.getApplyInfo(selectOne.getReceiptNumber());
|
assert applyInfo.size() > 0;
|
List<ApplyListDto> applyList = new ArrayList<>();
|
Map<String, Integer> map = new HashMap<>();
|
for (PersonUseDetail pud : applyInfo) {
|
if (map.containsKey(pud.getReagentId())) {
|
map.put(pud.getReagentId(), map.get(pud.getReagentId()) + 1);
|
}else{
|
map.put(pud.getReagentId(), 1);
|
}
|
}
|
int sum = 0;
|
for (Map.Entry<String,Integer> entry : map.entrySet()) {
|
ApplyListDto apply = new ApplyListDto();
|
for (PersonUseDetail pud : applyInfo) {
|
if (entry.getKey().equals(pud.getReagentId())) {
|
apply.setControlProducts(pud.getControlProducts());
|
apply.setMainMetering(pud.getPerInfo());
|
apply.setNum(entry.getValue().toString());
|
apply.setProductCode(pud.getProductSn());
|
apply.setProductName(pud.getReagentName());
|
apply.setReagentFormat(pud.getReagentFormat());
|
applyList.add(apply);
|
sum += entry.getValue();
|
break;
|
}
|
}
|
}
|
|
applyList.add(new ApplyListDto("合计", "", "", "", "", String.valueOf(sum), ""));
|
printTable.put("applyList", applyList);
|
RequestContext.getCurrentInstance().execute("PF('printDialog').show()");
|
}
|
|
/**
|
* 查看详情
|
*/
|
|
public void detailInfo() {
|
if (this.selectOne == null) {
|
FacesUtils.warn("请选择数据");
|
}
|
|
personUseDetail = opeUseFlowService.getApplyInfo(selectOne.getReceiptNumber());
|
|
}
|
|
@SuppressWarnings("serial")
|
public LazyDataModel<OpeReagentStatus> getDataModel() {
|
if (this.dataModel == null) {
|
this.dataModel = new LazyDataModel<OpeReagentStatus>() {
|
@Override
|
public List<OpeReagentStatus> load(int first, int pageSize, String sortField, SortOrder sortOrder,
|
Map<String, Object> filters) {
|
List<OpeReagentStatus> list = null;
|
try {
|
int count = opeReagentStatusService.getPersonReagentStatusTotalCountByName(reagentId, null, reagentCode, getUserId(),applyPerson,startTime,endTime);
|
this.setRowCount(count);
|
if (count > 0) {
|
list = opeReagentStatusService.getPersonReagentStatusListByName(reagentId, null, reagentCode, getUserId(),applyPerson,startTime,endTime ,first,
|
pageSize);
|
}
|
} catch (Exception e) {
|
logger.error(e);
|
}
|
return list;
|
}
|
|
@Override
|
public OpeReagentStatus getRowData(String rowKey) {
|
Iterator<OpeReagentStatus> iterator = this.iterator();
|
if (iterator != null) {
|
OpeReagentStatus su = null;
|
while (iterator.hasNext()) {
|
su = iterator.next();
|
if (rowKey.equals(su.getId())) {
|
return su;
|
}
|
}
|
}
|
return null;
|
}
|
};
|
}
|
return dataModel;
|
}
|
|
public LazyDataModel<OpeUseFlow> getDataModel2() {
|
if (this.dataModel2 == null) {
|
this.dataModel2 = new LazyDataModel<OpeUseFlow>() {
|
@Override
|
public List<OpeUseFlow> load(int first, int pageSize, String sortField, SortOrder sortOrder,
|
Map<String, Object> filters) {
|
List<OpeUseFlow> list = null;
|
try {
|
int count = opeUseFlowService.getPersonalUseInfoCount(reagentCode, getUserId(),startTime,endTime,receiptNumber,department,project);
|
this.setRowCount(count);
|
if (count > 0) {
|
list = opeUseFlowService.getPersonalUseInfoList
|
(reagentCode, getUserId(),startTime,endTime ,receiptNumber,department,project,first,pageSize);
|
}
|
} catch (Exception e) {
|
logger.error(e);
|
}
|
return list;
|
}
|
|
@Override
|
public OpeUseFlow getRowData(String rowKey) {
|
Iterator<OpeUseFlow> iterator = this.iterator();
|
if (iterator != null) {
|
OpeUseFlow su = null;
|
while (iterator.hasNext()) {
|
su = iterator.next();
|
if (rowKey.equals(su.getReceiptNumber())) {
|
return su;
|
}
|
}
|
}
|
return null;
|
}
|
};
|
}
|
return dataModel2;
|
}
|
|
public String getReagentId() {
|
return reagentId;
|
}
|
|
public void setReagentId(String reagentId) {
|
this.reagentId = reagentId;
|
}
|
|
public String getReagentCode() {
|
return reagentCode;
|
}
|
|
public void setReagentCode(String reagentCode) {
|
this.reagentCode = reagentCode;
|
}
|
|
public String getApplyPerson() {
|
return applyPerson;
|
}
|
|
public void setApplyPerson(String applyPerson) {
|
this.applyPerson = applyPerson;
|
}
|
|
public Date getStartTime() {
|
return startTime;
|
}
|
|
public void setStartTime(Date startTime) {
|
this.startTime = startTime;
|
}
|
|
|
public Date getEndTime() {
|
return endTime;
|
}
|
|
public void setEndTime(Date endTime) {
|
this.endTime = endTime;
|
}
|
|
public String getProject() {
|
return project;
|
}
|
|
public void setProject(String project) {
|
this.project = project;
|
}
|
|
public String getDepartment() {
|
return department;
|
}
|
|
public void setDepartment(String department) {
|
this.department = department;
|
}
|
|
public String getReceiptNumber() {
|
return receiptNumber;
|
}
|
|
public void setReceiptNumber(String receiptNumber) {
|
this.receiptNumber = receiptNumber;
|
}
|
|
|
public OpeUseFlow getSelectOne() {
|
return selectOne;
|
}
|
|
public void setSelectOne(OpeUseFlow selectOne) {
|
this.selectOne = selectOne;
|
}
|
|
|
public List<PersonUseDetail> getPersonUseDetail() {
|
return personUseDetail;
|
}
|
|
public void setPersonUseDetail(List<PersonUseDetail> personUseDetail) {
|
this.personUseDetail = personUseDetail;
|
}
|
|
public Hashtable getPrintTable() {
|
return printTable;
|
}
|
|
public void setPrintTable(Hashtable printTable) {
|
this.printTable = printTable;
|
}
|
}
|