Browse Source

新增补卡申诉审批流

git-svn-id: svn+ssh://10.10.101.21/source/platform/platform-b2b@7562 f3bf4e98-0cf0-11e4-a00c-a99a8b9d557d
hejq 9 years ago
parent
commit
80033e3c97

+ 35 - 0
src/main/java/com/uas/platform/b2b/mobile/controller/SignAppController.java

@@ -0,0 +1,35 @@
+package com.uas.platform.b2b.mobile.controller;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.ModelMap;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import com.alibaba.fastjson.JSONObject;
+import com.uas.platform.b2b.mobile.model.SignApp;
+import com.uas.platform.b2b.mobile.service.SignAppService;
+
+/**
+ * 补卡申诉
+ */
+@Controller("mobile.SignAppController")
+@RequestMapping("/mobile/signapp")
+public class SignAppController {
+
+	@Autowired
+	private SignAppService signAppService;
+	/**
+	 * 保存补卡申诉
+	 * 
+	 * @param formStore
+	 * @return
+	 */
+	@RequestMapping(value = "/saveSignApp", method = RequestMethod.POST)
+	@ResponseBody
+	private ModelMap saveSignApp(String formStore) {
+		SignApp signapp = JSONObject.parseObject(formStore, SignApp.class);
+		return signAppService.saveSignApp(signapp);
+	};
+}

+ 10 - 0
src/main/java/com/uas/platform/b2b/mobile/dao/SignAppDao.java

@@ -0,0 +1,10 @@
+package com.uas.platform.b2b.mobile.dao;
+
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+
+import com.uas.platform.b2b.mobile.model.SignApp;
+
+public interface SignAppDao extends JpaRepository<SignApp, Long>, JpaSpecificationExecutor<SignApp> {
+
+}

+ 4 - 0
src/main/java/com/uas/platform/b2b/mobile/enumeration/MobileStatus.java

