Browse Source

添加流程管理/民宿信息维护发起流程

lijie 2 years ago
parent
commit
a836b3216c

+ 59 - 0
mhotel/src/com/happy/Model/Workflow.java

@@ -0,0 +1,59 @@
+package com.happy.Model;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class Workflow {
+    private String id;
+    /**
+     * 类型
+     */
+    private Integer type;
+    /**
+     * 标题
+     */
+    private String title;
+    /**
+     * 关联id
+     */
+    private String linkId;
+    /**
+     * 状态
+     */
+    private Integer status;
+    /**
+     * 信息 : 酒店信息维护上传
+     */
+    private String remark;
+
+    /**
+     * 创建人id type为1 存商户 type为2 存用户
+     */
+    private String createId;
+
+    /**
+     * 提交流程人姓名
+     */
+    private String createName;
+
+    /**
+     * 审批人
+     */
+    private String workflowName;
+
+    /**
+     * 审批时间
+     */
+    private String workflowDate;
+    /**
+     * 审批备注
+     */
+    private String workflowRemark;
+
+    /**
+     * 附件列表
+     */
+    List<FileInfo> fileInfoList;
+}

+ 245 - 0
mhotel/src/com/happy/action/WorkflowAction.java

@@ -0,0 +1,245 @@
+package com.happy.action;
+
+import com.google.gson.Gson;
+import com.google.gson.reflect.TypeToken;
+import com.happy.Model.Booking;
+import com.happy.Model.FileInfo;
+import com.happy.Model.Workflow;
+import com.happy.Until.GetHttpParam;
+import com.happy.Until.ResUtil;
+import com.happy.Until.UUIDUtil;
+import com.happy.service.FileService;
+import com.happy.service.WorkflowService;
+import com.opensymphony.xwork2.ActionSupport;
+import net.sf.json.JSONObject;
+import org.apache.struts2.ServletActionContext;
+import org.apache.struts2.interceptor.ServletRequestAware;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
+import java.util.List;
+
+public class WorkflowAction  extends ActionSupport implements ServletRequestAware {
+
+    private HttpServletRequest request;
+    public HttpServletResponse response;
+
+    public String id;//流程id
+    public String hotelId;//民宿id
+    public Integer status; //状态 1、正在审批 2、审批通过3、拒绝
+
+    @Resource
+    public WorkflowService workflowService;
+    @Resource
+    public FileService fileService;
+
+    public HttpServletRequest getRequest() {
+        return request;
+    }
+
+    public void setRequest(HttpServletRequest request) {
+        this.request = request;
+    }
+
+    public void setServletRequest(HttpServletRequest request) {
+        this.request = request;
+    }
+
+    public HttpServletResponse getResponse() {
+        return response;
+    }
+
+    public void setResponse(HttpServletResponse response) {
+        this.response = response;
+    }
+
+    /**
+     * 民宿审批接口
+     * @return
+     */
+    public String workflow(){
+        JSONObject resultJson = new JSONObject();
+        Gson gson = new Gson();
+        com.alibaba.fastjson.JSONObject json = GetHttpParam.getRequestParameters(request);
+        if (json == null) {
+            resultJson.put("message", "请传入参数");
+            ResUtil.writeJson(ServletActionContext.getResponse(), resultJson.toString());
+            return null;
+        }
+        Workflow workflow = new Workflow();
+        try{
+            workflow = gson.fromJson(json.toString(), new TypeToken<Workflow>() {}.getType());
+            if(workflow==null){
+                resultJson.put("message", "数据为空");
+                resultJson.put("code", 500);
+                ResUtil.writeJson(ServletActionContext.getResponse(), resultJson.toString());
+                return null;
+            }
+            if(workflow.getId()==null){
+                resultJson.put("message", "流程id不能为空!");
+                resultJson.put("code", 500);
+                ResUtil.writeJson(ServletActionContext.getResponse(), resultJson.toString());
+                return null;
+            }
+            if(workflow.getStatus()==null){
+                resultJson.put("message", "流程状态不能为空!");
+                resultJson.put("code", 500);
+                ResUtil.writeJson(ServletActionContext.getResponse(), resultJson.toString());
+                return null;
+            }
+            if(workflow.getType()==null){
+                resultJson.put("message", "流程类型不能为空!");
+                resultJson.put("code", 500);
+                ResUtil.writeJson(ServletActionContext.getResponse(), resultJson.toString());
+                return null;
+            }
+            if(workflow.getWorkflowRemark()==null){
+                resultJson.put("message", "审批备注不能为空!");
+                resultJson.put("code", 500);
+                ResUtil.writeJson(ServletActionContext.getResponse(), resultJson.toString());
+                return null;
+            }
+            int m = 0;
+            Workflow workflow1 = workflowService.queryById(workflow.getId());
+            workflow1.setWorkflowRemark(workflow.getWorkflowRemark());//审批备注
+            workflow1.setWorkflowDate(UUIDUtil.getNewDate());//审批时间
+            workflow1.setWorkflowName("admin");//审批人名称
+            switch (workflow.getType()){
+                //民宿信息修改流程审批
+                case 1 : {
+                    if (workflow.getStatus() == 2){//审批通过
+                        // 新的酒店图片
+                        List<FileInfo> fileInfoList = fileService.queryList("and link_id ='"+workflow1.getId()+"'");
+                        fileService.delLinkFile(String.valueOf(workflow1.getLinkId()));
+                        fileInfoList.forEach(file -> {
+                            file.setLinkId(workflow1.getLinkId());
+                            fileService.updateFile(file);
+                        });
+                        workflow1.setStatus(2);//审批通过
+                        m = workflowService.update(workflow1);
+                    }else {//审批拒绝
+                        workflow1.setStatus(3);
+                        m = workflowService.update(workflow1);
+                    }
+                } break;
+                case 2: {
+                    if (workflow.getStatus() == 2){//审批通过
+                        //TODO 评价流程审批通过
+
+
+                    }else {//审批拒绝
+                        //TODO 评价流程审批通过
+                        workflow1.setStatus(3);
+                        m = workflowService.update(workflow1);
+                    }
+                }
+            }
+            if (m > 0) {
+                resultJson.put("message", "审批成功");
+                resultJson.put("code", 200);
+                ResUtil.writeJson(ServletActionContext.getResponse(), resultJson.toString());
+                return null;
+            } else {
+                resultJson.put("message", "审批失败");
+                resultJson.put("code", 502);
+                ResUtil.writeJson(ServletActionContext.getResponse(), resultJson.toString());
+                return null;
+            }
+        }catch (Exception e){
+            e.printStackTrace();
+            resultJson.put("message", "未知异常:"+ e);
+            resultJson.put("code", 205);
+            ResUtil.writeJson(ServletActionContext.getResponse(), resultJson.toString());
+        }
+        return null;
+    }
+
+    public String queryById(){
+        JSONObject resultJson = new JSONObject();
+        if (id == null){
+            resultJson.put("message", "流程id不能为空!");
+            resultJson.put("code", 500);
+            ResUtil.writeJson(ServletActionContext.getResponse(), resultJson.toString());
+            return null;
+        }
+        Workflow workflow = workflowService.queryById(id);
+        if (workflow != null){
+            //民宿信息维护流程
+            List<FileInfo> fileInfoList;
+            if (workflow.getStatus() == 2){
+                fileInfoList = fileService.queryList("and link_id = '"+workflow.getLinkId()+"'");
+            }else {
+                fileInfoList = fileService.queryList("and link_id = '"+workflow.getId()+"'");
+            }
+            workflow.setFileInfoList(fileInfoList);
+            resultJson.put("message", "查询成功");
+            resultJson.put("code", 200);
+            resultJson.put("data", workflow);
+            ResUtil.writeJson(ServletActionContext.getResponse(), resultJson.toString());
+            return null;
+        }
+        resultJson.put("message", "未查询到流程信息!");
+        resultJson.put("code", 205);
+        ResUtil.writeJson(ServletActionContext.getResponse(), resultJson.toString());
+        return null;
+    }
+
+    /**
+     * 商户查看接口
+     */
+    public String hotelWorkflowList(){
+        JSONObject resultJson = new JSONObject();
+        StringBuilder s1 = new StringBuilder("");
+        if (id == null){
+            resultJson.put("message", "酒店id不能为空!");
+            resultJson.put("code", 500);
+            ResUtil.writeJson(ServletActionContext.getResponse(), resultJson.toString());
+            return null;
+        }
+        s1.append(" and a.link_id = ").append(id).append(" ");
+        if (status != null){
+            s1.append(" and a.status = ").append(status).append(" ");
+        }
+        List<Workflow> list = workflowService.queryList(s1.toString());
+        resultJson.put("message", "查询成功");
+        resultJson.put("code", 200);
+        resultJson.put("data", list);
+        ResUtil.writeJson(ServletActionContext.getResponse(), resultJson.toString());
+        return null;
+    }
+
+
+    /**
+     * 管理端代办接口
+     */
+    public String queryWorkflow(){
+        JSONObject resultJson = new JSONObject();
+        StringBuilder s1 = new StringBuilder("");
+        s1.append(" and a.status = 1 ");
+        List<Workflow> list = workflowService.queryList(s1.toString());
+        resultJson.put("message", "查询成功");
+        resultJson.put("code", 200);
+        resultJson.put("data", list);
+        ResUtil.writeJson(ServletActionContext.getResponse(), resultJson.toString());
+        return null;
+    }
+
+    /**
+     * 管理端已审核接口
+     */
+    public String queryApprovedWorkflow(){
+        JSONObject resultJson = new JSONObject();
+        StringBuilder s1 = new StringBuilder("");
+        s1.append(" and a.status != 1 ");
+        List<Workflow> list = workflowService.queryList(s1.toString());
+        resultJson.put("message", "查询成功");
+        resultJson.put("code", 200);
+        resultJson.put("data", list);
+        ResUtil.writeJson(ServletActionContext.getResponse(), resultJson.toString());
+        return null;
+    }
+
+
+}

