InformAction.java
package com.mycim.webapp.actions.setting.system.inform;
import com.fa.sesa.exception.Assert;
import com.fa.sesa.exception.Errors;
import com.fa.sesa.threadlocal.LocalContext;
import com.mycim.framework.jdbc.Page;
import com.mycim.framework.utils.beans.BeanUtils;
import com.mycim.framework.utils.lang.StringUtils;
import com.mycim.framework.utils.lang.collections.MapUtils;
import com.mycim.framework.utils.lang.time.DateUtils;
import com.mycim.valueobject.MessageIdList;
import com.mycim.valueobject.ObjectList;
import com.mycim.valueobject.consts.Constants;
import com.mycim.valueobject.consts.ReferenceDetailNames;
import com.mycim.valueobject.consts.TransactionNames;
import com.mycim.valueobject.security.User;
import com.mycim.valueobject.sys.ReferenceFile;
import com.mycim.valueobject.sys.ReferenceFileDetail;
import com.mycim.webapp.actions.CimSetupAction;
import com.mycim.webapp.forms.security.UserInfoForm;
import com.mycim.webapp.websocket.InformSocketServerManager;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.springframework.beans.factory.annotation.Autowired;
import javax.print.DocFlavor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.*;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
public class InformAction extends CimSetupAction {
@Override
public ActionForward init(ActionMapping mapping, ActionForm form, HttpServletRequest request,
HttpServletResponse response) throws Exception {
return mapping.findForward("initInform");
}
public Page getInformUserList(UserInfoForm form, Map params) {
User user = new User();
int startRow = MapUtils.getIntValue(params, "start");
int pageSize = MapUtils.getIntValue(params, "limit");
int thisPage = (startRow / pageSize) + 1;
Page page = new Page();
page.setPageNo(thisPage);
page.setPageSize(pageSize);
BeanUtils.copyProperties(form, user);
page = securityService.getInformUser(user, page);
page.getResults().stream().map(obj -> {
User userInform = (User) obj;
if(StringUtils.isBlank(userInform.getInformFlag())) {
userInform.setInformFlag(Constants.INFORM_STATUS.NOT_INFORM);
}
return userInform;
}).collect(Collectors.toList());
return page;
}
public void switchInfom(Map map){
String userRrns = MapUtils.getString(map,"userRrns");
String informFlag = MapUtils.getString(map, "informFlag");
List<String> userRrnList = Arrays.asList(StringUtils.split(userRrns,","));
securityService.releaseOrCancelInformToUser(userRrnList, informFlag);
}
public Page getInformHistory(UserInfoForm form, Map params){
User user = new User();
int startRow = MapUtils.getIntValue(params, "start");
int pageSize = MapUtils.getIntValue(params, "limit");
int thisPage = (startRow / pageSize) + 1;
Page page = new Page();
page.setPageNo(thisPage);
page.setPageSize(pageSize);
BeanUtils.copyProperties(form, user);
page = securityService.getInformHistory(user,page);
return page;
}
public List<Map> getDepartmentStore(HttpServletRequest request) {
List<ReferenceFileDetail> referenceFileDetails = sysService.getRefFileValues(ReferenceDetailNames.USER_DEPARTMENT,LocalContext.getFacilityRrn());
List<Map> list = new ArrayList();
for (ReferenceFileDetail ref : referenceFileDetails){
Map map = new HashMap();
map.put("key", ref.getKey1Value());
map.put("value", ref.getData1Value());
list.add(map);
}
return list;
}
public Map<String,Object> checkReferenceFileDetail(HttpServletRequest request){
Map<String,Object> map = new HashMap<>();
// 判断类表是否存在
ReferenceFile referenceFile = new ReferenceFile(ReferenceDetailNames.SYSTEM_NOTICE, getNamedSpace(ObjectList.REFERENCE_FILE_KEY, LocalContext.getFacilityRrn()),
ObjectList.REFERENCE_FILE_KEY);
referenceFile = (ReferenceFile) getInstance(referenceFile);
Assert.isFalse(referenceFile.getInstanceRrn() <= 0, Errors.create().key(MessageIdList.REFERENCEFILE_MISSING_ID)
.content("Reference File ID is not exist!").build());
List<ReferenceFileDetail> referenceFileDetails = sysService.getRefFileValues(ReferenceDetailNames.SYSTEM_NOTICE, LocalContext.getFacilityRrn());
Map<String,String> refMap =
referenceFileDetails.stream().collect(
Collectors.toMap(ReferenceFileDetail::getKey1Value, ReferenceFileDetail::getData1Value));
map.put("informTitle",refMap.get("MSGTITLE"));
map.put("informContent",refMap.get("MSGCONTENT"));
Pattern pattern = Pattern.compile("^\\d{4}\\/\\d{2}\\/\\d{2}\\ \\d{2}\\:\\d{2}:\\d{2}$");
String msgTime = refMap.get("MSGTIME");
if(StringUtils.isNotBlank(msgTime) && pattern.matcher(msgTime).matches()){
String[] str = StringUtils.split(msgTime, " ");
map.put("informDate", str[0]);
map.put("informTime", str[1]);
}else {
map.put("informDate", null);
map.put("informTime", null);
}
String msgDate = refMap.get("MSGDATE");
if(StringUtils.isNotBlank(msgDate) && pattern.matcher(msgDate).matches()){
String[] str = StringUtils.split(msgDate, " ");
map.put("releaseVersionDate", str[0]);
map.put("releaseVersionTime", str[1]);
}else {
map.put("releaseVersionDate", null);
map.put("releaseVersionTime", null);
}
return map;
}
public void saveInformInfo(Map<String,Object> params) {
StringBuilder msgReleaseDateStr = new StringBuilder();
msgReleaseDateStr.append(MapUtils.getString(params, "releaseVersionDate")).append(" ")
.append(MapUtils.getString(params,"releaseVersionTime"));
StringBuilder msgInformDateStr = new StringBuilder();
msgInformDateStr.append(MapUtils.getString(params, "informDate")).append(" ")
.append(MapUtils.getString(params,"informTime"));
Map<String,Object> maps = new HashMap<>();
maps.put("MSGCONTENT",MapUtils.getString(params,"informContent"));
maps.put("MSGTITLE",MapUtils.getString(params,"informTitle"));
maps.put("MSGDATE",msgReleaseDateStr.toString());
maps.put("MSGTIME",msgInformDateStr.toString());
List<ReferenceFileDetail> referenceFileDetailList = new ArrayList<>();
for (String key : maps.keySet()){
ReferenceFileDetail referenceFileDetail = new ReferenceFileDetail(ReferenceDetailNames.SYSTEM_NOTICE,
getNamedSpace(ObjectList.REFERENCE_FILE_KEY,
LocalContext.getFacilityRrn()),
ObjectList.REFERENCE_FILE_KEY);
referenceFileDetail.setTransId(TransactionNames.MODIFY_KEY);
referenceFileDetail.setTransPerformedby(LocalContext.getUserId());
referenceFileDetail.setKey1Value(key);
referenceFileDetail.setKey2Value(" ");
referenceFileDetail.setData1Value(MapUtils.getString(maps,key));
referenceFileDetailList.add(referenceFileDetail);
}
sysService.updateReferenceFileDetailList(referenceFileDetailList);
}
}