@@ -18,6 +18,10 @@ public enum MobileStatus {
 	 * {@code 4 工作日报}
 	 */
 	WORKDAILY(4, "工作日报"),
+	/**
+	 * {@code 5 申诉单}
+	 */
+	SIGNAPP(5, " 申诉单"),
 	/**
 	 * {@code 101 在录入}
 	 */

+ 207 - 0
src/main/java/com/uas/platform/b2b/mobile/model/SignApp.java

@@ -0,0 +1,207 @@
+package com.uas.platform.b2b.mobile.model;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.SequenceGenerator;
+import javax.persistence.Table;
+
+/**
+ * 补卡申诉
+ * 
+ * @author hejq
+ * @time 创建时间:2017年4月8日
+ */
+@Entity
+@Table(name = "mobile$signapp")
+public class SignApp implements Serializable {
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * id
+	 */
+	@Id
+	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "mobile$signapp_gen")
+	@SequenceGenerator(name = "mobile$signapp_gen", sequenceName = "mobile$signapp_seq", allocationSize = 1)
+	@Column(name = "ms_id")
+	private Long id;
+
+	/**
+	 * 编号
+	 */
+	@Column(name = "ms_code")
+	private String code;
+
+	/**
+	 * 员工uu
+	 */
+	@Column(name = "ms_emuu")
+	private Long emuu;
+
+	/**
+	 * 员工姓名
+	 */
+	@Column(name = "ms_emname")
+	private String emname;
+
+	/**
+	 * 地址
+	 */
+	@Column(name = "ms_address")
+	private String address;
+
+	/**
+	 * 手机
+	 */
+	@Column(name = "ms_mobile")
+	private String mobile;
+
+	/**
+	 * 打卡时间
+	 */
+	@Column(name = "ms_signtime")
+	private Date signtime;
+
+	/**
+	 * 记录时间
+	 */
+	@Column(name = "ms_recorderdate")
+	private Date recorderdate;
+
+	/**
+	 * 状态
+	 */
+	@Column(name = "ms_status")
+	private String status;
+
+	/**
+	 * 状态码
+	 */
+	@Column(name = "ms_statuscode")
+	private String statuscode;
+
+	/**
+	 * 备注
+	 */
+	@Column(name = "ms_remark")
+	private String remark;
+
+	/**
+	 * 企业uu
+	 */
+	@Column(name = "ms_uu")
+	private Long uu;
+
+	public Long getId() {
+		return id;
+	}
+
+	public void setId(Long id) {
+		this.id = id;
+	}
+
+	public String getCode() {
+		return code;
+	}
+
+	public void setCode(String code) {
+		this.code = code;
+	}
+
+	public Long getEmuu() {
+		return emuu;
+	}
+
+	public void setEmuu(Long emuu) {
+		this.emuu = emuu;
+	}
+
+	public String getEmname() {
+		return emname;
+	}
+
+	public void setEmname(String emname) {
+		this.emname = emname;
+	}
+
+	public String getAddress() {
+		return address;
+	}
+
+	public void setAddress(String address) {
+		this.address = address;
+	}
+
+	public String getMobile() {
+		return mobile;
+	}
+
+	public void setMobile(String mobile) {
+		this.mobile = mobile;
+	}
+
+	public Date getSigntime() {
+		return signtime;
+	}
+
+	public void setSigntime(Date signtime) {
+		this.signtime = signtime;
+	}
+
+	public Date getRecorderdate() {
+		return recorderdate;
+	}
+
+	public void setRecorderdate(Date recorderdate) {
+		this.recorderdate = recorderdate;
+	}
+
+	public String getStatus() {
+		return status;
+	}
+
+	public void setStatus(String status) {
+		this.status = status;
+	}
+
+	public String getStatuscode() {
+		return statuscode;
+	}
+
+	public void setStatuscode(String statuscode) {
+		this.statuscode = statuscode;
+	}
+
+	public String getRemark() {
+		return remark;
+	}
+
+	public void setRemark(String remark) {
+		this.remark = remark;
+	}
+
+	public Long getUu() {
+		return uu;
+	}
+
+	public void setUu(Long uu) {
+		this.uu = uu;
+	}
+
+	@Override
+	public String toString() {
+		return "SignApp [id=" + id + ", code=" + code + ", emuu=" + emuu + ", emname=" + emname + ", address=" + address
+				+ ", mobile=" + mobile + ", signtime=" + signtime + ", recorderdate=" + recorderdate + ", status="
+				+ status + ", statuscode=" + statuscode + ", remark=" + remark + ", uu=" + uu + "]";
+	}
+
+}

+ 16 - 0
src/main/java/com/uas/platform/b2b/mobile/service/SignAppService.java

@@ -0,0 +1,16 @@
+package com.uas.platform.b2b.mobile.service;
+
+import org.springframework.ui.ModelMap;
+
+import com.uas.platform.b2b.mobile.model.SignApp;
+
+public interface SignAppService {
+
+	/**
+	 * 保存补卡申诉
+	 * 
+	 * @param signapp
+	 * @return
+	 */
+	public ModelMap saveSignApp(SignApp signapp);
+}

+ 35 - 1
src/main/java/com/uas/platform/b2b/mobile/service/impl/MobileFlowServiceImpl.java

@@ -25,6 +25,8 @@ import com.uas.platform.b2b.mobile.dao.AppFlowOperationDao;
 import com.uas.platform.b2b.mobile.dao.ApprovalLogDao;
 import com.uas.platform.b2b.mobile.dao.FeePleaseDao;
 import com.uas.platform.b2b.mobile.dao.MobileAuditLogDao;
+import com.uas.platform.b2b.mobile.dao.SignAppDao;
+import com.uas.platform.b2b.mobile.dao.SignCardDao;
 import com.uas.platform.b2b.mobile.dao.VacationDao;
 import com.uas.platform.b2b.mobile.dao.WorkDailyDao;
 import com.uas.platform.b2b.mobile.dao.WorkOvertimeDao;
