UserNewWageController.java 80 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007
  1. package cn.com.lzt.userwage.controller;
  2. import cn.com.lzt.arrangeduty.dto.ProjectDepartDto;
  3. import cn.com.lzt.common.dto.VisibleUserDto;
  4. import cn.com.lzt.common.service.DataPermissionServiceI;
  5. import cn.com.lzt.dialogDeal.service.UserDepartOrgDealServiceI;
  6. import cn.com.lzt.dingattendanceinfo.entity.DingAttendanceinfoEntity;
  7. import cn.com.lzt.project.entity.ProjectEntity;
  8. import cn.com.lzt.useroptions.entity.TBusUserOptionsEntity;
  9. import cn.com.lzt.useroptions.service.TBusUserOptionsServiceI;
  10. import cn.com.lzt.userwage.dto.UserNewWageDetaillsDto;
  11. import cn.com.lzt.userwage.dto.UserNewWageDto;
  12. import cn.com.lzt.userwage.dto.UserWagePaperDto;
  13. import cn.com.lzt.userwage.dto.UserWageViewDto;
  14. import cn.com.lzt.userwage.entity.UserNewWageEntity;
  15. import cn.com.lzt.userwage.entity.UserNewwagePage;
  16. import cn.com.lzt.userwage.service.UserNewWagePayrollServiceI;
  17. import cn.com.lzt.userwage.service.UserNewWageServiceI;
  18. import cn.com.lzt.userwagestrategyhistory.entity.UserWagestrategyHistoryEntity;
  19. import org.apache.commons.collections.CollectionUtils;
  20. import org.apache.commons.lang.StringUtils;
  21. import org.apache.ibatis.annotations.Param;
  22. import org.apache.log4j.Logger;
  23. import org.apache.poi.hssf.usermodel.HSSFWorkbook;
  24. import org.apache.poi.ss.usermodel.Workbook;
  25. import org.jeecgframework.core.beanvalidator.BeanValidators;
  26. import org.jeecgframework.core.common.controller.BaseController;
  27. import org.jeecgframework.core.common.exception.BusinessException;
  28. import org.jeecgframework.core.common.model.json.AjaxJson;
  29. import org.jeecgframework.core.common.model.json.DataGrid;
  30. import org.jeecgframework.core.constant.Globals;
  31. import org.jeecgframework.core.util.*;
  32. import org.jeecgframework.minidao.pojo.MiniDaoPage;
  33. import org.jeecgframework.poi.excel.ExcelExportUtil;
  34. import org.jeecgframework.poi.excel.ExcelImportUtil;
  35. import org.jeecgframework.poi.excel.annotation.Excel;
  36. import org.jeecgframework.poi.excel.entity.ExportParams;
  37. import org.jeecgframework.poi.excel.entity.ImportParams;
  38. import org.jeecgframework.poi.excel.entity.params.ExcelExportEntity;
  39. import org.jeecgframework.poi.excel.entity.vo.NormalExcelConstants;
  40. import org.jeecgframework.tag.core.easyui.TagUtil;
  41. import org.jeecgframework.web.system.pojo.base.TSBaseUser;
  42. import org.jeecgframework.web.system.pojo.base.TSDepart;
  43. import org.jeecgframework.web.system.pojo.base.TSUser;
  44. import org.jeecgframework.web.system.pojo.base.TSUserOrg;
  45. import org.jeecgframework.web.system.service.SystemService;
  46. import org.springframework.beans.factory.annotation.Autowired;
  47. import org.springframework.http.HttpHeaders;
  48. import org.springframework.http.HttpStatus;
  49. import org.springframework.http.MediaType;
  50. import org.springframework.http.ResponseEntity;
  51. import org.springframework.stereotype.Controller;
  52. import org.springframework.ui.ModelMap;
  53. import org.springframework.web.bind.annotation.*;
  54. import org.springframework.web.multipart.MultipartFile;
  55. import org.springframework.web.multipart.MultipartHttpServletRequest;
  56. import org.springframework.web.servlet.ModelAndView;
  57. import org.springframework.web.util.UriComponentsBuilder;
  58. import javax.servlet.ServletOutputStream;
  59. import javax.servlet.http.HttpServletRequest;
  60. import javax.servlet.http.HttpServletResponse;
  61. import javax.servlet.http.HttpSession;
  62. import javax.validation.ConstraintViolation;
  63. import javax.validation.Validator;
  64. import java.beans.PropertyDescriptor;
  65. import java.io.IOException;
  66. import java.io.UnsupportedEncodingException;
  67. import java.lang.reflect.Field;
  68. import java.lang.reflect.InvocationTargetException;
  69. import java.lang.reflect.Method;
  70. import java.math.BigDecimal;
  71. import java.net.URI;
  72. import java.text.ParseException;
  73. import java.util.*;
  74. /**
  75. * @Title: Controller
  76. * @Description: 员工工资核算表
  77. * @author onlineGenerator
  78. * @date 2017-10-26 18:36:30
  79. * @version V1.0
  80. *
  81. */
  82. @Controller
  83. @RequestMapping("/userNewWageController")
  84. public class UserNewWageController extends BaseController {
  85. /**
  86. * Logger for this class
  87. */
  88. private static final Logger logger = Logger.getLogger(UserNewWageController.class);
  89. @Autowired
  90. private UserNewWagePayrollServiceI userPayrollService;
  91. @Autowired
  92. private UserNewWageServiceI userWageService;
  93. @Autowired
  94. private SystemService systemService;
  95. @Autowired
  96. private Validator validator;
  97. @Autowired
  98. private DataPermissionServiceI dataPermissionService;
  99. @Autowired
  100. private UserDepartOrgDealServiceI userDepartOrgDealService;
  101. @Autowired
  102. private TBusUserOptionsServiceI userOptionsService;
  103. /**
  104. * 得到上个月的年月
  105. * @return
  106. */
  107. private String getMonthlys(){
  108. Calendar cal = Calendar.getInstance();
  109. int year = cal.get(Calendar.YEAR);
  110. int month = cal.get(Calendar.MONTH);
  111. if(month < 10){
  112. if(month == 0){
  113. year = year - 1;
  114. month = 12;
  115. }else{
  116. // month = Integer.valueOf(0+""+month);
  117. return year + "-" + 0 + "" + month;
  118. }
  119. }
  120. return year+"-"+month;
  121. }
  122. /**
  123. * 员工工资核算表列表 页面跳转
  124. *
  125. * @return
  126. */
  127. @RequestMapping(params = "list")
  128. public ModelAndView list(HttpServletRequest request) {
  129. HttpSession session = ContextHolderUtils.getSession();
  130. TSUser tuser = (TSUser)session.getAttribute("LOCAL_CLINET_USER");
  131. String departid = "";
  132. String departname = "";
  133. try {
  134. TBusUserOptionsEntity options = userOptionsService.getOptionsByUserID(tuser.getId(), Globals.USER_OPTIONS_TYPE_PROJECT, false);
  135. if(options != null) {
  136. departid = options.getOptionId();
  137. departname = options.getOptionName();
  138. }
  139. } catch (Exception e) {
  140. e.printStackTrace();
  141. org.jeecgframework.core.util.LogUtil.error(e.getMessage());
  142. }
  143. if (oConvertUtils.isNotEmpty(departid)) {
  144. request.setAttribute("departid", departid);
  145. request.setAttribute("departname", departname);
  146. }
  147. request.setAttribute("monthlys", getMonthlys());
  148. return new ModelAndView("cn/com/lzt/userwage/userWageList");
  149. }
  150. /**
  151. * 员工工资核算表列表 页面跳转
  152. *
  153. * @return
  154. */
  155. @RequestMapping(params = "listView")
  156. public ModelAndView listView(HttpServletRequest request) {
  157. String orgid = request.getParameter("orgid");
  158. String monthly = request.getParameter("monthly");
  159. if(oConvertUtils.isNotEmpty(monthly)){
  160. request.setAttribute("monthlys", monthly);
  161. request.setAttribute("orgid", orgid);
  162. }else{
  163. request.setAttribute("monthlys", getMonthlys());
  164. }
  165. return new ModelAndView("cn/com/lzt/userwage/userWageViewList");
  166. }
  167. @RequestMapping(params = "logrp")
  168. public ModelAndView logrp(@Param("id") String id,HttpServletRequest request){
  169. if(StringUtils.isNotEmpty(id)){
  170. UserNewWageEntity userWage = systemService.get(UserNewWageEntity.class, id);
  171. TSBaseUser tsBaseUser = systemService.get(TSBaseUser.class, userWage.getUserid());
  172. request.setAttribute("realname", tsBaseUser.getRealName());
  173. if(userWage != null){
  174. //systemService.get
  175. StringBuffer hql = new StringBuffer("from UserWagestrategyHistoryEntity where userid =? and strategyMonth = ? ");
  176. List<UserWagestrategyHistoryEntity> userList = systemService.findHql(hql.toString(),userWage.getUserid(),userWage.getMonthly());
  177. //List<UserWagestrategyHistoryEntity> userList = systemService.findListbySql("select * from t_bus_user_wagestrategy_history where userid = '"+userWage.getUserid()+"' and strategy_month = '"+userWage.getMonthly()+"'");
  178. if(!userList.isEmpty() && userList.size() > 0){
  179. // System.out.println(JSONObject.toJSONString(userList.get(0)));
  180. request.setAttribute("userwh", userList.get(0));
  181. }else{
  182. request.setAttribute("userwh",new UserWagestrategyHistoryEntity());
  183. }
  184. }
  185. }
  186. return new ModelAndView("cn/com/lzt/userwage/userwagestrategy-view");
  187. }
  188. @RequestMapping(params = "goview")
  189. public ModelAndView goView(@Param("belongUnitname") String belongUnitname,@Param("id") String id,@Param("monthly")String monthly,@Param("type")String type, HttpServletRequest request){
  190. request.setAttribute("id", id);
  191. TSDepart depart = systemService.get(TSDepart.class, id);
  192. if(depart != null) {
  193. request.setAttribute("belongUnitname",depart.getDepartname());
  194. }
  195. request.setAttribute("monthly", monthly);
  196. request.setAttribute("monthlys",monthly);
  197. request.setAttribute("type",type);
  198. return new ModelAndView("cn/com/lzt/userwage/userWageEditList");
  199. }
  200. /**
  201. * 直接打开工资编辑
  202. * @param belongUnitname
  203. * @param id
  204. * @param monthly
  205. * @param type
  206. * @param request
  207. * @return
  208. */
  209. @RequestMapping(params = "editList")
  210. public ModelAndView editList(@Param("belongUnitname") String belongUnitname,@Param("id") String id,@Param("monthly")String monthly,@Param("type")String type, HttpServletRequest request){
  211. // request.setAttribute("id", id);
  212. // TSDepart depart = systemService.get(TSDepart.class, id);
  213. // if(depart != null) {
  214. // request.setAttribute("belongUnitname",depart.getDepartname());
  215. // }
  216. // request.setAttribute("monthly", monthly);
  217. // request.setAttribute("monthlys",monthly);
  218. // request.setAttribute("type",type);
  219. return new ModelAndView("cn/com/lzt/userwage/userWageEditList");
  220. }
  221. /**
  222. * 所有项目(部门)选择弹窗页面跳转路径
  223. * 列表页弹窗
  224. * @author liujie
  225. * 2017-12-13
  226. * @param request
  227. * @return
  228. */
  229. @RequestMapping(params = "projectDepartTableAll")
  230. public ModelAndView projectDepartTableAll(HttpServletRequest request) {
  231. //return new ModelAndView("cn/com/lzt/arrangeduty/dutyMealTable");
  232. ModelAndView mv = new ModelAndView("cn/com/lzt/userwage/projectDepartTableAll");
  233. String ids = oConvertUtils.getString(request.getParameter("ids"));
  234. mv.addObject("ids", ids);
  235. return mv;
  236. }
  237. /**
  238. * 项目(部门)选择弹窗列表数据
  239. * @author liujie
  240. * 2017-11-15
  241. * @param projectDepartDto
  242. * @param request
  243. * @param response
  244. * @param dataGrid
  245. */
  246. @RequestMapping(params = "projectDepartDatagridAll")
  247. public void projectDepartDatagridAll(ProjectDepartDto projectDepartDto, HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid) {
  248. TSUser tSUser=ResourceUtil.getSessionUser();
  249. List<ProjectDepartDto> projectDepartDtoList=userWageService.getProjectDepartAll(projectDepartDto,tSUser.getId());
  250. dataGrid.setResults(projectDepartDtoList);
  251. TagUtil.datagrid(response, dataGrid);
  252. }
  253. /**
  254. * 员工工资核算表列表 页面跳转
  255. *
  256. * @return
  257. */
  258. @RequestMapping(params = "listNewWageDetails")
  259. public ModelAndView listNewWageDetails(@Param("realname") String realname,@Param("belongBank") String belongBank,@Param("pid") String pid,@Param("monthly")String monthly,HttpServletRequest request) {
  260. request.setAttribute("monthlys", getMonthlys());
  261. request.setAttribute("monthly", monthly);
  262. request.setAttribute("orgid", pid);
  263. request.setAttribute("realname", realname);
  264. request.setAttribute("belongBank", belongBank);
  265. return new ModelAndView("cn/com/lzt/userwage/userNewWageDetailsList");
  266. }
  267. /**
  268. * 员工月度工资明细表格
  269. *
  270. * @param request
  271. * @param response
  272. * @param dataGrid
  273. * @param user
  274. * @throws ParseException
  275. */
  276. @RequestMapping(params = "datagrid_detail")
  277. public void datagrid_detail(UserNewWageDto userWage,HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid) throws ParseException {
  278. String monthlys = request.getParameter("monthlys");
  279. String monthly = request.getParameter("monthly");
  280. String realname = request.getParameter("realname");
  281. String belongBank = request.getParameter("belongBank");
  282. String orgIds = request.getParameter("orgIds");
  283. String orgId = request.getParameter("orgid");
  284. String type = request.getParameter("type");
  285. if(oConvertUtils.isEmpty(monthlys) && oConvertUtils.isEmpty(monthly)){
  286. dataGrid.setResults(new ArrayList<UserNewWageDto>());
  287. dataGrid.setFooter("");
  288. TagUtil.datagrid(response, dataGrid);
  289. return;
  290. }
  291. if(realname != null) {
  292. userWage.setRealname(realname);
  293. }
  294. if(belongBank != null) {
  295. userWage.setBelongBank(belongBank);
  296. }
  297. MiniDaoPage<UserNewWageDto> list = null;
  298. if(oConvertUtils.isNotEmpty(monthlys) || oConvertUtils.isNotEmpty(monthly)){
  299. if(StringUtils.isEmpty(orgIds)&&StringUtils.isNotEmpty(orgId)){
  300. List<String> orgIdList = extractIdListByComma(orgId);
  301. // 获取 当前组织机构的用户信息
  302. if (!CollectionUtils.isEmpty(orgIdList)) {
  303. if(oConvertUtils.isNotEmpty(type) && "1".equals(type)){
  304. userWage.setOrgIdList(orgIdList);
  305. }else{
  306. String or = orgIdList.get(0);
  307. List<String> ChildIdList = userDepartOrgDealService.getChildIdByProjectDepartId(or);
  308. userWage.setOrgIdList(ChildIdList);
  309. }
  310. }
  311. }else{
  312. if(StringUtils.isNotEmpty(orgIds)){
  313. List<String> orgIdList = extractIdListByComma(orgIds);
  314. // 获取 当前组织机构的用户信息
  315. if (!CollectionUtils.isEmpty(orgIdList)) {
  316. String or = orgIdList.get(0);
  317. List<String> ChildIdList = userDepartOrgDealService.getChildIdByProjectDepartId(or);
  318. userWage.setOrgIdList(ChildIdList);
  319. }
  320. }
  321. }
  322. if(StringUtils.isNotEmpty(monthlys)){
  323. userWage.setMonthly(monthlys);
  324. }else{
  325. if(StringUtils.isNotEmpty(monthly)){
  326. request.setAttribute("monthlys", monthly);
  327. userWage.setMonthly(monthly);
  328. }else{
  329. request.setAttribute("monthlys", getMonthlys());
  330. userWage.setMonthly(getMonthlys());
  331. }
  332. //userWage.setMonthly(sim.format(sim.parse("2017-10")));
  333. }
  334. String authSql = JeecgDataAutorUtils.loadDataSearchConditonSQLString();
  335. VisibleUserDto dto = dataPermissionService.getVisibleUserList();// 获取当前用户可见的userid列表
  336. if(dto != null){
  337. if(dto.getFlag().value().equalsIgnoreCase("ALL")){
  338. list = userWageService.getPagedEntities(userWage,null,null,dataGrid.getPage(), dataGrid.getRows(), authSql);
  339. // map = userWageService.getMoneySUM(userWage,null,moth);
  340. }else if(dto.getFlag().value().equalsIgnoreCase("NONE")){
  341. // 获取当前登录用户
  342. HttpSession session = ContextHolderUtils.getSession();
  343. TSUser user = (TSUser)session.getAttribute("LOCAL_CLINET_USER");
  344. List<String> uidList = new ArrayList<String>();
  345. uidList.add(user.getId());
  346. list = userWageService.getPagedEntities(userWage,uidList,null,dataGrid.getPage(), dataGrid.getRows(), authSql);
  347. // map = userWageService.getMoneySUM(userWage,uidList,moth);
  348. }else if(dto.getFlag().value().equalsIgnoreCase("PART")){
  349. List<String> useridList = dto.getUseridList();
  350. if(useridList != null && useridList.size() > 0){
  351. list = userWageService.getPagedEntities(userWage,useridList,null,dataGrid.getPage(), dataGrid.getRows(), authSql);
  352. // map = userWageService.getMoneySUM(userWage,useridList,moth);
  353. }
  354. }
  355. }
  356. // 为了提高效率,人事部门不做工资权限限制. 20170628 xzx
  357. // UserNewWageDto> list = userWageService.getAll(userWage,authSql);
  358. if(list != null && !list.getResults().isEmpty()){
  359. for (Iterator iterator = list.getResults().iterator(); iterator.hasNext();) {
  360. UserNewWageDto userWageDto = (UserNewWageDto) iterator.next();
  361. if (oConvertUtils.isEmpty(userWageDto.getId())) {
  362. userWageDto.setId("temp"+UUIDGenerator.generate());
  363. }
  364. if(StringUtils.isNotEmpty(userWage.getStatus())){
  365. if(StringUtils.isEmpty(userWageDto.getMonthly())){
  366. iterator.remove();
  367. }
  368. }
  369. if(StringUtils.isEmpty(userWageDto.getMonthly())){
  370. userWageDto.setBelongUnitName(getBybelongId(userWageDto.getUserids()));
  371. }
  372. }
  373. Collections.sort(list.getResults());
  374. dataGrid.setResults(list.getResults());
  375. dataGrid.setTotal(list.getTotal());
  376. }
  377. }
  378. if(list == null || list.getResults() == null || list.getResults().size() == 0){
  379. dataGrid.setResults(new ArrayList<UserNewWageDto>());
  380. dataGrid.setFooter("");
  381. }
  382. TagUtil.datagrid(response, dataGrid);
  383. }
  384. /**
  385. * 员工工资核算表列表 页面跳转
  386. *
  387. * @return
  388. */
  389. @RequestMapping(params = "listManagerWageDetails")
  390. public ModelAndView listManagerWageDetails(@Param("realname") String realname,@Param("belongBank") String belongBank,@Param("pid") String pid,@Param("monthly")String monthly,HttpServletRequest request) {
  391. request.setAttribute("monthlys", getMonthlys());
  392. request.setAttribute("monthly", monthly);
  393. request.setAttribute("orgid", pid);
  394. request.setAttribute("realname", realname);
  395. request.setAttribute("belongBank", belongBank);
  396. return new ModelAndView("cn/com/lzt/userwage/managerWageDetailsList");
  397. }
  398. /**
  399. * 员工月度工资明细表格
  400. *
  401. * @param request
  402. * @param response
  403. * @param dataGrid
  404. * @param user
  405. * @throws ParseException
  406. */
  407. @RequestMapping(params = "datagrid_manager_detail")
  408. public void datagrid_manager_detail(UserNewWageDto userWage,HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid) throws ParseException {
  409. String monthlys = request.getParameter("monthlys");
  410. String monthly = request.getParameter("monthly");
  411. String realname = request.getParameter("realname");
  412. String belongBank = request.getParameter("belongBank");
  413. String orgIds = request.getParameter("orgIds");
  414. String orgId = request.getParameter("orgid");
  415. String type = request.getParameter("type");
  416. if(oConvertUtils.isEmpty(monthlys) && oConvertUtils.isEmpty(monthly)){
  417. dataGrid.setResults(new ArrayList<UserNewWageDto>());
  418. dataGrid.setFooter("");
  419. TagUtil.datagrid(response, dataGrid);
  420. return;
  421. }
  422. if(realname != null) {
  423. userWage.setRealname(realname);
  424. }
  425. if(belongBank != null) {
  426. userWage.setBelongBank(belongBank);
  427. }
  428. MiniDaoPage<UserNewWageDto> list = null;
  429. if(oConvertUtils.isNotEmpty(monthlys) || oConvertUtils.isNotEmpty(monthly)){
  430. if(StringUtils.isEmpty(orgIds)&&StringUtils.isNotEmpty(orgId)){
  431. List<String> orgIdList = extractIdListByComma(orgId);
  432. // 获取 当前组织机构的用户信息
  433. if (!CollectionUtils.isEmpty(orgIdList)) {
  434. if(oConvertUtils.isNotEmpty(type) && "1".equals(type)){
  435. userWage.setOrgIdList(orgIdList);
  436. }else{
  437. String or = orgIdList.get(0);
  438. List<String> ChildIdList = userDepartOrgDealService.getChildIdByProjectDepartId(or);
  439. userWage.setOrgIdList(ChildIdList);
  440. }
  441. }
  442. }else{
  443. if(StringUtils.isNotEmpty(orgIds)){
  444. List<String> orgIdList = extractIdListByComma(orgIds);
  445. // 获取 当前组织机构的用户信息
  446. if (!CollectionUtils.isEmpty(orgIdList)) {
  447. String or = orgIdList.get(0);
  448. List<String> ChildIdList = userDepartOrgDealService.getChildIdByProjectDepartId(or);
  449. userWage.setOrgIdList(ChildIdList);
  450. }
  451. }
  452. }
  453. if(StringUtils.isNotEmpty(monthlys)){
  454. userWage.setMonthly(monthlys);
  455. }else{
  456. if(StringUtils.isNotEmpty(monthly)){
  457. request.setAttribute("monthlys", monthly);
  458. userWage.setMonthly(monthly);
  459. }else{
  460. request.setAttribute("monthlys", getMonthlys());
  461. userWage.setMonthly(getMonthlys());
  462. }
  463. //userWage.setMonthly(sim.format(sim.parse("2017-10")));
  464. }
  465. String authSql = JeecgDataAutorUtils.loadDataSearchConditonSQLString();
  466. StringBuffer projecthql = new StringBuffer("from ProjectEntity where 1=1");
  467. List<ProjectEntity> projectlist = systemService.getSession().createQuery(projecthql.toString()).list();
  468. List<String> idList = new ArrayList<String>();
  469. for(ProjectEntity pentity : projectlist) {
  470. if(pentity.getJianguanLeader() != null && !idList.contains(pentity.getJianguanLeader())) {
  471. AjaxJson s = isDuties(pentity.getJianguanLeader());
  472. if(s.isSuccess()){
  473. idList.add(pentity.getJianguanLeader());
  474. }
  475. }
  476. if(pentity.getXianchangLeader() != null && !idList.contains(pentity.getXianchangLeader())) {
  477. AjaxJson s = isDuties(pentity.getXianchangLeader());
  478. if(s.isSuccess()){
  479. idList.add(pentity.getXianchangLeader());
  480. }
  481. }
  482. }
  483. if(!idList.isEmpty() && idList.size() > 0){
  484. list = userWageService.getManagerWagePagedEntities(userWage,idList,null,dataGrid.getPage(), dataGrid.getRows(), authSql);
  485. }
  486. // 为了提高效率,人事部门不做工资权限限制. 20170628 xzx
  487. if(list != null && !list.getResults().isEmpty()){
  488. for (Iterator iterator = list.getResults().iterator(); iterator.hasNext();) {
  489. UserNewWageDto userWageDto = (UserNewWageDto) iterator.next();
  490. if (oConvertUtils.isEmpty(userWageDto.getId())) {
  491. userWageDto.setId("temp"+UUIDGenerator.generate());
  492. }
  493. if(StringUtils.isNotEmpty(userWage.getStatus())){
  494. if(StringUtils.isEmpty(userWageDto.getMonthly())){
  495. iterator.remove();
  496. }
  497. }
  498. if(StringUtils.isEmpty(userWageDto.getMonthly())){
  499. userWageDto.setBelongUnitName(getBybelongId(userWageDto.getUserids()));
  500. }
  501. }
  502. Collections.sort(list.getResults());
  503. dataGrid.setResults(list.getResults());
  504. dataGrid.setTotal(list.getTotal());
  505. }
  506. }
  507. if(list == null || list.getResults() == null || list.getResults().size() == 0){
  508. dataGrid.setResults(new ArrayList<UserNewWageDto>());
  509. dataGrid.setFooter("");
  510. }
  511. TagUtil.datagrid(response, dataGrid);
  512. }
  513. /**
  514. * 判断员工是否有职务和工资策略
  515. * @param userid
  516. * @return
  517. */
  518. private AjaxJson isDuties(String userid){
  519. AjaxJson j = new AjaxJson();
  520. j.setSuccess(true);
  521. if(oConvertUtils.isNotEmpty(userid)){
  522. TSBaseUser user = systemService.get(TSBaseUser.class, userid);
  523. if(!"admin".equals(user.getUserName()) && !"110".equals(user.getUserName())){
  524. Map<String,String> map = userPayrollService.isDuties(userid);
  525. if(map.isEmpty() || oConvertUtils.isEmpty(map.get("basicWage"))){
  526. j.setSuccess(false);
  527. j.setMsg("员工【"+user.getRealName()+"】没有职务或没有给职务设置基本工资,请设置!");
  528. }
  529. }
  530. }
  531. return j;
  532. }
  533. /**
  534. * 月度工资一览的表格数据
  535. *
  536. * @param request
  537. * @param response
  538. * @param dataGrid
  539. * @param user
  540. */
  541. @RequestMapping(params = "datagrid1")
  542. public void datagrid1(UserWageViewDto userWage,HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid) {
  543. String monthlys = request.getParameter("monthlys");
  544. if(oConvertUtils.isNotEmpty(monthlys)){
  545. String orgIds = request.getParameter("orgIds");
  546. List<String> orgIdList = extractIdListByComma(orgIds);
  547. // 获取 当前组织机构的用户信息
  548. if (!CollectionUtils.isEmpty(orgIdList)) {
  549. String or = orgIdList.get(0);
  550. List<String> ChildIdList = userDepartOrgDealService.getChildIdByProjectDepartId(or);
  551. userWage.setOrgIdList(ChildIdList);
  552. }
  553. userWage.setMonthly(monthlys);
  554. String authSql = JeecgDataAutorUtils.loadDataSearchConditonSQLString();
  555. VisibleUserDto dto = dataPermissionService.getVisibleUserList();// 获取当前用户可见的userid列表
  556. if(dto != null){
  557. MiniDaoPage<UserWageViewDto> list = new MiniDaoPage<UserWageViewDto>();
  558. Map<String,Integer> map = new HashMap<String,Integer>();
  559. list = userWageService.getViewEntities(userWage,null,dataGrid.getPage(), dataGrid.getRows(), authSql);
  560. map = userWageService.getMoneyViewSUM(userWage,null);
  561. // if(dto.getFlag().value().equalsIgnoreCase("ALL")){
  562. // list = userWageService.getViewEntities(userWage,null,dataGrid.getPage(), dataGrid.getRows(), authSql);
  563. // map = userWageService.getMoneyViewSUM(userWage,null);
  564. // }else if(dto.getFlag().value().equalsIgnoreCase("NONE")){
  565. // // 获取当前登录用户
  566. // HttpSession session = ContextHolderUtils.getSession();
  567. // TSUser user = (TSUser)session.getAttribute("LOCAL_CLINET_USER");
  568. // List<String> uidList = new ArrayList<String>();
  569. // uidList.add(user.getId());
  570. // list = userWageService.getViewEntities(userWage,uidList,dataGrid.getPage(), dataGrid.getRows(), authSql);
  571. // map = userWageService.getMoneyViewSUM(userWage,uidList);
  572. // }else if(dto.getFlag().value().equalsIgnoreCase("PART")){
  573. // List<String> useridList = dto.getUseridList();
  574. // if(useridList != null && useridList.size() > 0){
  575. // list = userWageService.getViewEntities(userWage,useridList,dataGrid.getPage(), dataGrid.getRows(), authSql);
  576. // map = userWageService.getMoneyViewSUM(userWage,useridList);
  577. // }
  578. // }
  579. //MiniDaoPage<UserWageViewDto> list = userWageService.getViewEntities(userWage, dataGrid.getPage(), dataGrid.getRows(), authSql);
  580. dataGrid.setResults(list.getResults());
  581. //Map<String,Integer> map = userWageService.getMoneyViewSUM(userWage);
  582. StringBuffer str = new StringBuffer();
  583. str.append("sumcount:"+(String.valueOf(map.get("sumcount")).equalsIgnoreCase("null")?"0.00":String.valueOf(map.get("sumcount")))+",");
  584. str.append("basicWage:"+(String.valueOf(map.get("basic_wage")).equalsIgnoreCase("null")?"0.00":String.valueOf(map.get("basic_wage")))+",");
  585. str.append("dutiesAllowance:"+(String.valueOf(map.get("duties_allowance")).equalsIgnoreCase("null")?"0.00":String.valueOf(map.get("duties_allowance")))+",");
  586. str.append("certificateSubsidy:"+(String.valueOf(map.get("certificate_subsidy")).equalsIgnoreCase("null")?"0.00":String.valueOf(map.get("certificate_subsidy")))+",");
  587. str.append("projectPerformance:"+(String.valueOf(map.get("project_performance")).equalsIgnoreCase("null")?"0.00":String.valueOf(map.get("project_performance")))+",");
  588. str.append("mealsSubsidy:"+(String.valueOf(map.get("meals_subsidy")).equalsIgnoreCase("null")?"0.00":String.valueOf(map.get("meals_subsidy")))+",");
  589. str.append("specialOvertime:"+(String.valueOf(map.get("special_overtime")).equalsIgnoreCase("null")?"0.00":String.valueOf(map.get("special_overtime")))+",");
  590. str.append("absenceDebit:"+(String.valueOf(map.get("absence_debit")).equalsIgnoreCase("null")?"0.00":String.valueOf(map.get("absence_debit")))+",");
  591. str.append("paymentSubsidy:"+(String.valueOf(map.get("payment_subsidy")).equalsIgnoreCase("null")?"0.00":String.valueOf(map.get("payment_subsidy")))+",");
  592. str.append("deductions:"+(String.valueOf(map.get("deductions")).equalsIgnoreCase("null")?"0.00":String.valueOf(map.get("deductions")))+",");
  593. str.append("comDeductions:"+(String.valueOf(map.get("comDeductions")).equalsIgnoreCase("null")?"0.00":String.valueOf(map.get("comDeductions")))+",");
  594. str.append("comCost:"+(String.valueOf(map.get("comCost")).equalsIgnoreCase("null")?"0.00":String.valueOf(map.get("comCost")))+",");
  595. str.append("preTaxMone:"+(String.valueOf(map.get("pre_tax_mone")).equalsIgnoreCase("null")?"0.00":String.valueOf(map.get("pre_tax_mone")))+",");
  596. str.append("daikouDebit:"+(String.valueOf(map.get("daikouDebit")).equalsIgnoreCase("null")?"0.00":String.valueOf(map.get("daikouDebit")))+",");
  597. str.append("otherDebit:"+(String.valueOf(map.get("other_debit")).equalsIgnoreCase("null")?"0.00":String.valueOf(map.get("other_debit")))+",");
  598. str.append("reissue:"+(String.valueOf(map.get("reissue")).equalsIgnoreCase("null")?"0.00":String.valueOf(map.get("reissue")))+",");
  599. str.append("taxMoney:"+(String.valueOf(map.get("tax_money")).equalsIgnoreCase("null")?"0.00":String.valueOf(map.get("tax_money")))+",");
  600. str.append("actualMoney:"+(String.valueOf(map.get("actual_money")).equalsIgnoreCase("null")?"0.00":String.valueOf(map.get("actual_money"))));
  601. dataGrid.setFooter(str.toString());
  602. }
  603. }else{
  604. dataGrid.setResults(new ArrayList<UserWageViewDto>());
  605. dataGrid.setFooter("");
  606. }
  607. TagUtil.datagrid(response, dataGrid);
  608. }
  609. /**
  610. * easyui AJAX请求数据
  611. *
  612. * @param request
  613. * @param response
  614. * @param dataGrid
  615. * @param user
  616. * @throws ParseException
  617. */
  618. @RequestMapping(params = "datagrid2")
  619. public void datagrid2(UserNewWageDto userWage,HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid) throws ParseException {
  620. String monthlys = request.getParameter("monthlys");
  621. if(StringUtils.isNotEmpty(monthlys)){
  622. String orgIds = request.getParameter("orgIds");
  623. if(StringUtils.isNotEmpty(orgIds)){
  624. List<String> orgIdList = extractIdListByComma(orgIds);
  625. // 获取 当前组织机构的用户信息
  626. if (!CollectionUtils.isEmpty(orgIdList)) {
  627. String or = orgIdList.get(0);
  628. List<String> ChildIdList = userDepartOrgDealService.getChildIdByProjectDepartId(or);
  629. if(!ChildIdList.isEmpty()){
  630. List<String> ch = new ArrayList<String>();
  631. for (String str : ChildIdList) {
  632. ch.add(str);
  633. }
  634. ChildIdList = ch;
  635. }
  636. userWage.setOrgIdList(ChildIdList);
  637. }
  638. if(orgIdList != null && orgIdList.size()>0 && orgIdList.get(0)!=null &&orgIdList.get(0).length()>0) {
  639. }
  640. HttpSession session = ContextHolderUtils.getSession();
  641. TSUser tuser = (TSUser)session.getAttribute("LOCAL_CLINET_USER");
  642. try {
  643. userOptionsService.saveUserOptions(tuser.getId(), orgIdList.get(0), Globals.USER_OPTIONS_TYPE_PROJECT);
  644. } catch (Exception e) {
  645. e.printStackTrace();
  646. org.jeecgframework.core.util.LogUtil.error(e.getMessage());
  647. }
  648. }/*else{
  649. TSUser tSUser=ResourceUtil.getSessionUser();
  650. StringBuffer hql = new StringBuffer("from TSUserOrg where tsUser.id = :userid and status=0");
  651. List<TSUserOrg> tsList = systemService.getSession().createQuery(hql.toString()).setParameter("userid", tSUser.getId()).list();
  652. if(!tsList.isEmpty()){
  653. for (TSUserOrg tsUserOrg : tsList) {
  654. List<String> ChildIdList = userDepartOrgDealService.getChildIdByProjectDepartId(tsUserOrg.getTsDepart().getId());
  655. if(!ChildIdList.isEmpty()){
  656. List<String> ch = new ArrayList<String>();
  657. for (String str : ChildIdList) {
  658. if(!str.equals(tsUserOrg.getTsDepart().getId())){
  659. ch.add(str);
  660. }
  661. }
  662. ChildIdList = ch;
  663. }
  664. userWage.setOrgIdList(ChildIdList);
  665. }
  666. }
  667. }*/
  668. String moth = "";
  669. String [] mothl = monthlys.split("-");
  670. if("01".equals(mothl[1])){
  671. moth = Integer.valueOf(mothl[0])-1+"-12-01 00:00:00";
  672. }else{
  673. //moth = mothl[0]+"-"+(Integer.valueOf(mothl[1])-1)+"-01 00:00:00";
  674. moth = mothl[0] + "-" + "0" + (Integer.valueOf(mothl[1]) - 1) + "-01 00:00:00";
  675. }
  676. if(StringUtils.isNotEmpty(monthlys)){
  677. userWage.setMonthly(monthlys);
  678. }/*else{
  679. Calendar cal = Calendar.getInstance();
  680. int year = cal.get(Calendar.YEAR);
  681. int month = cal.get(Calendar.MONTH );
  682. if(month < 10){
  683. month = Integer.valueOf(0+""+month);
  684. }
  685. monthlys = year+"-"+month;
  686. request.setAttribute("monthlys", year+"-"+month);
  687. userWage.setMonthly(year+"-"+month);
  688. }*/
  689. String authSql = JeecgDataAutorUtils.loadDataSearchConditonSQLString();
  690. VisibleUserDto dto = dataPermissionService.getVisibleUserList();// 获取当前用户可见的userid列表
  691. if(dto != null){
  692. List<UserNewWageDto> list = new ArrayList<UserNewWageDto>();
  693. Map<String,BigDecimal> map = new HashMap<String,BigDecimal>();
  694. if(dto.getFlag().value().equalsIgnoreCase("ALL")){
  695. list = userWageService.getAllEntities(userWage,null,moth,authSql);
  696. // map = userWageService.getMoneySUM(userWage,null,moth);
  697. }else if(dto.getFlag().value().equalsIgnoreCase("NONE")){
  698. // 获取当前登录用户
  699. HttpSession session = ContextHolderUtils.getSession();
  700. TSUser user = (TSUser)session.getAttribute("LOCAL_CLINET_USER");
  701. List<String> uidList = new ArrayList<String>();
  702. uidList.add(user.getId());
  703. list = userWageService.getAllEntities(userWage,uidList,moth,authSql);
  704. // map = userWageService.getMoneySUM(userWage,uidList,moth);
  705. }else if(dto.getFlag().value().equalsIgnoreCase("PART")){
  706. List<String> useridList = dto.getUseridList();
  707. if(useridList != null && useridList.size() > 0){
  708. list = userWageService.getAllEntities(userWage,useridList,moth,authSql);
  709. // map = userWageService.getMoneySUM(userWage,useridList,moth);
  710. }
  711. }
  712. //List<UserNewWageDto> list = userWageService.getAll(userWage,authSql);
  713. if(!list.isEmpty()){
  714. for (Iterator iterator = list.iterator(); iterator.hasNext();) {
  715. UserNewWageDto userWageDto = (UserNewWageDto) iterator.next();
  716. if (oConvertUtils.isEmpty(userWageDto.getId())) {
  717. userWageDto.setId("temp"+UUIDGenerator.generate());
  718. }
  719. if(StringUtils.isNotEmpty(userWage.getStatus())){
  720. if(StringUtils.isEmpty(userWageDto.getMonthly())){
  721. iterator.remove();
  722. }
  723. }
  724. if(StringUtils.isEmpty(userWageDto.getMonthly())){
  725. userWageDto.setBelongUnitName(getBybelongId(userWageDto.getUserids()));
  726. }
  727. }
  728. /*for (UserNewWageDto us : list) {
  729. }*/
  730. }
  731. Collections.sort(list);
  732. dataGrid.setResults(list);
  733. //代码层计算合计,不通过sql计算
  734. try {
  735. calcuSumMap(map,list);
  736. } catch (Exception e) {
  737. e.printStackTrace();
  738. }
  739. StringBuffer str = new StringBuffer();
  740. for(String key : map.keySet()) {
  741. String value = map.get(key) == null ? "0.00" : map.get(key).toString();
  742. str.append(key).append(":").append(value).append(",");
  743. }
  744. // str.append("basicWage:"+(String.valueOf(map.get("basicWage")).equalsIgnoreCase("null")?"0.00":String.valueOf(map.get("basicWage")))+",");
  745. // str.append("dutiesAllowance:"+(String.valueOf(map.get("dutiesAllowance")).equalsIgnoreCase("null")?"0.00":String.valueOf(map.get("dutiesAllowance")))+",");
  746. // str.append("certificateSubsidy:"+(String.valueOf(map.get("certificateSubsidy")).equalsIgnoreCase("null")?"0.00":String.valueOf(map.get("certificateSubsidy")))+",");
  747. // str.append("trafficSubsidy:"+(String.valueOf(map.get("trafficSubsidy")).equalsIgnoreCase("null")?"0.00":String.valueOf(map.get("trafficSubsidy")))+",");
  748. // str.append("megathermalSubsidy:"+(String.valueOf(map.get("megathermalSubsidy")).equalsIgnoreCase("null")?"0.00":String.valueOf(map.get("megathermalSubsidy")))+",");
  749. // str.append("onlyChildCost:"+(String.valueOf(map.get("onlyChildCost")).equalsIgnoreCase("null")?"0.00":String.valueOf(map.get("onlyChildCost")))+",");
  750. // str.append("otherSubsidy:"+(String.valueOf(map.get("otherSubsidy")).equalsIgnoreCase("null")?"0.00":String.valueOf(map.get("otherSubsidy")))+",");
  751. // str.append("bonus:"+(String.valueOf(map.get("bonus")).equalsIgnoreCase("null")?"0.00":String.valueOf(map.get("bonus")))+",");
  752. // str.append("projectPerformance:"+(String.valueOf(map.get("projectPerformance")).equalsIgnoreCase("null")?"0.00":String.valueOf(map.get("projectPerformance")))+",");
  753. // str.append("mealsSubsidyDay:"+(String.valueOf(map.get("mealsSubsidyDay")).equalsIgnoreCase("null")?"0.00":String.valueOf(map.get("mealsSubsidyDay")))+",");
  754. // str.append("mealsSubsidyNight:"+(String.valueOf(map.get("mealsSubsidyNight")).equalsIgnoreCase("null")?"0.00":String.valueOf(map.get("mealsSubsidyNight")))+",");
  755. // str.append("mealsSubsidy:"+(String.valueOf(map.get("mealsSubsidy")).equalsIgnoreCase("null")?"0.00":String.valueOf(map.get("mealsSubsidy")))+",");
  756. // str.append("overtimepayTimeout:"+(String.valueOf(map.get("overtimepayTimeout")).equalsIgnoreCase("null")?"0.00":String.valueOf(map.get("overtimepayTimeout")))+",");
  757. // str.append("overtimepayFixed:"+(String.valueOf(map.get("overtimepayFixed")).equalsIgnoreCase("null")?"0.00":String.valueOf(map.get("overtimepayFixed")))+",");
  758. // str.append("duty:"+(String.valueOf(map.get("duty")).equalsIgnoreCase("null")?"0.00":String.valueOf(map.get("duty")))+",");
  759. // str.append("specialOvertime:"+(String.valueOf(map.get("specialOvertime")).equalsIgnoreCase("null")?"0.00":String.valueOf(map.get("specialOvertime")))+",");
  760. // str.append("sickLeaveDebit:"+(String.valueOf(map.get("sickLeaveDebit")).equalsIgnoreCase("null")?"0.00":String.valueOf(map.get("sickLeaveDebit")))+",");
  761. // str.append("thingLeaveDebit:"+(String.valueOf(map.get("thingLeaveDebit")).equalsIgnoreCase("null")?"0.00":String.valueOf(map.get("thingLeaveDebit")))+",");
  762. // str.append("absenceDebit:"+(String.valueOf(map.get("absenceDebit")).equalsIgnoreCase("null")?"0.00":String.valueOf(map.get("absenceDebit")))+",");
  763. // str.append("paymentSubsidy:"+(String.valueOf(map.get("paymentSubsidy")).equalsIgnoreCase("null")?"0.00":String.valueOf(map.get("paymentSubsidy")))+",");
  764. // str.append("socialSecurityDebit:"+(String.valueOf(map.get("socialSecurityDebit")).equalsIgnoreCase("null")?"0.00":String.valueOf(map.get("socialSecurityDebit")))+",");
  765. // str.append("providentFundDebit:"+(String.valueOf(map.get("providentFundDebit")).equalsIgnoreCase("null")?"0.00":String.valueOf(map.get("providentFundDebit")))+",");
  766. // str.append("preTaxMone:"+(String.valueOf(map.get("preTaxMone")).equalsIgnoreCase("null")?"0.00":String.valueOf(map.get("preTaxMone")))+",");
  767. // str.append("otherDebit:"+(String.valueOf(map.get("otherDebit")).equalsIgnoreCase("null")?"0.00":String.valueOf(map.get("otherDebit")))+",");
  768. // str.append("reissue:"+(String.valueOf(map.get("reissue")).equalsIgnoreCase("null")?"0.00":String.valueOf(map.get("reissue")))+",");
  769. // str.append("taxMoney:"+(String.valueOf(map.get("taxMoney")).equalsIgnoreCase("null")?"0.00":String.valueOf(map.get("taxMoney")))+",");
  770. // str.append("actualMoney:"+(String.valueOf(map.get("actualMoney")).equalsIgnoreCase("null")?"0.00":String.valueOf(map.get("actualMoney"))));
  771. dataGrid.setFooter(str.toString());
  772. }
  773. }else{
  774. dataGrid.setResults(new ArrayList<UserNewWageDto>());
  775. dataGrid.setFooter("");
  776. }
  777. TagUtil.datagrid(response, dataGrid);
  778. }
  779. private void calcuSumMap(Map<String, BigDecimal> map, List<UserNewWageDto> list) throws Exception {
  780. if(map == null || list == null || list.isEmpty()) {
  781. return;
  782. }
  783. for(UserNewWageDto dto : list) {
  784. for(Field field : dto.getClass().getDeclaredFields()) {
  785. sumMapItem(dto,map, field);
  786. }
  787. }
  788. }
  789. private Method getGetMethod (UserNewWageDto dto, Field field) throws NoSuchMethodException, SecurityException {
  790. byte[] meth = field.getName().getBytes();
  791. meth[0] = (byte)((char)meth[0]-'a'+'A');
  792. return (Method)dto.getClass().getMethod("get" + new String(meth));
  793. }
  794. private void sumMapItem(UserNewWageDto dto, Map<String, BigDecimal> map, Field field)throws Exception {
  795. if(dto == null || map == null) {
  796. return;
  797. }
  798. BigDecimal mapValue = map.get(field.getName());
  799. BigDecimal dtoValue = null;
  800. if("class java.math.BigDecimal".equals(field.getGenericType().toString())){
  801. dtoValue = (BigDecimal)getGetMethod(dto, field).invoke(dto);
  802. }else if("class java.lang.Integer".equals(field.getGenericType().toString())){
  803. dtoValue = new BigDecimal((Integer)getGetMethod(dto, field).invoke(dto));
  804. }else if("class java.lang.Double".equals(field.getGenericType().toString())){
  805. dtoValue = new BigDecimal((Double)getGetMethod(dto, field).invoke(dto));
  806. }
  807. if(dtoValue == null) {
  808. dtoValue = BigDecimal.ZERO;
  809. }
  810. if(mapValue == null) {
  811. map.put(field.getName(), dtoValue);
  812. }else {
  813. mapValue = mapValue.add(dtoValue);
  814. map.put(field.getName(), mapValue);
  815. }
  816. }
  817. /**
  818. * 通过人查询所属项目
  819. * @param userid
  820. * @return
  821. */
  822. private String getBybelongId(String userid){
  823. String temp = "";
  824. StringBuffer hql = new StringBuffer("from TSUserOrg where tsUser.id = :userid and ifpluralism = 0 and status=0");
  825. List<TSUserOrg> tsList = systemService.getSession().createQuery(hql.toString()).setParameter("userid", userid).list();
  826. if(!tsList.isEmpty()){
  827. TSUserOrg uo = tsList.get(0);
  828. TSDepart tsDepart = uo.getTsDepart();
  829. if("1".equals(tsDepart.getOrgType()) || "3".equals(tsDepart.getOrgType()) || "4".equals(tsDepart.getOrgType()) || "5".equals(tsDepart.getOrgType())){
  830. temp = tsDepart.getId();
  831. }else if("2".equals(tsDepart.getOrgType()) && "1".equals(tsDepart.getTSPDepart().getOrgType())){
  832. temp = tsDepart.getId();
  833. }else{
  834. temp = selectById(tsDepart.getId());
  835. }
  836. temp = systemService.get(TSDepart.class, temp).getDepartname();
  837. }
  838. return temp;
  839. }
  840. private String selectById(String id){
  841. String temp = "";
  842. TSDepart tsDepart =systemService.getEntity(TSDepart.class,id);
  843. if("3".equals(tsDepart.getOrgType()) || "5".equals(tsDepart.getOrgType())){
  844. temp = tsDepart.getId();
  845. }else{
  846. if(tsDepart.getTSPDepart() != null){
  847. selectById(tsDepart.getTSPDepart().getId());
  848. temp = tsDepart.getTSPDepart().getId();
  849. }
  850. }
  851. return temp;
  852. }
  853. /**
  854. * 删除员工工资核算表
  855. *
  856. * @return
  857. */
  858. @RequestMapping(params = "doDel")
  859. @ResponseBody
  860. public AjaxJson doDel(UserNewWageEntity userWage, HttpServletRequest request) {
  861. String message = null;
  862. AjaxJson j = new AjaxJson();
  863. userWage = systemService.getEntity(UserNewWageEntity.class, userWage.getId());
  864. message = "员工工资核算表删除成功";
  865. try{
  866. userWageService.delete(userWage);
  867. systemService.addLog(message, Globals.Log_Type_DEL, Globals.Log_Leavel_INFO);
  868. }catch(Exception e){
  869. e.printStackTrace();
  870. message = "员工工资核算表删除失败";
  871. throw new BusinessException(e.getMessage());
  872. }
  873. j.setMsg(message);
  874. return j;
  875. }
  876. /**
  877. * 批量删除员工工资核算表
  878. *
  879. * @return
  880. */
  881. @RequestMapping(params = "doBatchDel")
  882. @ResponseBody
  883. public AjaxJson doBatchDel(String ids,HttpServletRequest request){
  884. String message = null;
  885. AjaxJson j = new AjaxJson();
  886. message = "员工工资核算表删除成功";
  887. try{
  888. for(String id:ids.split(",")){
  889. UserNewWageEntity userWage = systemService.getEntity(UserNewWageEntity.class,
  890. id
  891. );
  892. userWageService.delete(userWage);
  893. systemService.addLog(message, Globals.Log_Type_DEL, Globals.Log_Leavel_INFO);
  894. }
  895. }catch(Exception e){
  896. e.printStackTrace();
  897. message = "员工工资核算表删除失败";
  898. throw new BusinessException(e.getMessage());
  899. }
  900. j.setMsg(message);
  901. return j;
  902. }
  903. /**
  904. * 添加员工工资核算表
  905. *
  906. * @param ids
  907. * @return
  908. */
  909. @RequestMapping(params = "doAdd")
  910. @ResponseBody
  911. public AjaxJson doAdd(UserNewWageEntity userWage, HttpServletRequest request) {
  912. String message = null;
  913. AjaxJson j = new AjaxJson();
  914. message = "员工工资核算表添加成功";
  915. try{
  916. userWageService.save(userWage);
  917. systemService.addLog(message, Globals.Log_Type_INSERT, Globals.Log_Leavel_INFO);
  918. }catch(Exception e){
  919. e.printStackTrace();
  920. message = "员工工资核算表添加失败";
  921. throw new BusinessException(e.getMessage());
  922. }
  923. j.setMsg(message);
  924. return j;
  925. }
  926. /**
  927. * 更新员工工资核算表
  928. *
  929. * @param ids
  930. * @return
  931. */
  932. @RequestMapping(params = "doUpdate")
  933. @ResponseBody
  934. public AjaxJson doUpdate(UserNewWageEntity userWage, HttpServletRequest request) {
  935. String message = null;
  936. AjaxJson j = new AjaxJson();
  937. message = "员工工资核算表更新成功";
  938. UserNewWageEntity t = userWageService.get(UserNewWageEntity.class, userWage.getId());
  939. try {
  940. MyBeanUtils.copyBeanNotNull2Bean(userWage, t);
  941. userWageService.saveOrUpdate(t);
  942. systemService.addLog(message, Globals.Log_Type_UPDATE, Globals.Log_Leavel_INFO);
  943. } catch (Exception e) {
  944. e.printStackTrace();
  945. message = "员工工资核算表更新失败";
  946. throw new BusinessException(e.getMessage());
  947. }
  948. j.setMsg(message);
  949. return j;
  950. }
  951. /**
  952. * 员工工资核算表新增页面跳转
  953. *
  954. * @return
  955. */
  956. @RequestMapping(params = "goAdd")
  957. public ModelAndView goAdd(UserNewWageEntity userWage, HttpServletRequest req) {
  958. if (StringUtil.isNotEmpty(userWage.getId())) {
  959. userWage = userWageService.getEntity(UserNewWageEntity.class, userWage.getId());
  960. req.setAttribute("userWagePage", userWage);
  961. }
  962. return new ModelAndView("cn/com/lzt/userwage/userWage-add");
  963. }
  964. /**
  965. * 员工工资核算表编辑页面跳转
  966. *
  967. * @return
  968. */
  969. @RequestMapping(params = "goUpdate")
  970. public ModelAndView goUpdate(UserNewWageEntity userWage, HttpServletRequest req) {
  971. if (StringUtil.isNotEmpty(userWage.getId())) {
  972. userWage = userWageService.getEntity(UserNewWageEntity.class, userWage.getId());
  973. req.setAttribute("userWagePage", userWage);
  974. }
  975. return new ModelAndView("cn/com/lzt/userwage/userWage-update");
  976. }
  977. /**
  978. * 导入功能跳转
  979. *
  980. * @return
  981. */
  982. @RequestMapping(params = "upload")
  983. public ModelAndView upload(HttpServletRequest req) {
  984. req.setAttribute("controller_name","userWageController");
  985. return new ModelAndView("common/upload/pub_excel_upload");
  986. }
  987. /**
  988. * 员工工资条
  989. * 导出excel
  990. *
  991. * @param request
  992. * @param response
  993. */
  994. @RequestMapping(params = "exportWagePaperXls")
  995. public String exportWagePaperXls(UserNewWageDto userWage,HttpServletRequest request,HttpServletResponse response
  996. , DataGrid dataGrid,ModelMap modelMap) {
  997. String filename = "员工工资条";
  998. List<UserNewWageDto> list = new ArrayList<UserNewWageDto>();
  999. String orgIds = request.getParameter("orgIds");
  1000. String monthlys = request.getParameter("monthlys");
  1001. TSDepart depart = systemService.get(TSDepart.class, orgIds);
  1002. if(depart != null) {
  1003. filename = depart.getDepartname();
  1004. }
  1005. // String departname = request.getParameter("departname");
  1006. // if(departname != null && departname.length()>0) {
  1007. // filename = departname;
  1008. // }
  1009. if(monthlys != null && monthlys.length()>0) {
  1010. filename = filename + "(" + monthlys + ")";
  1011. }
  1012. if(StringUtils.isNotEmpty(orgIds) && StringUtils.isNotEmpty(monthlys)){
  1013. String monthly = request.getParameter("monthly");
  1014. String orgId = request.getParameter("orgid");
  1015. String type = request.getParameter("type");
  1016. if(StringUtils.isEmpty(orgIds)&&StringUtils.isNotEmpty(orgId)){
  1017. List<String> orgIdList = extractIdListByComma(orgId);
  1018. // 获取 当前组织机构的用户信息
  1019. if (!CollectionUtils.isEmpty(orgIdList)) {
  1020. if(oConvertUtils.isNotEmpty(type) && "1".equals(type)){
  1021. userWage.setOrgIdList(orgIdList);
  1022. }else{
  1023. String or = orgIdList.get(0);
  1024. List<String> ChildIdList = userDepartOrgDealService.getChildIdByProjectDepartId(or);
  1025. userWage.setOrgIdList(ChildIdList);
  1026. }
  1027. }
  1028. }else{
  1029. if(StringUtils.isNotEmpty(orgIds)){
  1030. List<String> orgIdList = extractIdListByComma(orgIds);
  1031. // 获取 当前组织机构的用户信息
  1032. if (!CollectionUtils.isEmpty(orgIdList)) {
  1033. String or = orgIdList.get(0);
  1034. List<String> ChildIdList = userDepartOrgDealService.getChildIdByProjectDepartId(or);
  1035. userWage.setOrgIdList(ChildIdList);
  1036. }
  1037. }
  1038. }
  1039. String moth = "";
  1040. String [] mothl = monthlys.split("-");
  1041. if("01".equals(mothl[1])){
  1042. moth = Integer.valueOf(mothl[0])-1+"-12-01";
  1043. }else{
  1044. moth = monthlys+"-01 00:00:00";
  1045. }
  1046. if(StringUtils.isNotEmpty(monthlys)){
  1047. userWage.setMonthly(monthlys);
  1048. }else{
  1049. if(StringUtils.isNotEmpty(monthly)){
  1050. request.setAttribute("monthlys", monthly);
  1051. userWage.setMonthly(monthly);
  1052. }else{
  1053. request.setAttribute("monthlys", getMonthlys());
  1054. userWage.setMonthly(getMonthlys());
  1055. }
  1056. }
  1057. String authSql = JeecgDataAutorUtils.loadDataSearchConditonSQLString();
  1058. VisibleUserDto dto = dataPermissionService.getVisibleUserList();// 获取当前用户可见的userid列表
  1059. if(dto != null){
  1060. if(dto.getFlag().value().equalsIgnoreCase("ALL")){
  1061. list = userWageService.getAllEntities(userWage,null,moth,authSql);
  1062. }else if(dto.getFlag().value().equalsIgnoreCase("NONE")){
  1063. // 获取当前登录用户
  1064. HttpSession session = ContextHolderUtils.getSession();
  1065. TSUser user = (TSUser)session.getAttribute("LOCAL_CLINET_USER");
  1066. List<String> uidList = new ArrayList<String>();
  1067. uidList.add(user.getId());
  1068. list = userWageService.getAllEntities(userWage,uidList,moth,authSql);
  1069. }else if(dto.getFlag().value().equalsIgnoreCase("PART")){
  1070. List<String> uidList = dto.getUseridList();
  1071. if(uidList != null && uidList.size() > 0){
  1072. list = userWageService.getAllEntities(userWage,uidList,moth,authSql);
  1073. }
  1074. }
  1075. }
  1076. }
  1077. // long s = System.currentTimeMillis();
  1078. // getDingAttendanceinfoEntitiesWithCache();
  1079. // long e = System.currentTimeMillis();
  1080. // System.out.println("ding: " + (e-s)/1000 +"s");
  1081. //
  1082. // getDingAttendanceinfoEntitiesWithJDBC();
  1083. //
  1084. // long e2 = System.currentTimeMillis();
  1085. // System.out.println("jdbc: " +(e2-e)/1000 + " s");
  1086. Collections.sort(list);
  1087. List<UserWagePaperDto> paperList = new ArrayList<>();
  1088. try {
  1089. creatWagePaper(list, paperList);
  1090. } catch (Exception e) {
  1091. org.jeecgframework.core.util.LogUtil.error(e.getMessage());
  1092. }
  1093. modelMap.put(NormalExcelConstants.FILE_NAME,filename);
  1094. modelMap.put(NormalExcelConstants.CLASS,UserWagePaperDto.class);
  1095. modelMap.put(NormalExcelConstants.PARAMS,new ExportParams("员工工资核算列表", "导出人:"+ResourceUtil.getSessionUser().getRealName(),
  1096. "导出信息"));
  1097. modelMap.put(NormalExcelConstants.DATA_LIST,paperList);
  1098. return NormalExcelConstants.JEECG_EXCEL_VIEW;
  1099. }
  1100. private void getDingAttendanceinfoEntitiesWithJDBC() {
  1101. // HashMap<String, Object> hm = hm_cache.get("getDingAttendanceinfoEntitiesWithCache");
  1102. // Date curdate = dto.getYmdDate();
  1103. // String strDateFormat = "yyyy-MM";
  1104. // SimpleDateFormat sdf = new SimpleDateFormat(strDateFormat);
  1105. // Calendar calendar = Calendar.getInstance();
  1106. // calendar.setTime(curdate);
  1107. // calendar.add(Calendar.DATE, 2);
  1108. // Date tomdate = calendar.getTime();
  1109. // if(hm == null) {
  1110. HashMap<String, Object> hm = new HashMap<>();
  1111. // hm_cache.put("getDingAttendanceinfoEntitiesWithCache", hm);
  1112. //
  1113. // CriteriaQuery cq = new CriteriaQuery(DingAttendanceinfoEntity.class);
  1114. // cq.like("attendanceTime", sdf.format(curdate)+"%");
  1115. // cq.add();
  1116. // cq.between("attendanceTime", curdate, tomdate);
  1117. // cq.add();
  1118. // cq.addOrder("attendanceTime", SortDirection.asc);
  1119. String hql = "select id,user_id, attendance_time from t_bus_ding_attendanceinfo "
  1120. + "where attendance_time like '2019-08%'";
  1121. List<Map<String, Object>> mapList=new ArrayList<Map<String, Object>>();
  1122. mapList = systemService.findForJdbc(hql, null);
  1123. //getListByCriteriaQuery(cq, false);
  1124. for(Map<String, Object> map : mapList) {
  1125. DingAttendanceinfoEntity entity = new DingAttendanceinfoEntity();
  1126. entity.setId(map.get("id").toString());
  1127. entity.setUserId(map.get("user_id").toString());
  1128. entity.setAttendanceTime((Date)map.get("attendance_time"));
  1129. String userInEntity = entity.getUserId();
  1130. if(hm.containsKey(userInEntity)) {
  1131. List<DingAttendanceinfoEntity> entitylist = (List<DingAttendanceinfoEntity>)hm.get(userInEntity);
  1132. entitylist.add(entity);
  1133. }else {
  1134. List<DingAttendanceinfoEntity> newlist = new ArrayList<>();
  1135. newlist.add(entity);
  1136. hm.put(userInEntity, newlist);
  1137. }
  1138. }
  1139. // }
  1140. //
  1141. // List<DingAttendanceinfoEntity> allList = (List<DingAttendanceinfoEntity>)hm.get(dto.getUserid());
  1142. // if(allList == null) {
  1143. // return new ArrayList<DingAttendanceinfoEntity>();
  1144. // }
  1145. // List<DingAttendanceinfoEntity> selectList = new ArrayList<>();
  1146. // for(DingAttendanceinfoEntity attInAll : allList) {
  1147. // Date attendanceTime = attInAll.getAttendanceTime();
  1148. // if(attendanceTime.after(curdate) && attendanceTime.before(tomdate)) {
  1149. // selectList.add(attInAll);
  1150. // }
  1151. // }
  1152. // return selectList;
  1153. }
  1154. /**
  1155. * @param dto
  1156. * @return
  1157. */
  1158. private void getDingAttendanceinfoEntitiesWithCache() {
  1159. // HashMap<String, Object> hm = hm_cache.get("getDingAttendanceinfoEntitiesWithCache");
  1160. // Date curdate = dto.getYmdDate();
  1161. // String strDateFormat = "yyyy-MM";
  1162. // SimpleDateFormat sdf = new SimpleDateFormat(strDateFormat);
  1163. // Calendar calendar = Calendar.getInstance();
  1164. // calendar.setTime(curdate);
  1165. // calendar.add(Calendar.DATE, 2);
  1166. // Date tomdate = calendar.getTime();
  1167. // if(hm == null) {
  1168. HashMap<String, Object> hm = new HashMap<>();
  1169. // hm_cache.put("getDingAttendanceinfoEntitiesWithCache", hm);
  1170. //
  1171. // CriteriaQuery cq = new CriteriaQuery(DingAttendanceinfoEntity.class);
  1172. // cq.like("attendanceTime", sdf.format(curdate)+"%");
  1173. // cq.add();
  1174. // cq.between("attendanceTime", curdate, tomdate);
  1175. // cq.add();
  1176. // cq.addOrder("attendanceTime", SortDirection.asc);
  1177. String hql = "from DingAttendanceinfoEntity where attendanceTime like '2019-08%'";
  1178. List<DingAttendanceinfoEntity> entitiesFromDB = systemService.findHql(hql);
  1179. //getListByCriteriaQuery(cq, false);
  1180. for(DingAttendanceinfoEntity entity : entitiesFromDB) {
  1181. String userInEntity = entity.getUserId();
  1182. if(hm.containsKey(userInEntity)) {
  1183. List<DingAttendanceinfoEntity> entitylist = (List<DingAttendanceinfoEntity>)hm.get(userInEntity);
  1184. entitylist.add(entity);
  1185. }else {
  1186. List<DingAttendanceinfoEntity> newlist = new ArrayList<>();
  1187. newlist.add(entity);
  1188. hm.put(userInEntity, newlist);
  1189. }
  1190. }
  1191. // }
  1192. //
  1193. // List<DingAttendanceinfoEntity> allList = (List<DingAttendanceinfoEntity>)hm.get(dto.getUserid());
  1194. // if(allList == null) {
  1195. // return new ArrayList<DingAttendanceinfoEntity>();
  1196. // }
  1197. // List<DingAttendanceinfoEntity> selectList = new ArrayList<>();
  1198. // for(DingAttendanceinfoEntity attInAll : allList) {
  1199. // Date attendanceTime = attInAll.getAttendanceTime();
  1200. // if(attendanceTime.after(curdate) && attendanceTime.before(tomdate)) {
  1201. // selectList.add(attInAll);
  1202. // }
  1203. // }
  1204. // return selectList;
  1205. }
  1206. /**
  1207. * @param list
  1208. * @param paperList
  1209. * @throws InvocationTargetException
  1210. * @throws IllegalArgumentException
  1211. * @throws IllegalAccessException
  1212. */
  1213. private void creatWagePaper(List<UserNewWageDto> list, List<UserWagePaperDto> paperList) throws Exception {
  1214. for(int i=0 ; i < list.size() ; i++) {
  1215. UserNewWageDto dto = list.get(i);
  1216. UserWagePaperDto papertitle = new UserWagePaperDto();
  1217. UserWagePaperDto paperitem = new UserWagePaperDto();
  1218. Field[] fields = UserWagePaperDto.class.getDeclaredFields();
  1219. for(int j=0 ; j<fields.length ; j++) {
  1220. Field f = fields[j];
  1221. Excel ann = f.getAnnotation(Excel.class);
  1222. if(ann != null) {
  1223. PropertyDescriptor paperpd = new PropertyDescriptor(f.getName(), UserWagePaperDto.class);
  1224. Method wM = paperpd.getWriteMethod();//获得写方法
  1225. wM.invoke(papertitle, ann.name());
  1226. PropertyDescriptor dtopd = new PropertyDescriptor(f.getName(), UserNewWageDto.class);
  1227. Method rM = dtopd.getReadMethod();//读方法
  1228. Object v = rM.invoke(dto);
  1229. String str = "";
  1230. if(v != null) {
  1231. str = v.toString();
  1232. }
  1233. wM.invoke(paperitem, str);
  1234. }
  1235. }
  1236. if(i>0) {
  1237. paperList.add(papertitle);
  1238. }
  1239. paperList.add(paperitem);
  1240. }
  1241. }
  1242. /**
  1243. * 员工工资核算
  1244. * 导出excel
  1245. *
  1246. * @param request
  1247. * @param response
  1248. */
  1249. @RequestMapping(params = "exportXls")
  1250. public String exportXls(UserNewWageDto userWage,HttpServletRequest request,HttpServletResponse response
  1251. , DataGrid dataGrid,ModelMap modelMap) {
  1252. String filename = "员工工资核算";
  1253. List<UserNewWageDto> list = new ArrayList<UserNewWageDto>();
  1254. String orgIds = request.getParameter("orgIds");
  1255. String monthlys = request.getParameter("monthlys");
  1256. TSDepart depart = systemService.get(TSDepart.class, orgIds);
  1257. if(depart != null) {
  1258. filename = depart.getDepartname();
  1259. }
  1260. // String departname = request.getParameter("departname");
  1261. // if(departname != null && departname.length()>0) {
  1262. // filename = departname;
  1263. // }
  1264. if(monthlys != null && monthlys.length()>0) {
  1265. filename = filename + "(" + monthlys + ")";
  1266. }
  1267. if(StringUtils.isNotEmpty(orgIds) && StringUtils.isNotEmpty(monthlys)){
  1268. String monthly = request.getParameter("monthly");
  1269. String orgId = request.getParameter("orgid");
  1270. String type = request.getParameter("type");
  1271. if(StringUtils.isEmpty(orgIds)&&StringUtils.isNotEmpty(orgId)){
  1272. List<String> orgIdList = extractIdListByComma(orgId);
  1273. // 获取 当前组织机构的用户信息
  1274. if (!CollectionUtils.isEmpty(orgIdList)) {
  1275. if(oConvertUtils.isNotEmpty(type) && "1".equals(type)){
  1276. userWage.setOrgIdList(orgIdList);
  1277. }else{
  1278. String or = orgIdList.get(0);
  1279. List<String> ChildIdList = userDepartOrgDealService.getChildIdByProjectDepartId(or);
  1280. userWage.setOrgIdList(ChildIdList);
  1281. }
  1282. }
  1283. }else{
  1284. if(StringUtils.isNotEmpty(orgIds)){
  1285. List<String> orgIdList = extractIdListByComma(orgIds);
  1286. // 获取 当前组织机构的用户信息
  1287. if (!CollectionUtils.isEmpty(orgIdList)) {
  1288. String or = orgIdList.get(0);
  1289. List<String> ChildIdList = userDepartOrgDealService.getChildIdByProjectDepartId(or);
  1290. userWage.setOrgIdList(ChildIdList);
  1291. }
  1292. }
  1293. }
  1294. String moth = "";
  1295. String [] mothl = monthlys.split("-");
  1296. if("01".equals(mothl[1])){
  1297. moth = Integer.valueOf(mothl[0])-1+"-12-01";
  1298. }else{
  1299. moth = monthlys+"-01 00:00:00";
  1300. }
  1301. if(StringUtils.isNotEmpty(monthlys)){
  1302. userWage.setMonthly(monthlys);
  1303. }else{
  1304. if(StringUtils.isNotEmpty(monthly)){
  1305. request.setAttribute("monthlys", monthly);
  1306. userWage.setMonthly(monthly);
  1307. }else{
  1308. request.setAttribute("monthlys", getMonthlys());
  1309. userWage.setMonthly(getMonthlys());
  1310. }
  1311. }
  1312. String authSql = JeecgDataAutorUtils.loadDataSearchConditonSQLString();
  1313. VisibleUserDto dto = dataPermissionService.getVisibleUserList();// 获取当前用户可见的userid列表
  1314. if(dto != null){
  1315. if(dto.getFlag().value().equalsIgnoreCase("ALL")){
  1316. list = userWageService.getAllEntities(userWage,null,moth,authSql);
  1317. }else if(dto.getFlag().value().equalsIgnoreCase("NONE")){
  1318. // 获取当前登录用户
  1319. HttpSession session = ContextHolderUtils.getSession();
  1320. TSUser user = (TSUser)session.getAttribute("LOCAL_CLINET_USER");
  1321. List<String> uidList = new ArrayList<String>();
  1322. uidList.add(user.getId());
  1323. list = userWageService.getAllEntities(userWage,uidList,moth,authSql);
  1324. }else if(dto.getFlag().value().equalsIgnoreCase("PART")){
  1325. List<String> uidList = dto.getUseridList();
  1326. if(uidList != null && uidList.size() > 0){
  1327. list = userWageService.getAllEntities(userWage,uidList,moth,authSql);
  1328. }
  1329. }
  1330. }
  1331. }
  1332. Collections.sort(list);
  1333. modelMap.put(NormalExcelConstants.FILE_NAME,filename);
  1334. modelMap.put(NormalExcelConstants.CLASS,UserNewWageDto.class);
  1335. modelMap.put(NormalExcelConstants.PARAMS,new ExportParams("员工工资核算列表", "导出人:"+ResourceUtil.getSessionUser().getRealName(),
  1336. "导出信息"));
  1337. modelMap.put(NormalExcelConstants.DATA_LIST,list);
  1338. return NormalExcelConstants.JEECG_EXCEL_VIEW;
  1339. }
  1340. /**
  1341. * 月度工资一览导出
  1342. *
  1343. * @param request
  1344. * @param response
  1345. */
  1346. @RequestMapping(params = "exportXls1")
  1347. public String exportXls1(UserWageViewDto userWage,HttpServletRequest request,HttpServletResponse response
  1348. , DataGrid dataGrid,ModelMap modelMap) {
  1349. MiniDaoPage<UserWageViewDto> list = new MiniDaoPage<UserWageViewDto>();
  1350. String monthlys = request.getParameter("monthlys");
  1351. // String departname = request.getParameter("departname");
  1352. String orgIds = request.getParameter("orgIds");
  1353. String filename = "员工月度工资一览";
  1354. TSDepart depart = systemService.get(TSDepart.class, orgIds);
  1355. if(depart != null) {
  1356. filename = depart.getDepartname();
  1357. }
  1358. if(monthlys != null && monthlys.length()>0) {
  1359. filename = filename + "(" + monthlys + ")";
  1360. }
  1361. if(StringUtils.isNotEmpty(monthlys)){
  1362. List<String> orgIdList = extractIdListByComma(orgIds);
  1363. // 获取 当前组织机构的用户信息
  1364. if (!CollectionUtils.isEmpty(orgIdList)) {
  1365. String or = orgIdList.get(0);
  1366. List<String> ChildIdList = userDepartOrgDealService.getChildIdByProjectDepartId(or);
  1367. userWage.setOrgIdList(ChildIdList);
  1368. }
  1369. userWage.setMonthly(monthlys);
  1370. String authSql = JeecgDataAutorUtils.loadDataSearchConditonSQLString();
  1371. VisibleUserDto dto = dataPermissionService.getVisibleUserList();// 获取当前用户可见的userid列表
  1372. if(dto != null){
  1373. if(dto.getFlag().value().equalsIgnoreCase("ALL")){
  1374. list = userWageService.getViewEntities(userWage,null,dataGrid.getPage(), dataGrid.getRows(), authSql);
  1375. }else if(dto.getFlag().value().equalsIgnoreCase("NONE")){
  1376. // 获取当前登录用户
  1377. HttpSession session = ContextHolderUtils.getSession();
  1378. TSUser user = (TSUser)session.getAttribute("LOCAL_CLINET_USER");
  1379. List<String> uidList = new ArrayList<String>();
  1380. uidList.add(user.getId());
  1381. list = userWageService.getViewEntities(userWage,uidList,dataGrid.getPage(), dataGrid.getRows(), authSql);
  1382. }else if(dto.getFlag().value().equalsIgnoreCase("PART")){
  1383. List<String> useridList = dto.getUseridList();
  1384. if(useridList != null && useridList.size() > 0){
  1385. list = userWageService.getViewEntities(userWage,useridList,dataGrid.getPage(), dataGrid.getRows(), authSql);
  1386. }
  1387. }
  1388. //MiniDaoPage<UserWageViewDto> list = userWageService.getViewEntities(userWage, dataGrid.getPage(), dataGrid.getRows(), authSql);
  1389. //List<UserNewWageDto> list = userWageService.getAllEntities(userWage,authSql);
  1390. }
  1391. }
  1392. modelMap.put(NormalExcelConstants.FILE_NAME,filename);
  1393. modelMap.put(NormalExcelConstants.CLASS,UserWageViewDto.class);
  1394. modelMap.put(NormalExcelConstants.PARAMS,new ExportParams("员工月度工资一览列表", "导出人:"+ResourceUtil.getSessionUser().getRealName(),
  1395. "导出信息"));
  1396. if(list.getResults() == null){
  1397. modelMap.put(NormalExcelConstants.DATA_LIST,new ArrayList<>());
  1398. }else{
  1399. modelMap.put(NormalExcelConstants.DATA_LIST,list.getResults());
  1400. }
  1401. return NormalExcelConstants.JEECG_EXCEL_VIEW;
  1402. }
  1403. /**
  1404. * 月度工资详细
  1405. *
  1406. * @param request
  1407. * @param response
  1408. */
  1409. @RequestMapping(params = "exportXlsDetailByProject")
  1410. public String exportXlsDetailByProject(@Param("orgId") String orgId
  1411. ,@Param("monthly")String monthly,@Param("type")String type,HttpServletRequest request,HttpServletResponse response
  1412. , DataGrid dataGrid,ModelMap modelMap) {
  1413. String filename = "美都环卫全体员工工资详细";
  1414. UserNewWageDto userWage = new UserNewWageDto();
  1415. if(StringUtils.isNotEmpty(orgId)){
  1416. TSDepart depart = systemService.get(TSDepart.class, orgId);
  1417. if(depart != null) {
  1418. filename = depart.getDepartname();
  1419. }
  1420. }
  1421. // if(StringUtils.isNotEmpty(orgId) && departname != null && departname.length()>0) {
  1422. // filename = departname;
  1423. // }
  1424. filename = filename.replaceAll(",", "");
  1425. if(monthly != null && monthly.length()>0) {
  1426. filename = filename + "(" + monthly + ")";
  1427. }
  1428. if(StringUtils.isNotEmpty(orgId)){
  1429. List<String> orgIdList = extractIdListByComma(orgId);
  1430. // 获取 当前组织机构的用户信息
  1431. if (!CollectionUtils.isEmpty(orgIdList)) {
  1432. if(oConvertUtils.isNotEmpty(type) && "1".equals(type)){
  1433. userWage.setOrgIdList(orgIdList);
  1434. }else{
  1435. String or = orgIdList.get(0);
  1436. List<String> ChildIdList = userDepartOrgDealService.getChildIdByProjectDepartId(or);
  1437. userWage.setOrgIdList(ChildIdList);
  1438. }
  1439. }
  1440. }
  1441. if(StringUtils.isNotEmpty(monthly)){
  1442. userWage.setMonthly(monthly);
  1443. }
  1444. String authSql = JeecgDataAutorUtils.loadDataSearchConditonSQLString();
  1445. VisibleUserDto dto = dataPermissionService.getVisibleUserList();// 获取当前用户可见的userid列表
  1446. if(dto != null){
  1447. List<UserNewWageDto> list = new ArrayList<UserNewWageDto>();
  1448. if(dto.getFlag().value().equalsIgnoreCase("ALL")){
  1449. list = userWageService.getAllEntities(userWage,null,null,authSql);
  1450. }else if(dto.getFlag().value().equalsIgnoreCase("NONE")){
  1451. // 获取当前登录用户
  1452. HttpSession session = ContextHolderUtils.getSession();
  1453. TSUser user = (TSUser)session.getAttribute("LOCAL_CLINET_USER");
  1454. List<String> uidList = new ArrayList<String>();
  1455. uidList.add(user.getId());
  1456. list = userWageService.getAllEntities(userWage,uidList,null,authSql);
  1457. }else if(dto.getFlag().value().equalsIgnoreCase("PART")){
  1458. List<String> useridList = dto.getUseridList();
  1459. if(useridList != null && useridList.size() > 0){
  1460. list = userWageService.getAllEntities(userWage,useridList,null,authSql);
  1461. }
  1462. }
  1463. Collections.sort(list);
  1464. modelMap.put(NormalExcelConstants.FILE_NAME,filename);
  1465. modelMap.put(NormalExcelConstants.CLASS,UserNewWageDto.class);
  1466. modelMap.put(NormalExcelConstants.PARAMS,new ExportParams("员工工资详细列表", "导出人:"+ResourceUtil.getSessionUser().getRealName(),
  1467. "导出信息"));
  1468. modelMap.put(NormalExcelConstants.DATA_LIST,list);
  1469. }
  1470. return NormalExcelConstants.JEECG_EXCEL_VIEW;
  1471. }
  1472. /**
  1473. * 月度工资详细
  1474. *
  1475. * @param request
  1476. * @param response
  1477. */
  1478. @RequestMapping(params = "exportXls2")
  1479. public String exportXls2(UserNewWageDto userWage,HttpServletRequest request,HttpServletResponse response
  1480. , DataGrid dataGrid,ModelMap modelMap) {
  1481. String monthlys = request.getParameter("monthlys");
  1482. String monthly = request.getParameter("monthly");
  1483. String orgIds = request.getParameter("orgIds");
  1484. String orgId = request.getParameter("orgid");
  1485. String type = request.getParameter("type");
  1486. // String departname = request.getParameter("departname");
  1487. String filename = "员工工资详细";
  1488. // if(departname != null && departname.length()>0) {
  1489. // filename = departname;
  1490. // }
  1491. if(monthlys != null && monthlys.length()>0) {
  1492. filename = filename + "(" + monthlys + ")";
  1493. }
  1494. if(StringUtils.isEmpty(orgIds)&&StringUtils.isNotEmpty(orgId)){
  1495. List<String> orgIdList = extractIdListByComma(orgId);
  1496. // 获取 当前组织机构的用户信息
  1497. if (!CollectionUtils.isEmpty(orgIdList)) {
  1498. if(oConvertUtils.isNotEmpty(type) && "1".equals(type)){
  1499. userWage.setOrgIdList(orgIdList);
  1500. }else{
  1501. String or = orgIdList.get(0);
  1502. List<String> ChildIdList = userDepartOrgDealService.getChildIdByProjectDepartId(or);
  1503. userWage.setOrgIdList(ChildIdList);
  1504. }
  1505. }
  1506. }else{
  1507. if(StringUtils.isNotEmpty(orgIds)){
  1508. List<String> orgIdList = extractIdListByComma(orgIds);
  1509. // 获取 当前组织机构的用户信息
  1510. if (!CollectionUtils.isEmpty(orgIdList)) {
  1511. String or = orgIdList.get(0);
  1512. List<String> ChildIdList = userDepartOrgDealService.getChildIdByProjectDepartId(or);
  1513. userWage.setOrgIdList(ChildIdList);
  1514. }
  1515. }
  1516. }
  1517. if(StringUtils.isNotEmpty(monthlys)){
  1518. userWage.setMonthly(monthlys);
  1519. }else{
  1520. if(StringUtils.isNotEmpty(monthly)){
  1521. request.setAttribute("monthlys", monthly);
  1522. userWage.setMonthly(monthly);
  1523. }else{
  1524. request.setAttribute("monthlys", getMonthlys());
  1525. userWage.setMonthly(getMonthlys());
  1526. }
  1527. //userWage.setMonthly(sim.format(sim.parse("2017-10")));
  1528. }
  1529. String authSql = JeecgDataAutorUtils.loadDataSearchConditonSQLString();
  1530. VisibleUserDto dto = dataPermissionService.getVisibleUserList();// 获取当前用户可见的userid列表
  1531. if(dto != null){
  1532. List<UserNewWageDto> list = new ArrayList<UserNewWageDto>();
  1533. if(dto.getFlag().value().equalsIgnoreCase("ALL")){
  1534. list = userWageService.getAllEntities(userWage,null,null,authSql);
  1535. }else if(dto.getFlag().value().equalsIgnoreCase("NONE")){
  1536. // 获取当前登录用户
  1537. HttpSession session = ContextHolderUtils.getSession();
  1538. TSUser user = (TSUser)session.getAttribute("LOCAL_CLINET_USER");
  1539. List<String> uidList = new ArrayList<String>();
  1540. uidList.add(user.getId());
  1541. list = userWageService.getAllEntities(userWage,uidList,null,authSql);
  1542. }else if(dto.getFlag().value().equalsIgnoreCase("PART")){
  1543. List<String> useridList = dto.getUseridList();
  1544. if(useridList != null && useridList.size() > 0){
  1545. list = userWageService.getAllEntities(userWage,useridList,null,authSql);
  1546. }
  1547. }
  1548. Collections.sort(list);
  1549. modelMap.put(NormalExcelConstants.FILE_NAME,filename);
  1550. modelMap.put(NormalExcelConstants.CLASS,UserNewWageDto.class);
  1551. modelMap.put(NormalExcelConstants.PARAMS,new ExportParams("员工工资详细列表", "导出人:"+ResourceUtil.getSessionUser().getRealName(),
  1552. "导出信息"));
  1553. modelMap.put(NormalExcelConstants.DATA_LIST,list);
  1554. }
  1555. return NormalExcelConstants.JEECG_EXCEL_VIEW;
  1556. }
  1557. /**
  1558. * 月度工资明细
  1559. * 人事使用
  1560. *
  1561. * @param request
  1562. * @param response
  1563. * @throws Exception
  1564. */
  1565. @RequestMapping(params = "exportManagerNewWageDetailXls")
  1566. public String exportManagerNewWageDetailXls(UserNewWageDto userWage,HttpServletRequest request,HttpServletResponse response
  1567. , DataGrid dataGrid,ModelMap modelMap) throws Exception {
  1568. String monthlys = request.getParameter("monthlys");
  1569. String monthly = request.getParameter("monthly");
  1570. String orgIds = request.getParameter("orgIds");
  1571. String orgId = request.getParameter("orgid");
  1572. String type = request.getParameter("type");
  1573. String departname = request.getParameter("departname");
  1574. String filename = "项目经理工资明细";
  1575. if(departname != null && departname.length()>0) {
  1576. filename = departname;
  1577. }
  1578. if(monthlys != null && monthlys.length()>0) {
  1579. filename = filename + "(" + monthlys + ")";
  1580. }
  1581. if(StringUtils.isEmpty(orgIds)&&StringUtils.isNotEmpty(orgId)){
  1582. List<String> orgIdList = extractIdListByComma(orgId);
  1583. // 获取 当前组织机构的用户信息
  1584. if (!CollectionUtils.isEmpty(orgIdList)) {
  1585. if(oConvertUtils.isNotEmpty(type) && "1".equals(type)){
  1586. userWage.setOrgIdList(orgIdList);
  1587. }else{
  1588. String or = orgIdList.get(0);
  1589. List<String> ChildIdList = userDepartOrgDealService.getChildIdByProjectDepartId(or);
  1590. userWage.setOrgIdList(ChildIdList);
  1591. }
  1592. }
  1593. }else{
  1594. if(StringUtils.isNotEmpty(orgIds)){
  1595. List<String> orgIdList = extractIdListByComma(orgIds);
  1596. // 获取 当前组织机构的用户信息
  1597. if (!CollectionUtils.isEmpty(orgIdList)) {
  1598. String or = orgIdList.get(0);
  1599. List<String> ChildIdList = userDepartOrgDealService.getChildIdByProjectDepartId(or);
  1600. userWage.setOrgIdList(ChildIdList);
  1601. }
  1602. }
  1603. }
  1604. if(StringUtils.isNotEmpty(monthlys)){
  1605. userWage.setMonthly(monthlys);
  1606. }else{
  1607. if(StringUtils.isNotEmpty(monthly)){
  1608. request.setAttribute("monthlys", monthly);
  1609. userWage.setMonthly(monthly);
  1610. }else{
  1611. request.setAttribute("monthlys", getMonthlys());
  1612. userWage.setMonthly(getMonthlys());
  1613. }
  1614. }
  1615. String authSql = JeecgDataAutorUtils.loadDataSearchConditonSQLString();
  1616. List<UserNewWageDto> list = new ArrayList<UserNewWageDto>();
  1617. List<UserNewWageDetaillsDto> listDetail = new ArrayList<UserNewWageDetaillsDto>();
  1618. // 取得所有的数据,然后在业务层过滤,效率会提高一些
  1619. list = userWageService.getAllManagerNewWageEntities(userWage,null,null,authSql);
  1620. UserNewWageDetaillsDto dto2 = null;
  1621. for (UserNewWageDto userWageDto : list) {
  1622. dto2 = new UserNewWageDetaillsDto();
  1623. MyBeanUtils.copyBeanNotNull2Bean(userWageDto,dto2);
  1624. listDetail.add(dto2);
  1625. }
  1626. Collections.sort(listDetail);
  1627. modelMap.put(NormalExcelConstants.FILE_NAME,filename);
  1628. modelMap.put(NormalExcelConstants.CLASS,UserNewWageDetaillsDto.class);
  1629. modelMap.put(NormalExcelConstants.PARAMS,new ExportParams("项目经理工资明细列表", "导出人:"+ResourceUtil.getSessionUser().getRealName(),
  1630. "导出信息"));
  1631. modelMap.put(NormalExcelConstants.DATA_LIST,listDetail);
  1632. // }
  1633. return NormalExcelConstants.JEECG_EXCEL_VIEW;
  1634. }
  1635. /**
  1636. * 导出excel 使模板
  1637. *
  1638. * @param request
  1639. * @param response
  1640. */
  1641. @RequestMapping(params = "exportXlsByT")
  1642. public String exportXlsByT(UserNewWageEntity userWage,HttpServletRequest request,HttpServletResponse response
  1643. , DataGrid dataGrid,ModelMap modelMap) {
  1644. modelMap.put(NormalExcelConstants.FILE_NAME,"员工工资核算表");
  1645. modelMap.put(NormalExcelConstants.CLASS,UserNewWageEntity.class);
  1646. modelMap.put(NormalExcelConstants.PARAMS,new ExportParams("员工工资核算表列表", "导出人:"+ResourceUtil.getSessionUser().getRealName(),
  1647. "导出信息"));
  1648. modelMap.put(NormalExcelConstants.DATA_LIST,new ArrayList());
  1649. return NormalExcelConstants.JEECG_EXCEL_VIEW;
  1650. }
  1651. @SuppressWarnings("unchecked")
  1652. @RequestMapping(params = "importExcel", method = RequestMethod.POST)
  1653. @ResponseBody
  1654. public AjaxJson importExcel(HttpServletRequest request, HttpServletResponse response) {
  1655. AjaxJson j = new AjaxJson();
  1656. MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
  1657. Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
  1658. for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
  1659. MultipartFile file = entity.getValue();// 获取上传文件对象
  1660. ImportParams params = new ImportParams();
  1661. params.setTitleRows(2);
  1662. params.setHeadRows(1);
  1663. params.setNeedSave(true);
  1664. try {
  1665. List<UserNewWageEntity> listUserNewWageEntitys = ExcelImportUtil.importExcel(file.getInputStream(),UserNewWageEntity.class,params);
  1666. for (UserNewWageEntity userWage : listUserNewWageEntitys) {
  1667. userWageService.save(userWage);
  1668. }
  1669. j.setMsg("文件导入成功!");
  1670. } catch (Exception e) {
  1671. j.setMsg("文件导入失败!");
  1672. logger.error(ExceptionUtil.getExceptionMessage(e));
  1673. }finally{
  1674. try {
  1675. file.getInputStream().close();
  1676. } catch (IOException e) {
  1677. e.printStackTrace();
  1678. }
  1679. }
  1680. }
  1681. return j;
  1682. }
  1683. @RequestMapping(method = RequestMethod.GET)
  1684. @ResponseBody
  1685. public List<UserNewWageEntity> list() {
  1686. List<UserNewWageEntity> listUserWages=userWageService.getList(UserNewWageEntity.class);
  1687. return listUserWages;
  1688. }
  1689. @RequestMapping(value = "/{id}", method = RequestMethod.GET)
  1690. @ResponseBody
  1691. public ResponseEntity<?> get(@PathVariable("id") String id) {
  1692. UserNewWageEntity task = userWageService.get(UserNewWageEntity.class, id);
  1693. if (task == null) {
  1694. return new ResponseEntity(HttpStatus.NOT_FOUND);
  1695. }
  1696. return new ResponseEntity(task, HttpStatus.OK);
  1697. }
  1698. @RequestMapping(method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE)
  1699. @ResponseBody
  1700. public ResponseEntity<?> create(@RequestBody UserNewWageEntity userWage, UriComponentsBuilder uriBuilder) {
  1701. //调用JSR303 Bean Validator进行校验,如果出错返回含400错误码及json格式的错误信息.
  1702. Set<ConstraintViolation<UserNewWageEntity>> failures = validator.validate(userWage);
  1703. if (!failures.isEmpty()) {
  1704. return new ResponseEntity(BeanValidators.extractPropertyAndMessage(failures), HttpStatus.BAD_REQUEST);
  1705. }
  1706. //保存
  1707. try{
  1708. userWageService.save(userWage);
  1709. } catch (Exception e) {
  1710. e.printStackTrace();
  1711. return new ResponseEntity(HttpStatus.NO_CONTENT);
  1712. }
  1713. //按照Restful风格约定,创建指向新任务的url, 也可以直接返回id或对象.
  1714. String id = userWage.getId();
  1715. URI uri = uriBuilder.path("/rest/userWageController/" + id).build().toUri();
  1716. HttpHeaders headers = new HttpHeaders();
  1717. headers.setLocation(uri);
  1718. return new ResponseEntity(headers, HttpStatus.CREATED);
  1719. }
  1720. @RequestMapping(value = "/{id}", method = RequestMethod.PUT, consumes = MediaType.APPLICATION_JSON_VALUE)
  1721. public ResponseEntity<?> update(@RequestBody UserNewWageEntity userWage) {
  1722. //调用JSR303 Bean Validator进行校验,如果出错返回含400错误码及json格式的错误信息.
  1723. Set<ConstraintViolation<UserNewWageEntity>> failures = validator.validate(userWage);
  1724. if (!failures.isEmpty()) {
  1725. return new ResponseEntity(BeanValidators.extractPropertyAndMessage(failures), HttpStatus.BAD_REQUEST);
  1726. }
  1727. //保存
  1728. try{
  1729. userWageService.saveOrUpdate(userWage);
  1730. } catch (Exception e) {
  1731. e.printStackTrace();
  1732. return new ResponseEntity(HttpStatus.NO_CONTENT);
  1733. }
  1734. //按Restful约定,返回204状态码, 无内容. 也可以返回200状态码.
  1735. return new ResponseEntity(HttpStatus.NO_CONTENT);
  1736. }
  1737. @RequestMapping(value = "/{id}", method = RequestMethod.DELETE)
  1738. @ResponseStatus(HttpStatus.NO_CONTENT)
  1739. public void delete(@PathVariable("id") String id) {
  1740. userWageService.deleteEntityById(UserNewWageEntity.class, id);
  1741. }
  1742. /**
  1743. * 保存新增/更新的行数据
  1744. * @param page
  1745. * @return
  1746. * @throws Exception
  1747. */
  1748. @RequestMapping(params = "saveRows")
  1749. @ResponseBody
  1750. public AjaxJson saveRows(UserNewwagePage page) throws Exception{
  1751. List<UserNewWageEntity> demos=page.getUserWageList();
  1752. AjaxJson j = userWageService.addOrEdit(demos);
  1753. return j;
  1754. }
  1755. /**
  1756. * 工资进行上报
  1757. * @param request
  1758. * @param status
  1759. * @return
  1760. */
  1761. @RequestMapping(params="updateStatus")
  1762. @ResponseBody
  1763. public AjaxJson updateStatus(HttpServletRequest request,boolean status){
  1764. String ids = request.getParameter("ids");
  1765. List<String> idList = extractIdListByComma(ids);
  1766. AjaxJson j = userWageService.updateStatus(idList, status);
  1767. return j;
  1768. }
  1769. @RequestMapping(params = "budgetlist")
  1770. public ModelAndView budgetlist(HttpServletRequest request) {
  1771. // String orgid = request.getParameter("orgid");
  1772. // String monthly = request.getParameter("monthly");
  1773. // if(oConvertUtils.isNotEmpty(monthly)){
  1774. // request.setAttribute("monthlys", monthly);
  1775. // request.setAttribute("orgid", orgid);
  1776. // }else{
  1777. // request.setAttribute("monthlys", getMonthlys());
  1778. // }
  1779. return new ModelAndView("cn/com/lzt/userwage/userWageViewBudgetList");
  1780. }
  1781. @RequestMapping(params = "datagridbudget")
  1782. public void datagridbudget(UserWageViewDto userWage,HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid) {
  1783. List<Map<String,Object>> retList = getWageAndBudgetList(userWage);
  1784. dataGrid.setResults(retList);
  1785. TagUtil.datagrid(response, dataGrid);
  1786. }
  1787. private List<Map<String,Object>> getWageAndBudgetList(UserWageViewDto userWage) {
  1788. List<Map<String,Object>> retList = new ArrayList<Map<String,Object>>();
  1789. String year = userWage.getMonthly().substring(0,4);
  1790. int monthInt = Integer.valueOf(userWage.getMonthly().substring(5));
  1791. String month = "month"+monthInt;
  1792. String qrySql = "select '"+userWage.getMonthly()+"' as yearmonth, \n" +
  1793. " wage.*,\n" +
  1794. " IFNULL(budget.projovertimebudget,0) as projovertimebudget,\n" +
  1795. " IFNULL(budget.govovertimebudget,0) as govovertimebudget,\n" +
  1796. " IFNULL(budget.ondutybudget,0) as ondutybudget\n" +
  1797. "from (\n" +
  1798. " SELECT \n" +
  1799. " sum(c.overtimepay_timeout) as projovertime, \n" +
  1800. " sum(c.duty) as onduty, \n" +
  1801. " sum(c.overtimepay_Fixed) as govovertime, \n" +
  1802. " d.id as departid,\n" +
  1803. " d.departname AS departname\n" +
  1804. " FROM\n" +
  1805. " t_bus_user_wage c\n" +
  1806. " LEFT JOIN t_s_base_user u ON c.userid = u.id\n" +
  1807. " LEFT JOIN t_s_depart d ON d.id = c.pjt_id\n" +
  1808. " WHERE u.delete_flag = '0' \n" +
  1809. " and monthly =? \n" +
  1810. " group BY\n" +
  1811. " d.id) wage\n" +
  1812. "left join (\n" +
  1813. " select \n" +
  1814. " depart_id as departid,\n" +
  1815. " dep_name as departname ,\n" +
  1816. " sum(case when budget_type = 'code1' then "+month+" else 0 end) as projovertimebudget ,\n" +
  1817. " sum(case when budget_type = 'code2' then "+month+" else 0 end ) as govovertimebudget ,\n" +
  1818. " sum(case when budget_type = 'code3' or budget_type = 'code4' then "+month+" else 0 end ) as ondutybudget \n" +
  1819. " from t_b_overtime_budget\n" +
  1820. " where years =? \n" +
  1821. " group by depart_id ) budget on budget.departid = wage.departid "
  1822. + "left join t_s_depart t on t.id = wage.departid "
  1823. + "where t.org_type in ('3','5') ";
  1824. if(StringUtils.isNotEmpty(userWage.getPjtId())) {
  1825. qrySql +=" and wage.departid = '"+userWage.getPjtId()+"' order by CONVERT(wage.departname using gbk)";
  1826. }else {
  1827. qrySql +=" order by CONVERT(wage.departname using gbk)";
  1828. }
  1829. retList = systemService.findForJdbc(qrySql, userWage.getMonthly(),year);
  1830. return retList;
  1831. }
  1832. @RequestMapping(params = "exportXlsBudget")
  1833. public void exportXlsBudget(UserWageViewDto userWage,HttpServletRequest request,HttpServletResponse response
  1834. , DataGrid dataGrid,ModelMap modelMap) {
  1835. List<Map<String,Object>> retList = getWageAndBudgetList(userWage);
  1836. String codedFileName = "加班预算执行表";
  1837. Workbook workbook = null;
  1838. List<ExcelExportEntity> entityList = new ArrayList<ExcelExportEntity>();
  1839. ExcelExportEntity head1 = new ExcelExportEntity("项目管理处", "departname", 30);
  1840. entityList.add(head1);
  1841. ExcelExportEntity head2 = new ExcelExportEntity("工资月度", "yearmonth", 15);
  1842. entityList.add(head2);
  1843. ExcelExportEntity head3 = new ExcelExportEntity("项目加班费预算", "projovertimebudget", 15);
  1844. entityList.add(head3);
  1845. ExcelExportEntity head4 = new ExcelExportEntity("项目加班费发生额", "projovertime", 15);
  1846. entityList.add(head4);
  1847. ExcelExportEntity head5 = new ExcelExportEntity("国定加班费预算", "govovertimebudget", 15);
  1848. entityList.add(head5);
  1849. ExcelExportEntity head6 = new ExcelExportEntity("国定加班费发生额", "govovertime", 15);
  1850. entityList.add(head6);
  1851. ExcelExportEntity head7 = new ExcelExportEntity("值班费预算", "ondutybudget", 15);
  1852. entityList.add(head7);
  1853. ExcelExportEntity head8 = new ExcelExportEntity("值班费发生额", "onduty", 15);
  1854. entityList.add(head8);
  1855. List<Map<String, Object>> resultData = retList;
  1856. workbook = ExcelExportUtil.exportExcel(workbook,
  1857. new ExportParams("加班预算执行表", "导出人:" + ResourceUtil.getSessionUser().getRealName(), "加班预算执行表"),
  1858. entityList, resultData);
  1859. if (workbook instanceof HSSFWorkbook) {
  1860. codedFileName +=".xls";
  1861. } else {
  1862. codedFileName +=".xlsx";
  1863. }
  1864. try {
  1865. //IE
  1866. if (request.getHeader("USER-AGENT").toLowerCase().indexOf("msie") > 0
  1867. || request.getHeader("USER-AGENT").toLowerCase().indexOf("rv:11.0") > 0){
  1868. codedFileName = java.net.URLEncoder.encode(codedFileName, "UTF8");
  1869. } else {
  1870. codedFileName = new String(codedFileName.getBytes("UTF-8"), "ISO-8859-1");
  1871. }
  1872. response.setHeader("content-disposition", "attachment;filename=" + codedFileName);
  1873. ServletOutputStream out = response.getOutputStream();
  1874. workbook.write(out);
  1875. out.flush();
  1876. } catch (UnsupportedEncodingException e) {
  1877. logger.error(e.getMessage());
  1878. } catch (IOException e) {
  1879. logger.error(e.getMessage());
  1880. }
  1881. }
  1882. }