+ 60 - 2
mhotel/src/com/happy/action/hotelAction.java

@@ -20,7 +20,9 @@ import org.springframework.beans.BeanUtils;
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
 import java.util.List;
+import java.util.UUID;
 
 public class hotelAction extends ActionSupport implements ServletRequestAware {
 
@@ -28,6 +30,11 @@ public class hotelAction extends ActionSupport implements ServletRequestAware {
     public HttpServletResponse response;
 
     @Resource
+    public BookService bookService;
+
+    @Resource
+    public WorkflowService workflowService;
+    @Resource
     public AdminManagerService adminManagerService;
 
     @Resource
@@ -102,13 +109,64 @@ public class hotelAction extends ActionSupport implements ServletRequestAware {
             }
             //保存基本信息
             Hotel hotel1 = hotelService.getById(hotel.getId());
+            boolean isOk = false;
             if(hotel1!= null){
-                m = hotelService.updateHotel(hotel);
+                //修改
+                if (1 == hotel1.getHstatus() && 2 == hotel.getHstatus()){ // 判断营业改休息
+                    StringBuilder s1 = new StringBuilder("");
+                    s1.append(" and order_status in ( 1,2,3,4,10) "); //待支付、已支付、待入住、已入住、退款中
+                    s1.append(" and hotel_id = '").append(hotel.getId()).append("' ");
+                    List<Booking> list = bookService.queryList(s1.toString()); // 查询分页
+                    if (list != null){
+                        resultJson.put("message", "民宿存在“待支付、已支付、待入住、已入住、退款中”状态的订单,不可更改民宿状态。");
+                        resultJson.put("code", 200);
+                        ResUtil.writeJson(ServletActionContext.getResponse(), resultJson.toString());
+                        return null;
+                    }
+                }
+                //判断是否修改简介
+                if (!hotel1.getRemark().equals(hotel.getRemark())){
+                    isOk = true;
+                }
+                //判断是否修改图片
+                for(FileInfo file : fileList){
+                    if ( "0".equals(file.getLinkId())) isOk = true; break;
+                }
+                if (isOk){
+                    //TODO 创建流程
+                    Workflow workflow = new Workflow();
+                    String id = String.valueOf(UUID.randomUUID());
+                    workflow.setLinkId(String.valueOf(hotel.getId()));
+                    workflow.setRemark(hotel.getRemark());
+                    workflow.setId(id);
+                    workflow.setStatus(1);
+                    workflow.setType(1);
+                    hotel.setRemark(hotel1.getRemark());
+                    int i = workflowService.insert(workflow);
+                    m = hotelService.updateHotel(hotel);
+                    if (i > 0 && m > 0){
+                        //将新修改的附件关联到流程id
+                        for(FileInfo file : fileList){
+                            file.setLinkId(id);
+                            file.setId(String.valueOf(UUIDUtil.generateID()));
+                            fileService.insertFile(file);
+                        }
+                        hotel.setRemark(hotel1.getRemark());
+                        resultJson.put("message", "已成功提交审批!");
+                        resultJson.put("code", 200);
+                        ResUtil.writeJson(ServletActionContext.getResponse(), resultJson.toString());
+                        return null;
+                    }else {
+                        resultJson.put("message", "提交审批失败!");
+                        resultJson.put("code", 502);
+                        ResUtil.writeJson(ServletActionContext.getResponse(), resultJson.toString());
+                        return null;
+                    }
+                }
             }else{
                 hotel.setId(hotelId);
                 m = hotelService.insertHotel(hotel);
             }
-
             if (m > 0) {
                 if(hotel.getId()!= null){
                     fileService.delLinkFile(String.valueOf(hotel.getId()));

+ 16 - 0
mhotel/src/com/happy/dao/WorkflowDao.java

@@ -0,0 +1,16 @@
+package com.happy.dao;
+
+import com.happy.Model.Workflow;
+
+import java.util.List;
+
+public interface WorkflowDao {
+
+    public int insert(Workflow workflow);
+
+    public Workflow queryById(String id);
+
+    public int update(Workflow workflow);
+
+    public List<Workflow> queryList(String sqlx);
+}

+ 1 - 1
mhotel/src/com/happy/dao/impl/BookingCommentDaoImpl.java

@@ -19,7 +19,7 @@ import java.util.List;
 import java.util.UUID;
 
 @Repository("BookingCommentDao")
-public class BookingCommentDaoImpl implements BookingCommentDao {
+public class BookingCommentImplDao implements BookingCommentDao {
     @Autowired
     private NamedParameterJdbcTemplate namedParameterJdbcTemplate;
 

+ 153 - 0
mhotel/src/com/happy/dao/impl/WorkflowImplDao.java

@@ -0,0 +1,153 @@
+package com.happy.dao.impl;
+
+import com.happy.Model.Hotel;
+import com.happy.Model.Workflow;
+import com.happy.Until.Func;
+import com.happy.Until.SqlUtil;
+import com.happy.Until.UUIDUtil;
+import com.happy.dao.WorkflowDao;
+import com.happy.vo.EvaluatePageVo;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.jdbc.core.BeanPropertyRowMapper;
+import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
+import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+import java.util.UUID;
+
+@Repository("WorkflowDao")
+public class WorkflowImplDao implements WorkflowDao {
+
+    @Autowired
+    private NamedParameterJdbcTemplate namedParameterJdbcTemplate;
+
+    public NamedParameterJdbcTemplate getNamedParameterJdbcTemplate() {
+        return namedParameterJdbcTemplate;
+    }
+
+    public void setNamedParameterJdbcTemplate(
+            NamedParameterJdbcTemplate namedParameterJdbcTemplate) {
+        this.namedParameterJdbcTemplate = namedParameterJdbcTemplate;
+    }
+
+    private String selectSql = " select a.id,a.link_id,a.type,a.title,a.status,a.remark,a.create_id,a.workflow_date,a.workflow_remark,a.workflow_name, " +
+                                " case when a.type = 1 then b.hname when a.type = 2 then c.user_name else null end as createName "+
+                                " from workflow a " +
+                                " left join hotel b on a.type = 1 and a.create_id = b.id " +
+                                " left join users c on a.type = 2 and a.create_id = c.id " +
+                                " where 1=1";
+
+    @Override
+    public int insert(Workflow workflow) {
+        String sql = "insert into `workflow`(id,link_id,type,title,status,remark,create_id)" +
+                "values(:id,:link_id,:type,:title,:status,:remark,:create_id) ";
+        MapSqlParameterSource sps = new MapSqlParameterSource();
+        sps.addValue("link_id",workflow.getLinkId());
+        sps.addValue("type",workflow.getType());
+        sps.addValue("title",workflow.getTitle());
+        sps.addValue("status",workflow.getStatus());
+        sps.addValue("remark",workflow.getRemark());
+        sps.addValue("create_id",workflow.getCreateId());
+        if (workflow.getId() == null) {
+            sps.addValue("id", String.valueOf(UUID.randomUUID()));
+        } else {
+            sps.addValue("id", workflow.getId());
+
+        }
+        int num = 0;
+        try {
+            num = namedParameterJdbcTemplate.update(sql, sps);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return num;
+    }
+
+    @Override
+    public Workflow queryById(String id) {
+        String sql = selectSql + " and a.id = :id";
+        MapSqlParameterSource sps = new MapSqlParameterSource();
+        sps.addValue("id",id);
+        List<Workflow> list = null;
+        try {
+            list = namedParameterJdbcTemplate.query(sql, sps,
+                    new BeanPropertyRowMapper<>(Workflow.class));
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        if (list != null && list.size() > 0) return list.get(0);
+        return null;
+    }
+
+    @Override
+    public int update(Workflow workflow) {
+        StringBuffer stringBuffer =  new StringBuffer(" update `workflow` set  ");
+        MapSqlParameterSource sps = new MapSqlParameterSource();
+        // 将要修改的数据填充到查询语句中
+        appendValue(workflow,stringBuffer,sps);
+        stringBuffer.append("  where id=:id  ");
+        sps.addValue("id", workflow.getId());
+        int num = 0;
+        try{
+            num = namedParameterJdbcTemplate.update(stringBuffer.toString(), sps);
+        }
+        catch(Exception e){
+            e.printStackTrace();
+        }
+        return num;
+    }
+
+    @Override
+    public List<Workflow> queryList(String sqlx) {
+        SqlUtil.filterKeyword(sqlx);
+        String sql = selectSql + sqlx;
+        List<Workflow> list = null;
+        try{
+            list = namedParameterJdbcTemplate.query(sql, new BeanPropertyRowMapper<>(Workflow.class));
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+        if(list != null && list.size()>0) return list;
+        return null;
+    }
+
+    public void appendValue(Workflow workflow, StringBuffer stringBuffer, MapSqlParameterSource sps){
+        if (!Func.checkNull(workflow.getLinkId())){
+            stringBuffer.append(" link_id=:link_id ,");
+            sps.addValue("link_id",workflow.getLinkId());
+        }
+        if (!Func.checkNull(String.valueOf(workflow.getType()))){
+            stringBuffer.append(" type=:type ,");
+            sps.addValue("type",workflow.getType());
+        }
+        if (!Func.checkNull(workflow.getTitle())){
+            stringBuffer.append(" title=:title ,");
+            sps.addValue("title",workflow.getTitle());
+        }
+        if (!Func.checkNull(String.valueOf(workflow.getStatus()))){
+            stringBuffer.append(" status=:status ,");
+            sps.addValue("status",workflow.getStatus());
+        }
+        if (!Func.checkNull(workflow.getRemark())){
+            stringBuffer.append(" remark=:remark ,");
+            sps.addValue("remark",workflow.getRemark());
+        }
+        if (!Func.checkNull(workflow.getCreateId())){
+            stringBuffer.append(" create_id=:create_id ,");
+            sps.addValue("create_id",workflow.getCreateId());
+        }
+        if (!Func.checkNull(workflow.getWorkflowRemark())){
+            stringBuffer.append(" workflow_remark=:workflow_remark ,");
+            sps.addValue("workflow_remark",workflow.getWorkflowRemark());
+        }
+        if (!Func.checkNull(workflow.getWorkflowName())){
+            stringBuffer.append(" workflow_name=:workflow_name ,");
+            sps.addValue("workflow_name",workflow.getWorkflowName());
+        }
+        if (!Func.checkNull(workflow.getWorkflowDate())){
+            stringBuffer.append(" workflow_date=:workflow_date ,");
+            sps.addValue("workflow_date",workflow.getWorkflowDate());
+        }
+    }
+}

+ 15 - 0
mhotel/src/com/happy/service/WorkflowService.java

@@ -0,0 +1,15 @@
+package com.happy.service;
+
+import com.happy.Model.Workflow;
+
+import java.util.List;
+
+public interface WorkflowService {
+    public int insert(Workflow workflow);
+
+    public Workflow queryById(String id);
+
+    public int update(Workflow workflow);
+
+    public List<Workflow> queryList(String sqlx);
+}

+ 37 - 0
mhotel/src/com/happy/service/impl/WorkflowImplService.java

@@ -0,0 +1,37 @@
+package com.happy.service.impl;
+
+import com.happy.Model.Workflow;
+import com.happy.dao.HouseNumberDao;
+import com.happy.dao.WorkflowDao;
+import com.happy.service.WorkflowService;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+@Service("WorkflowService")
+public class WorkflowImplService implements WorkflowService {
+    @Resource
+    public WorkflowDao workflowDao;
+
+
+    @Override
+    public int insert(Workflow workflow) {
+        return workflowDao.insert(workflow);
+    }
+
+    @Override
+    public Workflow queryById(String id) {
+        return workflowDao.queryById(id);
+    }
+
+    @Override
+    public int update(Workflow workflow) {
+        return workflowDao.update(workflow);
+    }
+
+    @Override
+    public List<Workflow> queryList(String sqlx) {
+        return workflowDao.queryList(sqlx);
+    }
+}

+ 2 - 0
mhotel/src/struts.xml

@@ -37,6 +37,8 @@
 		</action>
 		<action name="Comment*" method = "{1}" class="com.happy.action.bookCommentAction">
 		</action>
+		<action name="workflow*" method = "{1}" class="com.happy.action.WorkflowAction">
+		</action>
 		<action name="house*" method = "{1}" class="com.happy.action.houseAction">
 		</action>
 		<action name="house/price/*" method = "{1}" class="com.happy.action.HousePriceAction">