@@ -33,6 +35,8 @@ import com.uas.platform.b2b.mobile.model.AppFlowOperation;
 import com.uas.platform.b2b.mobile.model.ApprovalLog;
 import com.uas.platform.b2b.mobile.model.FeePlease;
 import com.uas.platform.b2b.mobile.model.MobileAuditLog;
+import com.uas.platform.b2b.mobile.model.SignApp;
+import com.uas.platform.b2b.mobile.model.SignCard;
 import com.uas.platform.b2b.mobile.model.Vacation;
 import com.uas.platform.b2b.mobile.model.WorkDaily;
 import com.uas.platform.b2b.mobile.model.WorkOvertime;
@@ -85,6 +89,12 @@ public class MobileFlowServiceImpl implements MobileFlowService {
 	@Autowired
 	private UserPositionDao userPositionDao;
 
+	@Autowired
+	private SignAppDao signAppDao;
+
+	@Autowired
+	private SignCardDao signCardDao;
+
 	@Override
 	public ModelMap getAuditTodo(Integer count, Integer page, Long enuu, Long emuu) {
 		ModelMap map = new ModelMap();
@@ -276,29 +286,53 @@ public class MobileFlowServiceImpl implements MobileFlowService {
 							va.setVa_statuscode(MobileStatus.AUDITED.name());
 							va.setVa_status(MobileStatus.AUDITED.getPhrase());
 							vacationDao.save(va);
+							map.put("success", true);
 						}
 						if (op.getCaller().equals(MobileStatus.WORKDAILY.getPhrase())) {// 工作日报
 							WorkDaily wo = workDailyDao.findOne(op.getSourceid());
 							wo.setWd_statuscode(MobileStatus.AUDITED.name());
 							wo.setWd_status(MobileStatus.AUDITED.getPhrase());
 							workDailyDao.save(wo);
+							map.put("success", true);
 						}
 						if (op.getCaller().equals(MobileStatus.WORKOVERTIME.getPhrase())) {// 加班申请
 							WorkOvertime wot = workOvertimeDao.findOne(op.getSourceid());
 							wot.setWo_statuscode(MobileStatus.AUDITED.name());
 							wot.setWo_status(MobileStatus.AUDITED.getPhrase());
 							workOvertimeDao.save(wot);
+							map.put("success", true);
 						}
 						if (op.getCaller().equals(MobileStatus.FEEPLEASE.getPhrase())) {// 出差单
 							FeePlease fee = feePleaseDao.findOne(op.getSourceid());
 							fee.setFp_statuscode(MobileStatus.AUDITED.name());
 							fee.setFp_status(MobileStatus.AUDITED.getPhrase());
 							feePleaseDao.save(fee);
+							map.put("success", true);
+						}
+						if (op.getCaller().equals(MobileStatus.SIGNAPP.getPhrase())) {// 申诉单
+							SignApp app = signAppDao.findOne(op.getSourceid());
+							app.setStatus(MobileStatus.AUDITED.getPhrase());
+							app.setStatuscode(MobileStatus.AUDITED.name());
+							signAppDao.save(app);
+
+							// 插入数据到打卡记录中
+							SignCard card = new SignCard();
+							card.setCl_address(app.getAddress());
+							card.setCl_date(app.getSigntime());
+							card.setCl_emname(app.getEmname());
+							card.setCl_phone(app.getMobile());
+							card.setEmcode(app.getEmuu());
+							card.setEnuu(app.getUu());
+							card = signCardDao.save(card);
+							if (card.getId() != null) {
+								map.put("success", true);
+							} else {
+								map.put("success", false);
+							}
 						}
 					}
 				}
 			}
-			map.put("success", true);
 		}
 		return map;
 	}

+ 40 - 0
src/main/java/com/uas/platform/b2b/mobile/service/impl/PublicInterForDetailServiceImpl.java

@@ -12,6 +12,7 @@ import com.uas.platform.b2b.dao.UserBaseInfoDao;
 import com.uas.platform.b2b.mobile.dao.AppFlowOperationDao;
 import com.uas.platform.b2b.mobile.dao.ApprovalLogDao;
 import com.uas.platform.b2b.mobile.dao.FeePleaseDao;
