| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436 |
- package cn.com.lzt.userwage.controller;
- import java.text.ParseException;
- import java.text.SimpleDateFormat;
- import java.util.ArrayList;
- import java.util.Calendar;
- import java.util.Collections;
- import java.util.Date;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import org.apache.commons.lang.StringUtils;
- import org.hibernate.Query;
- import org.jeecgframework.core.common.controller.BaseController;
- import org.jeecgframework.core.common.hibernate.qbc.CriteriaQuery;
- import org.jeecgframework.core.common.model.json.AjaxJson;
- import org.jeecgframework.core.common.model.json.DataGrid;
- import org.jeecgframework.core.constant.Globals;
- import org.jeecgframework.core.util.JeecgDataAutorUtils;
- import org.jeecgframework.core.util.oConvertUtils;
- import org.jeecgframework.tag.core.easyui.TagUtil;
- import org.jeecgframework.web.system.pojo.base.TSBaseUser;
- import org.jeecgframework.web.system.service.SystemService;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Controller;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.ResponseBody;
- import org.springframework.web.servlet.ModelAndView;
- import cn.com.lzt.arrangedutyoperate.dto.UserAndUserPersonnelDto;
- import cn.com.lzt.arrangedutyoperate.service.ArrangeDutyOperateServiceI;
- import cn.com.lzt.common.util.SystemUtils;
- import cn.com.lzt.dialogDeal.service.UserDepartOrgDealServiceI;
- import cn.com.lzt.project.entity.ProjectEntity;
- import cn.com.lzt.userwage.dao.UserWageMinidaoDao;
- import cn.com.lzt.userwage.entity.UserWageEntity;
- import cn.com.lzt.userwage.service.UserNewWagePayrollServiceI;
- import cn.com.lzt.userwage.service.UserNewWageServiceI;
- import cn.com.lzt.userwagestrategy.entity.UserNewWagestrategyEntity;
- import cn.com.lzt.userwagestrategy.service.UserWagestrategyServiceI;
- /**
- * @Title: Controller
- * @Description: 员工工资核算表
- * @author onlineGenerator
- * @date 2017-10-26 18:36:30
- * @version V1.0
- *
- */
- @Controller
- @RequestMapping("/userNewWagePayrollController")
- public class UserNewWagePayrollController extends BaseController {
- @Autowired
- private UserNewWagePayrollServiceI userPayrollService;
-
- @Autowired
- private SystemService systemService;
- @Autowired
- private UserNewWageServiceI userWageService;
- @Autowired
- private UserWagestrategyServiceI userWagestrategyService;
-
- @Autowired
- private ArrangeDutyOperateServiceI arrangeDutyOperateService;
- // 用户和项目关系处理
- @Autowired
- UserDepartOrgDealServiceI userDepartOrgDealServiceI;
- @Autowired
- UserWageMinidaoDao userWageMinidaoDao;
-
- @RequestMapping(params = "personnelBaseArchivesManageSelectList")
- public ModelAndView personnelBaseArchivesManageSelectList(HttpServletRequest request) {
- request.setAttribute("pid", request.getParameter("pid"));
- return new ModelAndView("cn/com/lzt/userwage/personnelBaseArchivesManageSelectList");
- }
-
- @RequestMapping(params = "getPersonnelBaseArchivesManageInfo")
- public void getPersonnelBaseArchivesManageInfo(UserAndUserPersonnelDto userAndUserPersonnelDto,String yearmonth,HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid) {
- //extractIdListByComma
- String pid=request.getParameter("pid");
- List<String> useridListAll=new ArrayList<String>();
-
- //根据项目pid查询所有可选用户,包括当前已选择的方便编辑;==
- if(pid!=null&&pid.length()!=0){
- pid=pid.split(",")[0];
- userAndUserPersonnelDto.setPid(pid);
- }
-
- //包括该项目id
- //根据项目id查询所有子节点id
- List<String> ChildIdList=userDepartOrgDealServiceI.getChildIdByProjectDepartId(pid);
- /******************************************************************/
- /*
- * 找到整个项目的工资策略,删除那些没有工资策略的员工
- */
- CriteriaQuery cq = new CriteriaQuery(UserNewWagestrategyEntity.class);
- cq.in("belongUnitid", ChildIdList.toArray(new String[0]));
- cq.add();
- cq.eq("deleteFlag", "0");
- cq.add();
- List<UserNewWagestrategyEntity> wageStraEntities = systemService.getListByCriteriaQuery(cq, false);
- HashMap<String, UserNewWagestrategyEntity> hm_userid2wageStragegy = new HashMap<>();
- for(UserNewWagestrategyEntity wagtstr : wageStraEntities) {
- hm_userid2wageStragegy.put(wagtstr.getUserid(), wagtstr);
- }
-
- userAndUserPersonnelDto.setChildDepartIdList(ChildIdList);
- userAndUserPersonnelDto.setUserIdList(useridListAll);
- String authSql = JeecgDataAutorUtils.loadDataSearchConditonSQLString();
- List<UserAndUserPersonnelDto> listUserAndUserPersonnelDto = userWageMinidaoDao.getUserAndUserPersonnelNoPage(userAndUserPersonnelDto,authSql);
-
- if(listUserAndUserPersonnelDto != null) {
- for(int i=listUserAndUserPersonnelDto.size()-1 ; i>=0 ; i--) {
- String uid =listUserAndUserPersonnelDto.get(i).getUserid();
- if(!hm_userid2wageStragegy.containsKey(uid)) {
- listUserAndUserPersonnelDto.remove(i);
- }
- }
- }
-
- Collections.sort(listUserAndUserPersonnelDto);
- //根据项目pid查询所有可选用户,包括当前已选择的方便编辑;==
- //dataGrid.setTotal(listUserAndUserPersonnelDto.getTotal());
- dataGrid.setResults(listUserAndUserPersonnelDto);
- TagUtil.datagrid(response, dataGrid);
- }
-
- /**
- * 员工工资核算
- * @return
- * @throws Exception
- */
- @RequestMapping(params = "userPayrollByUserId")
- @ResponseBody
- public AjaxJson userPayrollByUserId(HttpServletRequest request) throws Exception{
- AjaxJson j = new AjaxJson();
- List<UserNewWagestrategyEntity> userWagestrategyEntity = null;
- String ids = request.getParameter("userid");
- String moth = request.getParameter("monthly");
- String pid = request.getParameter("pid");
- String tmpe = "";
- j.setMsg("员工工资核算完成");
- if(isWagePayrollExpired(moth)) {
- j.setSuccess(false);
- j.setMsg("该月工资已发放,无法手工核算。请联系人力资源部。");
- return j;
- }
-
-
- if(StringUtils.isNotEmpty(ids)){
- tmpe = "2";
- List<String> idList = extractIdListByComma(ids);
- if(!idList.isEmpty() && idList.size() > 0){
- userWagestrategyEntity = new ArrayList<UserNewWagestrategyEntity>();
- for (String str : idList) {
- AjaxJson s = isDuties(str);
- if(!s.isSuccess()){
- return s;
- }
-
- StringBuffer hql = new StringBuffer("from UserNewWagestrategyEntity where userid = :str");
- List<UserNewWagestrategyEntity> uList = systemService.getSession().createQuery(hql.toString()).setParameter("str", str).list();
- if(!uList.isEmpty()){
- userWagestrategyEntity.add(uList.get(0));
- }else{
- TSBaseUser ts = systemService.get(TSBaseUser.class, str);
- j.setMsg("员工【"+ts.getRealName()+"】的没有工资策略,请先操作工资策略设定!");
- return j;
- }
- }
- //查询工资核算表需要重新核算的数据
- /*StringBuffer hql = new StringBuffer("from UserWageEntity where id in (:ids)");
- userList = systemService.getSession().createQuery(hql.toString()).setParameterList("ids", idList).list();*/
- userPayrollService.userPayroll(userWagestrategyEntity,moth,tmpe);
- systemService.addLog("员工工资核算完成", Globals.Log_Type_INSERT, Globals.Log_Leavel_INFO);
- }
- }
- return j;
- }
-
- /**
- * 员工工资删除
- * @return
- * @throws Exception
- */
- @RequestMapping(params = "deleteUserWageByUserId")
- @ResponseBody
- public AjaxJson deleteUserWageByUserId(HttpServletRequest request) throws Exception{
- AjaxJson j = new AjaxJson();
- List<UserNewWagestrategyEntity> userWagestrategyEntity = null;
- String ids = request.getParameter("userid");
- String moth = request.getParameter("monthly");
- String pid = request.getParameter("pid");
- String tmpe = "";
- j.setMsg("员工工资删除完成");
- if(isWagePayrollExpired(moth)) {
- j.setSuccess(false);
- j.setMsg("该月工资已发放,无法删除。请联系人力资源部。");
- return j;
- }
-
-
- if(StringUtils.isNotEmpty(ids)){
- List<String> idList = extractIdListByComma(ids);
- if(!idList.isEmpty() && idList.size() > 0){
- String userid = idList.get(0);
- StringBuffer hql = new StringBuffer("from UserWageEntity where userid = :userid and monthly = :moth");
- Query query = systemService.getSession().createQuery(hql.toString());
- query.setParameter("userid", userid);
- query.setParameter("moth", moth);
- List<UserWageEntity> list = query.list();
- if(!list.isEmpty() && list.size()>0){
- UserWageEntity wage = list.get(0);
- try {
- userWageService.delete(wage);
- }catch(Exception e) {
- TSBaseUser ts = systemService.get(TSBaseUser.class, userid);
- j.setMsg("员工【"+ts.getRealName()+"】的"+moth+"工资删除失败,请重试");
- j.setSuccess(false);
- return j;
- }
- }else{
- TSBaseUser ts = systemService.get(TSBaseUser.class, userid);
- j.setMsg("未找到员工【"+ts.getRealName()+"】的"+moth+"工资");
- j.setSuccess(false);
- return j;
- }
- systemService.addLog("员工工资删除完成:"+userid, Globals.Log_Type_DEL, Globals.Log_Leavel_INFO);
- }
- }
- return j;
- }
-
- /**
- * 员工工资核算
- * @return
- * @throws Exception
- */
- @RequestMapping(params = "userPayroll")
- @ResponseBody
- public AjaxJson userPayroll(HttpServletRequest request) throws Exception{
- AjaxJson j = new AjaxJson();
- List<UserNewWagestrategyEntity> userWagestrategyEntity = null;
- String ids = request.getParameter("ids");
- String moth = request.getParameter("moth");
- String tmpe = "";
- j.setMsg("员工工资核算完成");
- // if(isWagePayrollExpired(moth)) {
- // j.setSuccess(false);
- // j.setMsg("抱歉!该月工资已发放,不允许任何更改。");
- // return j;
- // }
-
-
- if(StringUtils.isNotEmpty(ids)){
- tmpe = "2";
- List<String> idList = extractIdListByComma(ids);
- if(!idList.isEmpty() && idList.size() > 0){
- userWagestrategyEntity = new ArrayList<UserNewWagestrategyEntity>();
- for (String str : idList) {
- AjaxJson s = isDuties(str);
- if(!s.isSuccess()){
- return s;
- }
-
- StringBuffer hql = new StringBuffer("from UserNewWagestrategyEntity where userid = :str");
- List<UserNewWagestrategyEntity> uList = systemService.getSession().createQuery(hql.toString()).setParameter("str", str).list();
- if(!uList.isEmpty()){
- userWagestrategyEntity.add(uList.get(0));
- }else{
- TSBaseUser ts = systemService.get(TSBaseUser.class, str);
- j.setMsg("员工【"+ts.getRealName()+"】的没有工资策略,请先操作工资策略设定!");
- return j;
- }
- }
- //查询工资核算表需要重新核算的数据
- /*StringBuffer hql = new StringBuffer("from UserWageEntity where id in (:ids)");
- userList = systemService.getSession().createQuery(hql.toString()).setParameterList("ids", idList).list();*/
- userPayrollService.userPayroll(userWagestrategyEntity,moth,tmpe);
- systemService.addLog("员工工资核算完成", Globals.Log_Type_INSERT, Globals.Log_Leavel_INFO);
- }
- }
- return j;
- }
-
- /**
- * 所有项目经理工资核算
- * @return
- * @throws Exception
- */
- @RequestMapping(params = "projectManagerPayroll")
- @ResponseBody
- public AjaxJson projectManagerPayroll(HttpServletRequest request) throws Exception{
- AjaxJson j = new AjaxJson();
- String moth = request.getParameter("moth");
- String tmpe = "1";
- j.setMsg("所有项目经理工资核算完成");
- // if(isWagePayrollExpired(moth)) {
- // j.setSuccess(false);
- // j.setMsg("抱歉!该月工资已发放,不允许任何更改。");
- // return j;
- // }
- StringBuffer projecthql = new StringBuffer("from ProjectEntity where 1=1");
- List<ProjectEntity> projectlist = systemService.getSession().createQuery(projecthql.toString()).list();
-
- List<String> idList = new ArrayList<String>();
- for(ProjectEntity pentity : projectlist) {
- if(pentity.getJianguanLeader() != null && !idList.contains(pentity.getJianguanLeader())) {
- AjaxJson s = isDuties(pentity.getJianguanLeader());
- if(s.isSuccess()){
- idList.add(pentity.getJianguanLeader());
- }
- }
- if(pentity.getXianchangLeader() != null && !idList.contains(pentity.getXianchangLeader())) {
- AjaxJson s = isDuties(pentity.getXianchangLeader());
- if(s.isSuccess()){
- idList.add(pentity.getXianchangLeader());
- }
- }
- }
- if(!idList.isEmpty() && idList.size() > 0){
- StringBuffer hql = new StringBuffer("from UserNewWagestrategyEntity where userid in (:str)");
- List<UserNewWagestrategyEntity> uList = systemService.getSession().createQuery(hql.toString()).setParameterList("str", idList).list();
- if(!uList.isEmpty()){
- userPayrollService.userPayroll(uList,moth,tmpe);
- systemService.addLog("所有项目经理工资核算完成", Globals.Log_Type_INSERT, Globals.Log_Leavel_INFO);
- }else{
- j.setMsg("没有发现可以核算工资的项目经理");
- return j;
- }
- //查询工资核算表需要重新核算的数据
- /*StringBuffer hql = new StringBuffer("from UserWageEntity where id in (:ids)");
- userList = systemService.getSession().createQuery(hql.toString()).setParameterList("ids", idList).list();*/
- }
- return j;
- }
- /**
- * 上月工资,只能在4-15日之间核算(不含15日)
- * @param moth
- * @return
- * @throws ParseException
- */
- private boolean isWagePayrollExpired(String moth) throws ParseException {
- if(SystemUtils.isDebugEnvirementByOS()) {
- return false;
- }
- SimpleDateFormat format = new SimpleDateFormat("yyyy-MM");
- SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd");
- Calendar begincal = Calendar.getInstance();
- Calendar endcal = Calendar.getInstance();
- try {
- begincal.setTime(format.parse(moth));
- begincal.add(Calendar.MONTH, 1);
- begincal.set(Calendar.DAY_OF_MONTH, 4);
-
- endcal.setTime(format.parse(moth));
- endcal.add(Calendar.MONTH, 1);
- endcal.set(Calendar.DAY_OF_MONTH, 14);
-
- Date now = new Date();
-
- if(now.before(begincal.getTime())) {
- return true;
- }
-
- if(now.after(endcal.getTime())) {
- return true;
- }
-
- } catch (ParseException e) {
- throw e;
- }
-
- return false;
- }
- @RequestMapping(params = "calcuUserWages")
- @ResponseBody
- public void userPayroll1(HttpServletRequest request,String yearmonth) throws Exception{
- List<UserNewWagestrategyEntity> userWagestrategyEntity = userPayrollService.getList(UserNewWagestrategyEntity.class);
- for (UserNewWagestrategyEntity user : userWagestrategyEntity) {
- AjaxJson s = isDuties(user.getUserid());
- if(!s.isSuccess()){
- return;
- }
- }
- //List<UserNewWagestrategyEntity> userWagestrategyEntity = userPayrollServiceI.findListbySql("select * from t_bus_user_wagestrategy");
- userPayrollService.userPayroll(userWagestrategyEntity,yearmonth,"1");
- }
-
- /**
- * 判断员工是否有职务和工资策略
- * @param userid
- * @return
- */
- private AjaxJson isDuties(String userid){
- AjaxJson j = new AjaxJson();
- j.setSuccess(true);
- if(oConvertUtils.isNotEmpty(userid)){
- TSBaseUser user = systemService.get(TSBaseUser.class, userid);
- if(!"admin".equals(user.getUserName()) && !"110".equals(user.getUserName())){
- Map<String,String> map = userPayrollService.isDuties(userid);
- if(map.isEmpty() || oConvertUtils.isEmpty(map.get("basicWage"))){
- j.setSuccess(false);
- j.setMsg("员工【"+user.getRealName()+"】没有职务或没有给职务设置基本工资,请设置!");
- }
- }
- }
- return j;
- }
-
-
-
- /**
- * 得到当前年月
- * @return
- */
- private String getMonthlys(){
- Calendar cal = Calendar.getInstance();
- int year = cal.get(Calendar.YEAR);
- int month = cal.get(Calendar.MONTH );
- if(month < 10){
- month = Integer.valueOf(0+""+month);
- }
- return year+"-"+month;
- }
- }
|