Index: ssts-schedule/src/main/java/com/forgon/disinfectsysyem/schedule/dto/ConditionScheduleDTO.java =================================================================== diff -u --- ssts-schedule/src/main/java/com/forgon/disinfectsysyem/schedule/dto/ConditionScheduleDTO.java (revision 0) +++ ssts-schedule/src/main/java/com/forgon/disinfectsysyem/schedule/dto/ConditionScheduleDTO.java (revision 23979) @@ -0,0 +1,49 @@ +package com.forgon.disinfectsysyem.schedule.dto; + +/** + * 条件查询用DTO + * @author YanWeiNing + * + */ +public class ConditionScheduleDTO { + + /** + * order字段 + */ + private String order; + + /** + * 排序 + */ + private String stort; + + /** + * 关键词 + */ + private String key; + + public String getOrder() { + return order; + } + + public void setOrder(String order) { + this.order = order; + } + + public String getStort() { + return stort; + } + + public void setStort(String stort) { + this.stort = stort; + } + + public String getKey() { + return key; + } + + public void setKey(String key) { + this.key = key; + } + +} Index: ssts-schedule/src/main/java/com/forgon/disinfectsystem/schedule/vo/UserScheduleDTO.java =================================================================== diff -u --- ssts-schedule/src/main/java/com/forgon/disinfectsystem/schedule/vo/UserScheduleDTO.java (revision 0) +++ ssts-schedule/src/main/java/com/forgon/disinfectsystem/schedule/vo/UserScheduleDTO.java (revision 23979) @@ -0,0 +1,59 @@ +package com.forgon.disinfectsystem.schedule.vo; + + + +/** + * 用户排班信息DTO + * @author YanWeiNing + * + */ +public class UserScheduleDTO { + + /** + * id + */ + private Long id; + + /** + * 用户id + */ + private Long userId; + + /** + * 用户名字 + */ + private String userName; + + /** + * 用户休假日期 + */ + private Long holiDay; + + + + + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public Long getUserId() { + return userId; + } + + public void setUserId(Long userId) { + this.userId = userId; + } + + public Long getHoliDay() { + return holiDay; + } + + public void setHoliDay(Long holiDay) { + this.holiDay = holiDay; + } +} Index: ssts-schedule/src/main/java/com/forgon/disinfectsysyem/schedule/dto/PageDTO.java =================================================================== diff -u --- ssts-schedule/src/main/java/com/forgon/disinfectsysyem/schedule/dto/PageDTO.java (revision 0) +++ ssts-schedule/src/main/java/com/forgon/disinfectsysyem/schedule/dto/PageDTO.java (revision 23979) @@ -0,0 +1,75 @@ +package com.forgon.disinfectsysyem.schedule.dto; + +import javax.validation.constraints.Min; +import javax.validation.constraints.NotNull; + + +public class PageDTO { + + /** + * 页码 + */ + //@NotNull(message = "页码不能为空!") + //@Min(value = 1, message = "页码最小为1") + private Integer pageNum; + + /** + * 每页显示行数 + */ + //@NotNull(message = "每页显示数量不能为空!") + private Integer pageSize; + + /** + * 总数 + */ + private Integer totalResult; + + /** + * 分页的数据 + */ + private Object data; + + + public PageDTO() {} + + + public Integer getPageNum() { + + return pageNum; + } + + + public void setPageNum(Integer pageNum) { + this.pageNum = pageNum; + } + + + public Integer getPageSize() { + return pageSize; + } + + + public void setPageSize(Integer pageSize) { + this.pageSize = pageSize; + } + + + public Integer getTotalResult() { + return totalResult; + } + + + public void setTotalResult(Integer totalResult) { + this.totalResult = totalResult; + } + + + public Object getData() { + return data; + } + + + public void setData(Object data) { + this.data = data; + } +} Index: ssts-schedule/src/main/java/com/forgon/disinfectsysyem/schedule/dto/CondititonScheduleDefintitionDTO.java =================================================================== diff -u --- ssts-schedule/src/main/java/com/forgon/disinfectsysyem/schedule/dto/CondititonScheduleDefintitionDTO.java (revision 0) +++ ssts-schedule/src/main/java/com/forgon/disinfectsysyem/schedule/dto/CondititonScheduleDefintitionDTO.java (revision 23979) @@ -0,0 +1,18 @@ +package com.forgon.disinfectsysyem.schedule.dto; + +public class CondititonScheduleDefintitionDTO extends ConditionScheduleDTO{ + + /** + * 是否显示全部班次定义(包括历史记录) + */ + private Boolean isAll; + + public Boolean getIsAll() { + return isAll; + } + + public void setIsAll(Boolean isAll) { + this.isAll = isAll; + } + +} Index: ssts-schedule/src/main/java/com/forgon/disinfectsysyem/schedule/dto/ScheduleInformationDTO.java =================================================================== diff -u --- ssts-schedule/src/main/java/com/forgon/disinfectsysyem/schedule/dto/ScheduleInformationDTO.java (revision 0) +++ ssts-schedule/src/main/java/com/forgon/disinfectsysyem/schedule/dto/ScheduleInformationDTO.java (revision 23979) @@ -0,0 +1,63 @@ +package com.forgon.disinfectsysyem.schedule.dto; + + + +import java.util.List; + +import javax.validation.Valid; +import javax.validation.constraints.NotNull; + +import org.hibernate.validator.constraints.NotBlank; +import org.hibernate.validator.constraints.NotEmpty; + + +/** + * 班次信息DTO + * @author YanWeiNing + * + */ +public class ScheduleInformationDTO { + + /** + * 用户id集合 + */ + @NotEmpty(message = "用户id不能用空!") + private List userIds; + + /** + * 班次定义id + */ + @NotNull(message = "班次id不能为空!") + private Long scheduleDefinitionId; + + /** + * 时间段集合 + */ + @Valid + private List timeFrames; + + public Long getScheduleDefinitionId() { + return scheduleDefinitionId; + } + + public void setScheduleDefinitionId(Long scheduleDefinitionId) { + this.scheduleDefinitionId = scheduleDefinitionId; + } + + public List getUserIds() { + return userIds; + } + + public void setUserIds(List userIds) { + this.userIds = userIds; + } + + public List getTimeFrames() { + return timeFrames; + } + + public void setTimeFrames(List timeFrames) { + this.timeFrames = timeFrames; + } + +} Index: ssts-schedule/src/main/java/com/forgon/disinfectsystem/schedule/service/ScheduleDefinitionManagerImpl.java =================================================================== diff -u --- ssts-schedule/src/main/java/com/forgon/disinfectsystem/schedule/service/ScheduleDefinitionManagerImpl.java (revision 0) +++ ssts-schedule/src/main/java/com/forgon/disinfectsystem/schedule/service/ScheduleDefinitionManagerImpl.java (revision 23979) @@ -0,0 +1,334 @@ +package com.forgon.disinfectsystem.schedule.service; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import javax.annotation.Resource; + +import net.sf.json.JSONObject; + +import org.apache.commons.lang.StringUtils; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.forgon.directory.acegi.tools.AcegiHelper; +import com.forgon.directory.model.OrgUnit; +import com.forgon.directory.vo.LoginUserData; +import com.forgon.disinfectsystem.entity.basedatamanager.schedule.ScheduleDefinition; +import com.forgon.disinfectsysyem.schedule.dto.CondititonScheduleDefintitionDTO; +import com.forgon.disinfectsysyem.schedule.dto.PageDTO; +import com.forgon.disinfectsysyem.schedule.dto.ScheduleDefinitionDTO; +import com.forgon.log.model.Log; +import com.forgon.log.service.LogManager; +import com.forgon.security.tools.Util; +import com.forgon.serialnumber.model.SerialNum; +import com.forgon.serialnumber.service.SerialNumManager; +import com.forgon.tools.GB2Alpha; +import com.forgon.tools.GB2WB; +import com.forgon.tools.db.DatabaseUtil; +import com.forgon.tools.hibernate.BasePoManagerImpl; +import com.forgon.tools.hibernate.ObjectDao; +import com.forgon.tools.util.ForgonDateUtils; +import com.forgon.workflow.model.WorkFlowApprovalAuthorization; + +public class ScheduleDefinitionManagerImpl extends BasePoManagerImpl implements ScheduleDefinitionManager{ + + @Resource + private LogManager appLogManager; + + @Resource + private SerialNumManager serialNumManager; + + @Override + public PageDTO findFindScheduleDefinitionResult(PageDTO pageDTO,CondititonScheduleDefintitionDTO condition) { + //1、获得查询条件 + StringBuilder whereSqlCondition = new StringBuilder(); + //sql weher + whereSqlCondition.append("where 1=1"); + //是否获得全部排班定义(包含历史记录) + if(null != condition.getIsAll() && !condition.getIsAll()){ + //只显示状态不是已删除的源定义 + whereSqlCondition.append(" and isSource = 1 and isDeleteStatus = 0"); + } + //关键词模糊查询 + String keySpell = condition.getKey(); + if(StringUtils.isNotBlank(keySpell)){ + keySpell = keySpell.trim(); + Matcher matcher = Pattern.compile("[\\u4E00-\\u9FA5]+").matcher(keySpell); + String searchMode = AcegiHelper.getLoginUser().getSearchMode(); + if (matcher.find()) { + whereSqlCondition.append(" and (po.spelling like '%" + keySpell + "%' or po.wbCode like '%" + + keySpell + "%' or po.externalCode like '%" + keySpell + + "%' or po.sheduleName like '%" + keySpell + "%')"); + } else { + keySpell = keySpell.toUpperCase(); + whereSqlCondition.append( Util.getSearchSQLByUserSetting(searchMode, keySpell)); + } + } + //sql order + String orderKey = condition.getOrder(); + //2、开始查询 + Integer pageNum = pageDTO.getPageNum();//页码 + Integer pageSize = pageDTO.getPageSize();//每页显示的行数 + //定义总数 + pageDTO.setTotalResult(objectDao.countObjectBySql(ScheduleDefinition.class.getSimpleName(), whereSqlCondition.toString())); + //返回定义数据 + List sdList = new ArrayList(); + //分页 + if(null != pageNum && null !=pageSize){ + //分页后的数据(注意该工具方法页码是从0开始取值) + @SuppressWarnings("unchecked") + List sdList_Page = objectDao.findBySql( + ScheduleDefinition.class.getSimpleName(), whereSqlCondition.toString(),pageNum-1 ,pageSize,orderKey); + sdList = sdList_Page; + }else{ + //不分页 + @SuppressWarnings("unchecked") + List sdList_NoPage = objectDao.findBySql( + ScheduleDefinition.class.getSimpleName(), whereSqlCondition.toString(), orderKey); + sdList = sdList_NoPage; + } + //3、转换为DTO + List data = new ArrayList(); + for (ScheduleDefinition sd: sdList) { + ScheduleDefinitionDTO sdDTO = new ScheduleDefinitionDTO(); + BeanUtils.copyProperties(sd,sdDTO); + data.add(sdDTO); + } + pageDTO.setData(data); + return pageDTO; + } + + + @Override + public void saveScheduleDefinition(ScheduleDefinitionDTO sdDTO) { + //1、获得科室 + String orgUnitCode = sdDTO.getOrgUnitCode();//科室编码 + OrgUnit orgunit = (OrgUnit) objectDao.getByProperty(OrgUnit.class.getSimpleName(), "orgUnitCoding", orgUnitCode); + if(null == orgunit){ + throw new RuntimeException("未找到科室编码为"+ orgUnitCode +"的科室!"); + } + //2、校验所属科室下是否已经有重复的班次名称 + String sheduleName = sdDTO.getSheduleName();//班次名称 + if(isSameSheduleName(orgUnitCode,sheduleName)){ + throw new RuntimeException(String.format("科室%s下已有班次名:%s", orgunit.getName(),sheduleName)); + } + //3、获得当前用户信息 + LoginUserData userData = AcegiHelper.getLoginUser(); + //4、新增 + ScheduleDefinition sd = new ScheduleDefinition(); + Boolean update = false; + String operationStatus = ScheduleDefinition.OPERATIONSTATUS_ADD; + //保存数据 + saveOrUpdateScheduleDefinition_PROPERTY(sd,sdDTO,operationStatus,update,userData,orgunit); + objectDao.saveOrUpdate(sd); + //5、写日志 + writeLog_saveOrupdate(sd,update); + } + + @Override + public void updateScheduleDefinition(ScheduleDefinitionDTO sdDTO) { + Long id = sdDTO.getId(); + Boolean update = true; + String operationStatus = ScheduleDefinition.OPERATIONSTATUS_UPDATE;//操作状态:修改 + if(DatabaseUtil.isPoIdValid(id)){ + //1、获得当前数据库的班次定义 + ScheduleDefinition nowSd = this.getForUpdate(id); + if(null == nowSd){ + throw new RuntimeException("该班次已被删除"); + } + //2、获得科室 + String orgUnitCode = sdDTO.getOrgUnitCode();//科室编码 + OrgUnit orgunit = (OrgUnit) objectDao.getByProperty(OrgUnit.class.getSimpleName(), "orgUnitCoding", orgUnitCode); + if(null == orgunit){ + throw new RuntimeException("未找到科室编码为"+ orgUnitCode +"的科室!"); + } + //3、获得当前用户信息 + LoginUserData userData = AcegiHelper.getLoginUser(); + //4、若修改了班次名:校验所属科室下是否已经有重复的班次名称 + String newSheduleName = sdDTO.getSheduleName();//更新班次名称 + String nowSheduleName = nowSd.getSheduleName();//当前班次名称 + if(!nowSheduleName.equals(newSheduleName)){ + if(isSameSheduleName(orgUnitCode,newSheduleName)){ + throw new RuntimeException(String.format("科室%s下已有班次名:%s", orgunit.getName(),newSheduleName)); + } + } + //5、更新 + //保存一条更新前的数据(用于历史记录) + saveHistoryScheduleDefinition(nowSd,userData,operationStatus); + //修改数据 + saveOrUpdateScheduleDefinition_PROPERTY(nowSd,sdDTO,operationStatus,update,userData,orgunit); + objectDao.saveOrUpdate(nowSd); + //6、写日志 + writeLog_saveOrupdate(nowSd,update); + }else{ + throw new RuntimeException("id参数有误:"+id); + } + } + + + + @Override + public void deleteScheduleDefinition(List ids) { + //获得当前用户信息 + LoginUserData userData = AcegiHelper.getLoginUser(); + for (String id : ids) { + if(DatabaseUtil.isPoIdValid(id)){//id字符串是否有效 + ScheduleDefinition sd = this.getForUpdate(id); + if(null == sd){ + throw new RuntimeException("该班次已被删除"); + } + //保存删除前的数据(用于历史记录) + //saveHistoryScheduleDefinition(sd,userData,ScheduleDefinition.OPERATIONSTATUS_DELETE); + //删除 + objectDao.delete(sd); + //写日志 + appLogManager.saveLog(AcegiHelper.getLoginUser(), Log.MODEL_SCHDEULE, Log.TYPE_DELETE,sd.toString()); + }else{ + throw new RuntimeException("参数有误:"+id); + } + } + } + + @Override + public void updateScheduleDefinitionDeleteStatue(List ids) { + for (String id : ids) { + if(DatabaseUtil.isPoIdValid(id)){//id字符串是否有效 + ScheduleDefinition sd = this.getForUpdate(id); + if(null == sd){ + throw new RuntimeException("该班次已被删除"); + } + //设为删除状态 + sd.setIsDeleteStatus(true); + sd.setOperationStatus(ScheduleDefinition.OPERATIONSTATUS_DELETE); + this.update(sd); + //写日志 + appLogManager.saveLog(AcegiHelper.getLoginUser(),Log.MODEL_SCHDEULE, Log.TYPE_UPDATE,String.format("编号%s,id%s的排班定义修改为删除状态", sd.getSerialNumber(),sd.getId())); + }else{ + throw new RuntimeException("参数有误:"+id); + } + } + } + + /** + * 设置班次定义数据 + * @param sd 需要设置的班次定义 + * @param sdDTO 班次定义数据 + * @param operationStatus 操作状态 + * @param update 是否更新 + * @param userData 当前用户信息 + * @param orgunit 科室 + */ + private void saveOrUpdateScheduleDefinition_PROPERTY(ScheduleDefinition sd,ScheduleDefinitionDTO sdDTO, + String operationStatus,boolean update,LoginUserData userData,OrgUnit orgunit){ + //不会更新则需要设置编号,源定义,创建人 + if(!update && ScheduleDefinition.OPERATIONSTATUS_ADD.equals(operationStatus)){ + sd.setSerialNumber(serialNumManager.getSerialNumberStr(SerialNum.TYPE_EXPENSIVEGOODS_BILL));//唯一编号 + sd.setIsSource(true);//源定义(用来区分是否历史记录) + sd.setCreateTime(new Date());//创建时间 + sd.setCreatedUserId(userData.getUserId());//创建人id + sd.setCreatedUserName(userData.getUserName());//创建人名称 + } + sd.setOperationStatus(operationStatus);//记录操作状态 + sd.setEndWorkingTime(sdDTO.getEndWorkingTime());//上班时间 + sd.setStartWorkingTime(sdDTO.getStartWorkingTime());//下班时间 + sd.setRemark(sdDTO.getRemark());//备注 + sd.setSheduleName(sdDTO.getSheduleName());//班次名称 + sd.setOrgUnitCode(orgunit.getOrgUnitCoding());//科室编号 + sd.setOrgUnitName(orgunit.getName());//科室名称 + sd.setLastUpdateTime(new Date());//最后修改时间 + sd.setLastUpdateUserId(userData.getUserId());//最后修改人id + sd.setLastUpdateUserName(userData.getUserFullName());//最后修改人名字 + sd.setSpelling(GB2Alpha.string2Alpha(sdDTO.getSheduleName()));//拼音码 + sd.setWbCode(GB2WB.getWBCode(sdDTO.getSheduleName()));//五笔码 + } + + /** + * 保存历史记录班次定义 + * @param sd + * @param userData + * @param operationStatus + */ + private void saveHistoryScheduleDefinition(ScheduleDefinition sd, + LoginUserData userData,String operationStatus){ + ScheduleDefinition historySd = new ScheduleDefinition(); + historySd.setIsSource(false);//非源定义,历史记录 + historySd.setOperationStatus(operationStatus);//记录操作状态 + historySd.setSerialNumber(sd.getSerialNumber());//编号 + historySd.setEndWorkingTime(sd.getEndWorkingTime()); + historySd.setStartWorkingTime(sd.getStartWorkingTime()); + historySd.setRemark(sd.getRemark()); + historySd.setSheduleName(sd.getSheduleName());//班次名称 + historySd.setOrgUnitCode(sd.getOrgUnitCode()); + historySd.setOrgUnitName(sd.getOrgUnitName()); + historySd.setCreateTime(sd.getCreateTime());//创建时间 + historySd.setCreatedUserId(sd.getCreatedUserId());//创建人id + historySd.setCreatedUserName(sd.getCreatedUserName());//创建人名称 + historySd.setLastUpdateTime(new Date());//最后修时间 + historySd.setLastUpdateUserId(userData.getUserId());//最后修改人id + historySd.setLastUpdateUserName(userData.getUserFullName());//最后修改人名称 + historySd.setSpelling(sd.getSpelling());//拼音码 + historySd.setWbCode(sd.getWbCode());//五笔码 + objectDao.save(historySd); + } + + /** + * 校验所属科室下是否已经有重复的班次名称 + * @param orgUnitCode + * @param sheduleName + * @return + */ + private Boolean isSameSheduleName(String orgUnitCode,String sheduleName){ + String whereSql = String.format("po.orgUnitCode = %s and po.sheduleName = '%s' and isSource = 1 and isDeleteStatus = 0", + orgUnitCode,sheduleName); + int count = this.count(whereSql); + Boolean check = count >=1 ? true:false; + return check; + } + + /** + * 记录新增/更新日志 + * @param sd + * @param update 更新:true 新增:fasle + */ + private void writeLog_saveOrupdate(ScheduleDefinition sd ,Boolean update){ + JSONObject obj = new JSONObject(); + obj.put("标识字段", sd.getId()); + obj.put("编号", sd.getSerialNumber()); + obj.put("是否源定义", sd.getIsSource()); + obj.put("班次名称", sd.getSheduleName()); + obj.put("科室编码", sd.getOrgUnitCode()); + obj.put("科室名称", sd.getOrgUnitName()); + obj.put("上班时间", sd.getStartWorkingTime()); + obj.put("下班时间", sd.getEndWorkingTime()); + obj.put("备注", sd.getRemark()); + obj.put("操作记录", sd.getOperationStatus()); + appLogManager.saveLog(AcegiHelper.getLoginUser(), Log.MODEL_SCHDEULE, (update ? Log.TYPE_UPDATE : Log.TYPE_ADD), obj.toString()); + + } + + + @Override + public List findScheduleDefinitionsByKeyWord(String keyWord) { + String whereSql = "where 1=1"; + if(StringUtils.isNotBlank(keyWord)){ + keyWord = keyWord.trim(); + Matcher matcher = Pattern.compile("[\\u4E00-\\u9FA5]+").matcher(keyWord); + String searchMode = AcegiHelper.getLoginUser().getSearchMode(); + if (matcher.find()) { + whereSql += " and (po.spelling like '%" + keyWord + "%' or po.wbCode like '%" + + keyWord + "%' or po.externalCode like '%" + keyWord + + "%' or po.sheduleName like '%" + keyWord + "%')"; + } else { + keyWord = keyWord.toUpperCase(); + whereSql += Util.getSearchSQLByUserSetting(searchMode, keyWord); + } + } + return this.getByHql(whereSql); + } + +} Index: ssts-schedule/src/main/java/com/forgon/disinfectsystem/schedule/service/ScheduleInformationManagerImpl.java =================================================================== diff -u --- ssts-schedule/src/main/java/com/forgon/disinfectsystem/schedule/service/ScheduleInformationManagerImpl.java (revision 0) +++ ssts-schedule/src/main/java/com/forgon/disinfectsystem/schedule/service/ScheduleInformationManagerImpl.java (revision 23979) @@ -0,0 +1,25 @@ +package com.forgon.disinfectsystem.schedule.service; + +import com.forgon.disinfectsystem.entity.basedatamanager.schedule.ScheduleInformation; +import com.forgon.disinfectsysyem.schedule.dto.ScheduleInformationDTO; +import com.forgon.tools.hibernate.BasePoManagerImpl; + +public class ScheduleInformationManagerImpl extends BasePoManagerImpl implements ScheduleInformationManager{ + + @Override + public void saveOrUpdateScheduleInformation(ScheduleInformationDTO sInformationDTO) { + //1、获得用户id + //根据id数遍历 根据id查询是否已有用户排班信息 + //if-》若有这添加排班信息 + //若无这创建用户排班 + + + + //1、获得时间段个数 + //2、根据时间段遍历 + //3、获得时间段的开始时间 + //4、保存排班信息 + + } + +} Index: ssts-schedule/src/main/java/com/forgon/disinfectsysyem/schedule/dto/TimeFrameDTO.java =================================================================== diff -u --- ssts-schedule/src/main/java/com/forgon/disinfectsysyem/schedule/dto/TimeFrameDTO.java (revision 0) +++ ssts-schedule/src/main/java/com/forgon/disinfectsysyem/schedule/dto/TimeFrameDTO.java (revision 23979) @@ -0,0 +1,49 @@ +package com.forgon.disinfectsysyem.schedule.dto; + +import java.util.Date; + +import javax.validation.constraints.Future; +import javax.validation.constraints.NotNull; + +import com.fasterxml.jackson.annotation.JsonFormat; + + + + +/** + * 时间段DTO + * @author YanWeiNing + * + */ +public class TimeFrameDTO { + + /** + * 开始时间 + */ + @NotNull(message = "开始时间不能为空!") + @JsonFormat(pattern = "yyyy-MM-dd",timezone="GMT+8") + private Date timeMin; + + /** + * 结束时间 + */ + @NotNull(message = "结束时间不能为空!") + @JsonFormat(pattern = "yyyy-MM-dd",timezone="GMT+8") + private Date timeMax; + + public Date getTimeMin() { + return timeMin; + } + + public void setTimeMin(Date timeMin) { + this.timeMin = timeMin; + } + public Date getTimeMax() { + return timeMax; + } + + public void setTimeMax(Date timeMax) { + this.timeMax = timeMax; + } + +} Index: ssts-schedule/src/main/java/com/forgon/disinfectsystem/schedule/vo/ApiResultVo.java =================================================================== diff -u --- ssts-schedule/src/main/java/com/forgon/disinfectsystem/schedule/vo/ApiResultVo.java (revision 0) +++ ssts-schedule/src/main/java/com/forgon/disinfectsystem/schedule/vo/ApiResultVo.java (revision 23979) @@ -0,0 +1,67 @@ +package com.forgon.disinfectsystem.schedule.vo; + +import org.springframework.http.HttpStatus; + +/** + * + * @author YanWeiNing + * @param + */ +public class ApiResultVo { + + private int code; + + private String msg; + + private T data; + + + public ApiResultVo(T data) { + this(HttpStatus.OK.value(), null, data); + } + + public ApiResultVo(int code, String msg) { + this(code, msg, null); + } + + public ApiResultVo(int code, String msg, T data) { + this.code = code; + this.msg = msg; + this.data = data; + } + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public String getMsg() { + return msg; + } + + public void setMsg(String msg) { + this.msg = msg; + } + + public T getData() { + return data; + } + + public void setData(T data) { + this.data = data; + } + + @Override + public String toString() { + return "ApiResultVo [code=" + code + ", msg=" + msg + ", data=" + data + + "]"; + } + + + + + +} Index: ssts-schedule/src/main/java/com/forgon/disinfectsystem/schedule/controller/ScheduleInformationController.java =================================================================== diff -u --- ssts-schedule/src/main/java/com/forgon/disinfectsystem/schedule/controller/ScheduleInformationController.java (revision 0) +++ ssts-schedule/src/main/java/com/forgon/disinfectsystem/schedule/controller/ScheduleInformationController.java (revision 23979) @@ -0,0 +1,68 @@ +package com.forgon.disinfectsystem.schedule.controller; + +import javax.annotation.Resource; +import javax.validation.Valid; + +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RestController; + +import com.forgon.disinfectsystem.schedule.enums.ErrorCodeEnum; +import com.forgon.disinfectsystem.schedule.service.ScheduleDefinitionManager; +import com.forgon.disinfectsystem.schedule.service.ScheduleInformationManager; +import com.forgon.disinfectsystem.schedule.service.ScheduleInformationManagerImpl; +import com.forgon.disinfectsystem.schedule.util.ApiResultVoUtil; +import com.forgon.disinfectsystem.schedule.vo.ApiResultVo; +import com.forgon.disinfectsysyem.schedule.dto.CondititonScheduleDefintitionDTO; +import com.forgon.disinfectsysyem.schedule.dto.PageDTO; +import com.forgon.disinfectsysyem.schedule.dto.ScheduleInformationDTO; + +/** + * 排班信息controller + * @author YanWeiNing + * + */ +@RestController +@RequestMapping(value ="/disinfectSystem/scheduleInformation") +public class ScheduleInformationController { + + @Resource + private ScheduleInformationManager scheduleInformationManager; + + /** + * 查询班次信息 + */ + @RequestMapping(value = "/findScheduleInformationController",method = RequestMethod.POST) + public ApiResultVo findScheduleDefinitions(@Valid PageDTO pageDTO,BindingResult bresult ,@RequestBody CondititonScheduleDefintitionDTO condtitonDTO){ + if(bresult.hasErrors()){ + return ApiResultVoUtil.bindError(ErrorCodeEnum.BIND_ERROR,bresult.getFieldError().getDefaultMessage()); + } + try { + //pageDTO = scheduleDefinitionManager.findFindScheduleDefinitionResult(pageDTO,condtitonDTO); + } catch (Exception e) { + e.printStackTrace(); + return ApiResultVoUtil.error(ErrorCodeEnum.ERROR.getCode(), e.getMessage()); + } + return ApiResultVoUtil.success(pageDTO); + } + + /** + * 保存排班信息 + */ + @RequestMapping(value = "/saveScheduleInformations",method = RequestMethod.POST ) + public ApiResultVo saveScheduleInformations(@RequestBody @Valid ScheduleInformationDTO sIDTO,BindingResult bresult){ + if(bresult.hasErrors()){ + return ApiResultVoUtil.bindError(ErrorCodeEnum.BIND_ERROR, bresult.getFieldError().getDefaultMessage()); + } + try { + scheduleInformationManager.saveOrUpdateScheduleInformation(sIDTO); + } catch (Exception e) { + e.printStackTrace(); + return ApiResultVoUtil.error(ErrorCodeEnum.ERROR.getCode(), e.getMessage()); + } + return ApiResultVoUtil.success(true); + } + +} Index: ssts-schedule/src/main/java/com/forgon/disinfectsystem/schedule/util/ApiResultVoUtil.java =================================================================== diff -u --- ssts-schedule/src/main/java/com/forgon/disinfectsystem/schedule/util/ApiResultVoUtil.java (revision 0) +++ ssts-schedule/src/main/java/com/forgon/disinfectsystem/schedule/util/ApiResultVoUtil.java (revision 23979) @@ -0,0 +1,28 @@ +package com.forgon.disinfectsystem.schedule.util; + +import com.forgon.disinfectsystem.schedule.enums.ErrorCodeEnum; +import com.forgon.disinfectsystem.schedule.vo.ApiResultVo; + +public final class ApiResultVoUtil { + + private ApiResultVoUtil() { + + } + + public static ApiResultVo success(T data) { + return new ApiResultVo<>(data); + } + + public static ApiResultVo error(ErrorCodeEnum codeMsg) { + return new ApiResultVo<>(codeMsg.getCode(), codeMsg.getMsg()); + } + + public static ApiResultVo error(int code, String codeMsg) { + return new ApiResultVo<>(code, codeMsg); + } + + public static ApiResultVo bindError(ErrorCodeEnum codeMsg, String msg) { + return new ApiResultVo<>(codeMsg.getCode(),codeMsg.getMsg() + msg); + } + +} Index: ssts-schedule/src/main/java/com/forgon/disinfectsystem/schedule/enums/ErrorCodeEnum.java =================================================================== diff -u --- ssts-schedule/src/main/java/com/forgon/disinfectsystem/schedule/enums/ErrorCodeEnum.java (revision 0) +++ ssts-schedule/src/main/java/com/forgon/disinfectsystem/schedule/enums/ErrorCodeEnum.java (revision 23979) @@ -0,0 +1,33 @@ +package com.forgon.disinfectsystem.schedule.enums; + +public enum ErrorCodeEnum { + + OK(200, "成功"), + + BIND_ERROR(10000, "参数校验异常:"), + + ERROR(500, "内部错误"); + + private int code; + + private String msg; + + private ErrorCodeEnum(int code, String msg) { + this.code = code; + this.msg = msg; + } + + public int getCode() { + return code; + } + + public String getMsg() { + return msg; + } + + + + + + +} Index: ssts-schedule/src/main/java/com/forgon/disinfectsystem/schedule/service/ScheduleInformationManager.java =================================================================== diff -u --- ssts-schedule/src/main/java/com/forgon/disinfectsystem/schedule/service/ScheduleInformationManager.java (revision 0) +++ ssts-schedule/src/main/java/com/forgon/disinfectsystem/schedule/service/ScheduleInformationManager.java (revision 23979) @@ -0,0 +1,20 @@ +package com.forgon.disinfectsystem.schedule.service; + +import com.forgon.disinfectsystem.entity.basedatamanager.schedule.ScheduleInformation; +import com.forgon.disinfectsysyem.schedule.dto.ScheduleInformationDTO; +import com.forgon.tools.hibernate.BasePoManager; + +/** + * 排班信息业务接口 + * @author YanWeiNing + * + */ +public interface ScheduleInformationManager extends BasePoManager{ + + /** + * 保存或更新排班信息 + * @param scheduleInformationDTO + */ + public void saveOrUpdateScheduleInformation(ScheduleInformationDTO scheduleInformationDTO); + +} Index: ssts-web/src/main/resources/spring/applicationContext-disinfectsystem-service.xml =================================================================== diff -u -r23834 -r23979 --- ssts-web/src/main/resources/spring/applicationContext-disinfectsystem-service.xml (.../applicationContext-disinfectsystem-service.xml) (revision 23834) +++ ssts-web/src/main/resources/spring/applicationContext-disinfectsystem-service.xml (.../applicationContext-disinfectsystem-service.xml) (revision 23979) @@ -1117,7 +1117,7 @@ - + @@ -1178,6 +1178,30 @@ + + + + + + + + + + + + + + + + + + + + + + Index: ssts-schedule/src/main/java/com/forgon/disinfectsystem/schedule/controller/ScheduleDefinitionController.java =================================================================== diff -u --- ssts-schedule/src/main/java/com/forgon/disinfectsystem/schedule/controller/ScheduleDefinitionController.java (revision 0) +++ ssts-schedule/src/main/java/com/forgon/disinfectsystem/schedule/controller/ScheduleDefinitionController.java (revision 23979) @@ -0,0 +1,139 @@ +package com.forgon.disinfectsystem.schedule.controller; + +import java.util.List; + +import javax.annotation.Resource; +import javax.validation.Valid; + +import org.springframework.beans.BeanUtils; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import com.forgon.Constants; +import com.forgon.disinfectsystem.entity.basedatamanager.schedule.ScheduleDefinition; +import com.forgon.disinfectsystem.schedule.enums.ErrorCodeEnum; +import com.forgon.disinfectsystem.schedule.service.ScheduleDefinitionManager; +import com.forgon.disinfectsystem.schedule.util.ApiResultVoUtil; +import com.forgon.disinfectsystem.schedule.vo.ApiResultVo; +import com.forgon.disinfectsysyem.schedule.dto.CondititonScheduleDefintitionDTO; +import com.forgon.disinfectsysyem.schedule.dto.PageDTO; +import com.forgon.disinfectsysyem.schedule.dto.ScheduleDefinitionDTO; +import com.forgon.tools.string.StringTools; + +/** + * 班次定义controller + * @author YanWeiNing + * + */ +@RestController +@RequestMapping(value ="/disinfectSystem/scheduleDefinition") +public class ScheduleDefinitionController { + + @Resource + private ScheduleDefinitionManager scheduleDefinitionManager; + + /** + * 查询班次定义 + */ + @RequestMapping(value = "/findScheduleDefinitions",method = RequestMethod.POST) + public ApiResultVo findScheduleDefinitions(@Valid PageDTO pageDTO,BindingResult bresult ,@RequestBody CondititonScheduleDefintitionDTO condtitonDTO){ + if(bresult.hasErrors()){ + return ApiResultVoUtil.bindError(ErrorCodeEnum.BIND_ERROR,bresult.getFieldError().getDefaultMessage()); + } + try { + pageDTO = scheduleDefinitionManager.findFindScheduleDefinitionResult(pageDTO,condtitonDTO); + } catch (Exception e) { + e.printStackTrace(); + return ApiResultVoUtil.error(ErrorCodeEnum.ERROR.getCode(), e.getMessage()); + } + return ApiResultVoUtil.success(pageDTO); + } + + + /** + * 根据id获得班次定义 + */ + @RequestMapping(value = "/findScheduleDefinitionsById",method = RequestMethod.GET) + public ApiResultVo findScheduleDefinitionsById(@RequestParam(value ="id",required = false) String id){ + ScheduleDefinitionDTO sdDTO = new ScheduleDefinitionDTO(); + try { + ScheduleDefinition sd = scheduleDefinitionManager.get(id); + if(null != sd){ + BeanUtils.copyProperties(sd,sdDTO); + } + } catch (Exception e) { + e.printStackTrace(); + return ApiResultVoUtil.error(ErrorCodeEnum.ERROR); + } + return ApiResultVoUtil.success(sdDTO); + } + + /** + * 根据关键词获得班次定义 + */ + @RequestMapping(value = "/findScheduleDefinitionsByKeyWord",method = RequestMethod.GET) + public ApiResultVo> findScheduleDefinitionsByKeyWord( + @RequestParam(value ="keyWord",required = false) String keyWord){ + try { + List sdList = scheduleDefinitionManager.findScheduleDefinitionsByKeyWord(keyWord); + return ApiResultVoUtil.success(sdList); + } catch (Exception e) { + e.printStackTrace(); + return ApiResultVoUtil.error(ErrorCodeEnum.ERROR.getCode(),e.getMessage()); + } + } + + /** + * 保存次定义 + */ + @RequestMapping(value = "/saveScheduleDefinitions",method = RequestMethod.POST ) + public ApiResultVo addScheduleDefinition(@RequestBody @Valid ScheduleDefinitionDTO scheduleDefinitionDTO,BindingResult bresult){ + if(bresult.hasErrors()){ + return ApiResultVoUtil.bindError(ErrorCodeEnum.BIND_ERROR, bresult.getFieldError().getDefaultMessage()); + } + try { + scheduleDefinitionManager.saveScheduleDefinition(scheduleDefinitionDTO); + } catch (Exception e) { + e.printStackTrace(); + return ApiResultVoUtil.error(ErrorCodeEnum.ERROR.getCode(), e.getMessage()); + } + return ApiResultVoUtil.success(true); + } + + /** + * 修改班次定义 + */ + @RequestMapping(value = "/updateScheduleDefinitions",method = RequestMethod.POST ) + public ApiResultVo updateScheduleDefinitions(@RequestBody @Valid ScheduleDefinitionDTO scheduleDefinitionDTO,BindingResult bresult){ + if(bresult.hasErrors()){ + return ApiResultVoUtil.bindError(ErrorCodeEnum.BIND_ERROR, bresult.getFieldError().getDefaultMessage()); + } + try { + scheduleDefinitionManager.updateScheduleDefinition(scheduleDefinitionDTO); + } catch (Exception e) { + e.printStackTrace(); + return ApiResultVoUtil.error(ErrorCodeEnum.ERROR.getCode(), e.getMessage()); + } + return ApiResultVoUtil.success(true); + } + + + /** + * 修改为班次定义已删除(非真删除) + */ + @RequestMapping(value = "/scheduleDefinitionStatueToDelete",method = RequestMethod.POST) + public ApiResultVo deleteScheduleDefinition(@RequestParam("ids") String ids){ + List idStrList = (List) StringTools.toCollectionIgnoreNullAndBlank(ids, Constants.IDS_SEPARATOR); + try { + scheduleDefinitionManager.updateScheduleDefinitionDeleteStatue(idStrList); + } catch (Exception e) { + e.printStackTrace(); + return ApiResultVoUtil.error(ErrorCodeEnum.ERROR.getCode(),e.getMessage()); + } + return ApiResultVoUtil.success(true); + } +} Index: ssts-schedule/src/main/java/com/forgon/disinfectsystem/schedule/service/ScheduleDefinitionManager.java =================================================================== diff -u --- ssts-schedule/src/main/java/com/forgon/disinfectsystem/schedule/service/ScheduleDefinitionManager.java (revision 0) +++ ssts-schedule/src/main/java/com/forgon/disinfectsystem/schedule/service/ScheduleDefinitionManager.java (revision 23979) @@ -0,0 +1,50 @@ +package com.forgon.disinfectsystem.schedule.service; + +import java.util.List; + +import com.forgon.disinfectsystem.entity.basedatamanager.schedule.ScheduleDefinition; +import com.forgon.disinfectsysyem.schedule.dto.CondititonScheduleDefintitionDTO; +import com.forgon.disinfectsysyem.schedule.dto.CondititonScheduleDefintitionDTO; +import com.forgon.disinfectsysyem.schedule.dto.PageDTO; +import com.forgon.disinfectsysyem.schedule.dto.ScheduleDefinitionDTO; +import com.forgon.tools.hibernate.BasePoManager; + +/** + * 班次定义业务接口 + * @author YanWeiNing + * + */ +public interface ScheduleDefinitionManager extends BasePoManager{ + + /** + * 获得班次定义列表 + * 支持查询全部班次定义/只查询非历史记录班次定义 + */ + public PageDTO findFindScheduleDefinitionResult(PageDTO pageDTO,CondititonScheduleDefintitionDTO condition); + + /** + * 根据班次名称模糊查询班次定义() + * @param keyWord 班次名称关键词(若为空则获得全部) + * @return + */ + public List findScheduleDefinitionsByKeyWord(String keyWord); + /** + * 保存班次定义列表 + */ + public void saveScheduleDefinition(ScheduleDefinitionDTO scheduleDefinitionDTO); + /** + * 修改班次定义列表 + */ + public void updateScheduleDefinition(ScheduleDefinitionDTO scheduleDefinitionDTO); + + /** + * 删除班次定义 + */ + public void deleteScheduleDefinition(List ids); + + /** + * 把班次定义设为已删除 + */ + public void updateScheduleDefinitionDeleteStatue(List ids); + +} Index: ssts-web/src/main/webapp/WEB-INF/spring-mvc-servlet.xml =================================================================== diff -u -r23613 -r23979 --- ssts-web/src/main/webapp/WEB-INF/spring-mvc-servlet.xml (.../spring-mvc-servlet.xml) (revision 23613) +++ ssts-web/src/main/webapp/WEB-INF/spring-mvc-servlet.xml (.../spring-mvc-servlet.xml) (revision 23979) @@ -6,18 +6,35 @@ xmlns:p="http://www.springframework.org/schema/p" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:util="http://www.springframework.org/schema/util" + xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd - http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd" + http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd + http://www.springframework.org/schema/mvc + http://www.springframework.org/schema/mvc/spring-mvc.xsd" default-autowire="byName" default-lazy-init="true"> + + + - Index: ssts-schedule/src/main/java/com/forgon/disinfectsysyem/schedule/dto/ScheduleDefinitionDTO.java =================================================================== diff -u --- ssts-schedule/src/main/java/com/forgon/disinfectsysyem/schedule/dto/ScheduleDefinitionDTO.java (revision 0) +++ ssts-schedule/src/main/java/com/forgon/disinfectsysyem/schedule/dto/ScheduleDefinitionDTO.java (revision 23979) @@ -0,0 +1,150 @@ +package com.forgon.disinfectsysyem.schedule.dto; + + + +import java.sql.Time; +import java.time.LocalTime; +import java.util.Date; + +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Pattern; + +import org.hibernate.validator.constraints.NotEmpty; +import org.springframework.format.annotation.DateTimeFormat; + +import com.beust.jcommander.Parameter; +import com.fasterxml.jackson.annotation.JsonFormat; + +/** + * 班次定义信息DTO + * @author YanWeiNing + * + */ +public class ScheduleDefinitionDTO { + + /** + * 标识字段 + */ + private Long id; + + /** + * 编号 + */ + private String serialNumber; + /** + * 班次名称 + */ + @NotEmpty(message = "班次名称不能为空") + private String sheduleName; + + /** + * 科室编码 + */ + @NotEmpty(message = "科室编码不能为空") + private String orgUnitCode; + + /** + * 所属科室名称 + */ + private String orgUnitName; + + /** + * 上班时间 + */ + // @Pattern(regexp ="^([01]\\d|2[01234]):([0-5]\\d|60)$",message = "上班时间参数格式:时:分") + @NotNull(message = "上班时间不能为空") + @JsonFormat(pattern = "HH:mm",timezone="GMT+8") + //@DateTimeFormat(pattern = "HH:mm") + private Date startWorkingTime; + + /** + * 下班时间 + */ + //@Pattern(regexp ="^([01]\\d|2[01234]):([0-5]\\d|60)$",message = "下班时间参数格式:时:分") + @NotNull(message = "下班时间不能为空") + @JsonFormat(pattern = "HH:mm",timezone="GMT+8") + //@DateTimeFormat(pattern = "HH:mm") + private Date endWorkingTime; + /** + * 备注 + */ + private String remark; + + /** + * 操作状态:更新,添加,修改(用于历史记录查看) + */ + private String operationStatus; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getSheduleName() { + return sheduleName; + } + + public void setSheduleName(String sheduleName) { + this.sheduleName = sheduleName; + } + + public String getOrgUnitCode() { + return orgUnitCode; + } + + public void setOrgUnitCode(String orgUnitCode) { + this.orgUnitCode = orgUnitCode; + } + + public String getOrgUnitName() { + return orgUnitName; + } + + public void setOrgUnitName(String orgUnitName) { + this.orgUnitName = orgUnitName; + } + + public Date getStartWorkingTime() { + return startWorkingTime; + } + + public void setStartWorkingTime(Date startWorkingTime) { + this.startWorkingTime = startWorkingTime; + } + + public Date getEndWorkingTime() { + return endWorkingTime; + } + + public void setEndWorkingTime(Date endWorkingTime) { + this.endWorkingTime = endWorkingTime; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getOperationStatus() { + return operationStatus; + } + + public void setOperationStatus(String operationStatus) { + this.operationStatus = operationStatus; + } + + public String getSerialNumber() { + return serialNumber; + } + + public void setSerialNumber(String serialNumber) { + this.serialNumber = serialNumber; + } + +}