+import com.uas.platform.b2b.mobile.dao.SignAppDao;
 import com.uas.platform.b2b.mobile.dao.VacationDao;
 import com.uas.platform.b2b.mobile.dao.WorkDailyDao;
 import com.uas.platform.b2b.mobile.dao.WorkOvertimeDao;
@@ -19,6 +20,7 @@ import com.uas.platform.b2b.mobile.enumeration.MobileStatus;
 import com.uas.platform.b2b.mobile.model.AppFlowOperation;
 import com.uas.platform.b2b.mobile.model.ApprovalLog;
 import com.uas.platform.b2b.mobile.model.FeePlease;
+import com.uas.platform.b2b.mobile.model.SignApp;
 import com.uas.platform.b2b.mobile.model.Vacation;
 import com.uas.platform.b2b.mobile.model.WorkDaily;
 import com.uas.platform.b2b.mobile.model.WorkOvertime;
@@ -48,6 +50,9 @@ public class PublicInterForDetailServiceImpl implements PublicInterForDetailServ
 	@Autowired
 	private UserBaseInfoDao userBaseInfoDao;
 
+	@Autowired
+	private SignAppDao signAppDao;
+
 	@Override
 	public ModelMap getDocumentsDetail(Long id, Integer whichpage) {
 		ModelMap map = new ModelMap();
@@ -63,6 +68,9 @@ public class PublicInterForDetailServiceImpl implements PublicInterForDetailServ
 		if(whichpage.equals(MobileStatus.WORKOVERTIME.getValue())){
 			map.put("data", workOvertimeDao.findOne(id));
 		}
+		if (whichpage.equals(MobileStatus.SIGNAPP.getValue())) {
+			map.put("data", signAppDao.findOne(id));
+		}
 		return map;
 	}
 
@@ -82,6 +90,9 @@ public class PublicInterForDetailServiceImpl implements PublicInterForDetailServ
 		if (whichpage.equals(MobileStatus.WORKOVERTIME.getValue())) {
 			caller = MobileStatus.WORKOVERTIME.getPhrase();
 		}
+		if (whichpage.equals(MobileStatus.SIGNAPP.getValue())) {
+			caller = MobileStatus.SIGNAPP.getPhrase();
+		}
 		List<ApprovalLog> logs = approvalLogDao.getByKeyvalueAndCaller(id, caller);
 		if (!CollectionUtils.isEmpty(logs)) {// 先删除单据产生的审批相关记录
 			for (ApprovalLog log : logs) {
@@ -118,6 +129,12 @@ public class PublicInterForDetailServiceImpl implements PublicInterForDetailServ
 				map.put("success", true);
 			}
 		}
+		if (whichpage.equals(MobileStatus.SIGNAPP.getValue())) {
+			if (signAppDao.findOne(id) != null) {
+				signAppDao.delete(id);
+				map.put("success", true);
+			}
+		}
 		return map;
 	}
 
@@ -216,6 +233,29 @@ public class PublicInterForDetailServiceImpl implements PublicInterForDetailServ
 				map.put("success", true);
 			}
 		}
+
+		if (whichpage.equals(MobileStatus.SIGNAPP.getValue())) {
+			SignApp app = signAppDao.findOne(id);
+			if (app != null && app.getStatuscode().equals(MobileStatus.COMMITED.name())) {// 已提交的单据才能反提交
+				List<ApprovalLog> logs = approvalLogDao.getBySourceid(id);
+				if (!CollectionUtils.isEmpty(logs)) {// 先删除单据产生的审批相关记录
+					for (ApprovalLog log : logs) {
+						approvalLogDao.delete(log.getId());
+					}
+				}
+				List<AppFlowOperation> operations = appFlowOperationDao.findBySourceidAndCaller(id,
+						MobileStatus.SIGNAPP.getPhrase());
+				if (!CollectionUtils.isEmpty(operations)) {
+					for (AppFlowOperation op : operations) {
+						appFlowOperationDao.delete(op.getId());
+					}
+				}
+				app.setStatus(MobileStatus.ENTERING.getPhrase());
+				app.setStatuscode(MobileStatus.ENTERING.name());
+				signAppDao.save(app);
+				map.put("success", true);
+			}
+		}
 		return map;
 	}
 

+ 166 - 0
src/main/java/com/uas/platform/b2b/mobile/service/impl/SignAppServiceImpl.java

@@ -0,0 +1,166 @@
+package com.uas.platform.b2b.mobile.service.impl;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.ui.ModelMap;
+
+import com.uas.platform.b2b.dao.UserBaseInfoDao;
+import com.uas.platform.b2b.mobile.dao.AppFlowOperationDao;
+import com.uas.platform.b2b.mobile.dao.ApprovalLogDao;
+import com.uas.platform.b2b.mobile.dao.SignAppDao;
+import com.uas.platform.b2b.mobile.dao.SignCardDao;
+import com.uas.platform.b2b.mobile.enumeration.MobileStatus;
+import com.uas.platform.b2b.mobile.model.AppFlowOperation;
+import com.uas.platform.b2b.mobile.model.AppLog;
+import com.uas.platform.b2b.mobile.model.ApprovalLog;
+import com.uas.platform.b2b.mobile.model.SignApp;
+import com.uas.platform.b2b.mobile.model.SignCard;
+import com.uas.platform.b2b.mobile.service.SignAppService;
+import com.uas.platform.b2b.model.FlowNode;
+import com.uas.platform.b2b.service.ApprovalFlowService;
+
+@Service
+public class SignAppServiceImpl implements SignAppService {
+
+	@Autowired
+	private SignAppDao signAppDao;
+
+	@Autowired
+	private ApprovalFlowService approvalFlowService;
+
+	@Autowired
+	private ApprovalLogDao approvalLogDao;
+
+	@Autowired
+	private AppFlowOperationDao appFlowOperationDao;
+
+	@Autowired
+	private UserBaseInfoDao userBaseInfoDao;
+
+	@Autowired
+	private SignCardDao signCardDao;
+
+	@Override
+	public ModelMap saveSignApp(SignApp signapp) {
+		ModelMap map = new ModelMap();
+		Long id = 0L;
+		SimpleDateFormat sdf = new SimpleDateFormat("yyMMddss");
+		SignApp app = new SignApp();
+		if (signapp.getId() == null) {// 新增
+			signapp.setCode("MS" + sdf.format(new Date()));
+			signapp.setEmname(userBaseInfoDao.findByUserUU(signapp.getEmuu()).getUserName());
+			signapp.setStatus(MobileStatus.ENTERING.getPhrase());
+			signapp.setStatuscode(MobileStatus.ENTERING.name());
+			signapp.setRecorderdate(new Date());
+			app = signAppDao.save(signapp);
+			id = app.getId();
+		} else {// 更新
+			app = signAppDao.findOne(signapp.getId());
+			app.setAddress(signapp.getAddress());
+			app.setCode(signapp.getCode());
+			app.setRecorderdate(new Date());
+			app.setRemark(signapp.getRemark());
+			app.setSigntime(signapp.getSigntime());
+			app.setMobile(signapp.getMobile());
+			app.setStatus(MobileStatus.ENTERING.getPhrase());
+			app.setStatuscode(MobileStatus.ENTERING.name());
+			app = signAppDao.save(app);
+			id = app.getId();
+		}
+		// 创建审批流
+		String appName = MobileStatus.SIGNAPP.getPhrase();
+		FlowNode node = approvalFlowService.getNodeInfoByEnuuAndEmcodeAndAppName(signapp.getUu(), signapp.getEmuu(),
+				appName);
+		Integer nodelevel = -1;
+		if (node != null) {
+			nodelevel = node.getNodelev();
+		}
+		Integer maxNode = approvalFlowService.getMaxNodeByEnuuAndAppName(signapp.getUu(), appName);
+		if (maxNode != null) {
+			if (nodelevel < maxNode) {
+				AppLog log = new AppLog();
+				log.setStatus(MobileStatus.ENTERING.getPhrase());
+				log.setStatusCode(MobileStatus.ENTERING.name());
+				log.setSourceid(id);
+				log.setSourcedate(new Date());
+				log.setKeyvalue(id);
+				log.setCaller(appName);
+				log.setEmcode(signapp.getEmuu());
+				log.setEnuu(signapp.getUu());
+				for (int i = nodelevel + 1; i <= maxNode; i++) {
+					ApprovalLog applog = new ApprovalLog(log);
+					applog.setNodedealman(approvalFlowService
+							.getNodeInfoByEnuuAndAppNameAndNodelev(signapp.getUu(), appName, i).getEmcode());
+					applog.setNodename(approvalFlowService
+							.getNodeInfoByEnuuAndAppNameAndNodelev(signapp.getUu(), appName, i).getNodename());
+					applog.setProcessid(approvalFlowService
+							.getNodeInfoByEnuuAndAppNameAndNodelev(signapp.getUu(), appName, i).getId());
+					applog = approvalLogDao.save(applog);
+					node = approvalFlowService.getNodeInfoByEnuuAndAppNameAndNodelev(signapp.getUu(), appName,
+							nodelevel + 1);
+					if (applog.getId() != null && applog.getNodedealman()
+							.equals(approvalFlowService
+									.getNodeInfoByEnuuAndAppNameAndNodelev(signapp.getUu(), appName, nodelevel + 1)
+									.getEmcode())) {
+						// 新增待审批
+						AppFlowOperation operation = new AppFlowOperation();
+						operation.setCaller(appName);
+						operation.setDealname(signapp.getEmname());
+						operation.setDealuu(signapp.getEmuu());
+						operation.setKeyvalue(applog.getId());
+						operation.setNodedealname(node.getEmname());
+						operation.setRecorddate(new Date());
+						operation.setStatus(MobileStatus.UNAUDIT.getPhrase());
+						operation.setStatuscode(MobileStatus.UNAUDIT.name());
+						operation.setEnuu(signapp.getUu());
+						operation.setNodedealuu(node.getEmcode());
+						operation.setNodelevel(node.getNodelev());
+						operation.setSourceid(id);
+						operation = appFlowOperationDao.save(operation);
+						if (operation.getId() != null) {
+							if (id != null) {
+								app = signAppDao.findOne(id);
+								app.setStatus(MobileStatus.COMMITED.getPhrase());
+								app.setStatuscode(MobileStatus.COMMITED.name());
+								signAppDao.save(app);
+							}
+							map.put("success", true);
+						} else {
+							map.put("success", false);
+						}
+					}
+				}
+			}
+			if (nodelevel == maxNode) {
+				if (id != null) {
+					app = signAppDao.findOne(id);
+					app.setStatus(MobileStatus.AUDITED.getPhrase());
+					app.setStatuscode(MobileStatus.AUDITED.name());
+					signAppDao.save(app);
+
+					// 插入数据到打卡记录中
+					SignCard card = new SignCard();
+					card.setCl_address(app.getAddress());
+					card.setCl_date(app.getSigntime());
+					card.setCl_emname(app.getEmname());
+					card.setCl_phone(app.getMobile());
+					card.setEmcode(app.getEmuu());
+					card.setEnuu(app.getUu());
+					card = signCardDao.save(card);
+					if (card.getId() != null) {
+						map.put("success", true);
+					} else {
+						map.put("success", false);
+					}
+				} else {
+					map.put("success", false);
+				}
+			}
+		}
+		return map;
+	}
+
+}

+ 1 - 1
src/main/webapp/resources/js/index/app.js

@@ -9939,7 +9939,7 @@ app.controller('SaleSendCtrl', ['$scope', '$filter', 'SaleSend', 'ngTableParams'
 
         // 删除(在录入状态)
         // TODO 
-        $scope.delete = function(tender) {
+        $scope.deleted = function(tender) {
             PurcTender.deleteOne({}, tender, function() {
                 toaster.pop('info', '提示', '删除成功');
                 window.location.hash = '#/purc/tender';