123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407 |
- package com.iamberry.rst.controllers.approval;
- import com.fasterxml.jackson.core.JsonProcessingException;
- import com.fasterxml.jackson.databind.ObjectMapper;
- import com.iamberry.rst.core.approval.*;
- import com.iamberry.rst.core.page.PageRequest;
- import com.iamberry.rst.core.page.PagedResult;
- import com.iamberry.rst.core.sys.Admin;
- import com.iamberry.rst.faces.approval.ApprovalOrderService;
- import com.iamberry.rst.faces.approval.ApprovalTaskService;
- import com.iamberry.rst.faces.sys.SysService;
- import com.iamberry.wechat.core.entity.WechatUtils;
- import com.iamberry.wechat.tools.ResponseJson;
- import com.iamberry.wechat.tools.ResultInfo;
- import net.sf.json.JSONArray;
- import net.sf.json.JSONObject;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Controller;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.RequestParam;
- import org.springframework.web.bind.annotation.ResponseBody;
- import org.springframework.web.context.ContextLoader;
- import org.springframework.web.context.WebApplicationContext;
- import org.springframework.web.multipart.commons.CommonsMultipartFile;
- import javax.servlet.ServletContext;
- import javax.servlet.http.HttpServletRequest;
- import java.io.*;
- import java.text.ParseException;
- import java.text.SimpleDateFormat;
- import java.util.*;
- /**
- * Created by Administrator on 2018/10/9.
- */
- @Controller
- @RequestMapping("/approval")
- public class ApprovalController {
- @Autowired
- private ApprovalOrderService approvalOrderService;
- @Autowired
- private ApprovalTaskService approvalTaskService;
- @Autowired
- private SysService sysService;
- /**
- * 新增审批信息
- * @param request
- * @param approvalProduction
- * @param productionItems
- * @return
- */
- @ResponseBody
- @RequestMapping(value = "/addApproval")
- public ResponseJson addApproval(HttpServletRequest request, ApprovalProduction approvalProduction, String productionItems,String productionContracts) throws ParseException {
- ResponseJson rj =new ResponseJson(200, "添加成功", 200);
- if (approvalProduction == null || productionItems == null) {
- return ResponseJson.getFAILURE();
- }
- //获取openid,根据openid查询当前登录人信息
- /*String openId = WechatUtils.getUserBySession(request).getUserOpenid();*/
- String openId = "oaH_GwObiozJFBypUg0wKJjQpBiU";
- //获取审批任务id
- Map<String, Object> taskinfo = approvalTaskService.salesmanSubmitApply(1);
- String deliveryDate = request.getParameter("deliveryDate");
- if(deliveryDate == null ){
- return ResponseJson.getFAILURE();
- }
- SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
- approvalProduction.setProductionDeliveryDate(format.parse(deliveryDate));
- //封装生产审批产品项
- List<ApprovalProductionItem> listApprovalProductionItem = new ArrayList<ApprovalProductionItem>();
- JSONArray jsonProductionItems = JSONArray.fromObject(productionItems);
- for (int i = 0; i < jsonProductionItems.size(); i++) {
- JSONObject orderItem = jsonProductionItems.getJSONObject(i);
- //添加产品项内容
- ApprovalProductionItem approvalProductionItem = new ApprovalProductionItem();
- approvalProductionItem.setItemBrandName(orderItem.getString("itemBrandName"));
- approvalProductionItem.setItemProductName(orderItem.getString("itemProductName"));
- approvalProductionItem.setItemColorName(orderItem.getString("itemColorName"));
- approvalProductionItem.setItemProductNum(orderItem.getInt("itemProductNum"));
- approvalProductionItem.setItemProductModel(orderItem.getString("itemProductModel"));
- approvalProductionItem.setItemProductUnit(orderItem.getString("itemProductUnit"));
- approvalProductionItem.setItemProductBoxNumber(orderItem.getInt("itemProductBoxNumber"));
- listApprovalProductionItem.add(approvalProductionItem);
- }
- //封装生产审批合同
- List<ApprovalProductionContract> listProductionContract = new ArrayList<ApprovalProductionContract>();
- JSONArray jsonproductionContracts = JSONArray.fromObject(productionContracts);
- for (int i = 0; i < jsonProductionItems.size(); i++) {
- JSONObject contract = jsonproductionContracts.getJSONObject(i);
- ApprovalProductionContract contractInfo = new ApprovalProductionContract();
- contractInfo.setContractUrl(contract.getString("contractUrl"));
- contractInfo.setContractName(contract.getString("contractName"));
- listProductionContract.add(contractInfo);
- }
- boolean returnValue = approvalOrderService.insertApprovalProduction(approvalProduction,listApprovalProductionItem,listProductionContract,taskinfo,openId);
- if(!returnValue){
- return ResponseJson.getFAILURE();
- }
- return rj;
- }
- /**
- * 上传合同图片
- * 通过流的方式上传文件
- * @RequestParam("file") 将name=file控件得到的文件封装成CommonsMultipartFile 对象
- */
- @ResponseBody
- @RequestMapping("/fileUpload")
- public ResponseJson fileUpload(HttpServletRequest request,@RequestParam("file") CommonsMultipartFile file) throws IOException {
- ResponseJson responseJson = new ResponseJson();
- System.out.println("fileName:"+file.getOriginalFilename());
- //获取项目根目录
- WebApplicationContext webApplicationContext = ContextLoader.getCurrentWebApplicationContext();
- ServletContext servletContext = webApplicationContext.getServletContext();
- String realPath = servletContext.getRealPath(ResultInfo.CONTRACT_IMAGE);
- String imgUrl = new Date().getTime()+file.getOriginalFilename();
- try {
- //获取输出流
- OutputStream os=new FileOutputStream(realPath+imgUrl);
- //获取输入流 CommonsMultipartFile 中可以直接得到文件的流
- InputStream is=file.getInputStream();
- byte[] bts = new byte[1024];
- //一个一个字节的读取并写入
- while(is.read(bts)!=-1)
- {
- os.write(bts);
- }
- os.flush();
- os.close();
- is.close();
- } catch (FileNotFoundException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- responseJson.setReturnCode(200);
- responseJson.addResponseKeyValue("imgUrl",ResultInfo.CONTRACT_IMAGE+imgUrl);
- return responseJson;
- }
- /**
- * 查询我发起的/我审核的列表
- * @param approvalInfo
- * @param pageSize
- * @param pageNO
- * @param totalNum
- * @param selectType 1.我发起的 2.我审核的 3.仓库确认
- * @return
- * @throws Exception
- */
- @ResponseBody
- @RequestMapping(value = "/approvalInfoList")
- public ResponseJson listApprovalInfo(HttpServletRequest request,
- ApprovalInfo approvalInfo,Integer selectType,
- @RequestParam(value = "pageSize", defaultValue = "10", required = false) Integer pageSize,
- @RequestParam(value = "pageNO", defaultValue = "1", required = false) Integer pageNO,
- @RequestParam(value = "totalNum", defaultValue = "0", required = false) Integer totalNum) throws Exception {
- ResponseJson rj =new ResponseJson(200, "查询成功", 200);
- //获取openid,根据openid查询当前登录人信息
- /*String openId = WechatUtils.getUserBySession(request).getUserOpenid();*/
- String openId = "oaH_GwObiozJFBypUg0wKJjQpBiU";
- Admin admin = sysService.getByOpenid(openId);
- if(admin == null){
- return new ResponseJson(200, "未查询到登录人信息", 500);
- }
- if(selectType == null){
- return new ResponseJson(200, "参数不完整,缺少查询类型字段", 500);
- }
- if(selectType == 1){//我发起的
- approvalInfo.setAdminId(admin.getAdminId());
- }else if(selectType == 2){//我审核的
- approvalInfo.setApprovalAdminId(admin.getAdminId());
- }
- PagedResult<ApprovalInfo> pagedResult = approvalOrderService.listApprovalInfo(pageNO, pageSize,approvalInfo,totalNum == null);
- if (totalNum != 0) {
- pagedResult.setTotal(totalNum);
- }
- List<ApprovalInfo> approvalList = pagedResult.getDataList();
- rj.addResponseKeyValue("approvalList",approvalList);
- return rj;
- }
- /**
- * 修改审批状态 (1 通过 2驳回 3撤销 4评论)
- * @param
- * @return
- * @throws Exception
- */
- @ResponseBody
- @RequestMapping(value = "/updateApprovalInfo")
- public ResponseJson updateApprovalInfo(HttpServletRequest request,
- ApprovalInfo approvalInfo,Integer status) throws Exception {
- ResponseJson rj =new ResponseJson(200, "操作成功", 200);
- if(status == null){
- return ResponseJson.getFAILURE();
- }
- if(approvalInfo == null){
- return ResponseJson.getFAILURE();
- }
- //获取openid,根据openid查询当前登录人信息
- String openId = WechatUtils.getUserBySession(request).getUserOpenid();
- Admin admin = sysService.getByOpenid(openId);
- if(admin == null){
- return new ResponseJson(200, "未查询到登录人信息", 500);
- }
- //审批历史记录封装
- HistoricalRecord historicalRecord = new HistoricalRecord();
- historicalRecord.setApprovalId(approvalInfo.getApprovalId());
- historicalRecord.setAdminId(admin.getAdminId());
- historicalRecord.setApprovalTime(new Date());
- //流程信息封装
- ProcessInfo processInfo = new ProcessInfo();
- processInfo.setAdminId(admin.getAdminId());
- processInfo.setApprovalId(approvalInfo.getApprovalId());
- processInfo.setProcessDesc(approvalInfo.getApprovalDetails());
- //审批信息封装
- ApprovalInfo info = new ApprovalInfo();
- info.setApprovalId(approvalInfo.getApprovalId());
- switch (status){
- case 1:
- //修改审核历史记录状态为已通过
- historicalRecord.setRecordState(2);
- if(approvalOrderService.updateHistoricalRecord(historicalRecord) < 1){
- return ResponseJson.getFAILURE();
- }
- //查询当前审核人当前审核任务信息
- HistoricalRecord record = approvalOrderService.getHistoricalRecord(historicalRecord);
- if(record == null){
- return ResponseJson.getFAILURE();
- }
- //获取下一个审核人,并添加审核历史信息
- Map<String, Object> taskMap = approvalTaskService.completeTask(approvalInfo.getActivitiId(),record.getTaskId());
- if(taskMap == null){
- return ResponseJson.getFAILURE();
- }
- if((Integer) taskMap.get("status") == 1){//没有下一个审批人,修改审批任务状态为已审批通过
- info.setApprovalStatus(2);
- if(approvalOrderService.updateApprovalInfo(info) < 1){
- return ResponseJson.getFAILURE();
- }
- }else if((Integer) taskMap.get("status") == 0){//还有下一个审批人,需要增加审批历史任务
- if(taskMap.get("users") == null){
- return ResponseJson.getFAILURE();
- }
- String[] split = (String[])taskMap.get("users");
- for (String name : split){
- //通过name查询管理员id
- Admin approvalAdmin = sysService.getByName(name);
- if(approvalAdmin == null){
- return ResponseJson.getFAILURE();
- }
- HistoricalRecord recordInfo = new HistoricalRecord();
- recordInfo.setApprovalId(approvalInfo.getApprovalId());
- recordInfo.setAdminId(approvalAdmin.getAdminId());
- recordInfo.setRecordState(1);
- recordInfo.setTaskId(taskMap.get("taskId").toString());
- if(approvalOrderService.insertHistoricalRecord(recordInfo) < 1){
- return ResponseJson.getFAILURE();
- }
- //修改审核信息表
- info.setApprovalStatusDetails("待"+name+"审批");
- if(approvalOrderService.updateApprovalInfo(info) < 1){
- return ResponseJson.getFAILURE();
- }
- }
- }
- //添加流程信息记录
- processInfo.setProcessState(2);
- if(approvalOrderService.insertProcessInfo(processInfo) < 1){
- return ResponseJson.getFAILURE();
- }
- break;
- case 2:
- //修改历史记录状态为已驳回
- historicalRecord.setRecordState(3);
- if(approvalOrderService.updateHistoricalRecord(historicalRecord) < 1){
- return ResponseJson.getFAILURE();
- }
- info.setApprovalStatus(3);
- if(approvalOrderService.updateApprovalInfo(info) < 1){
- return ResponseJson.getFAILURE();
- }
- //添加流程信息记录
- processInfo.setProcessState(3);
- if(approvalOrderService.insertProcessInfo(processInfo) < 1){
- return ResponseJson.getFAILURE();
- }
- //调用第三方revokeTask接口执行撤销
- approvalTaskService.revokeTask(approvalInfo.getActivitiId(),"审批人驳回审核");
- break;
- case 3:
- //修改审批信息状态为撤销
- info.setApprovalStatus(9);
- if(approvalOrderService.updateApprovalInfo(info) < 1){
- return ResponseJson.getFAILURE();
- }
- //删除该审批的历史记录
- approvalOrderService.deleteHistoricalRecord(approvalInfo.getApprovalId());
- //添加流程信息记录
- processInfo.setProcessState(4);
- if(approvalOrderService.insertProcessInfo(processInfo) < 1){
- return ResponseJson.getFAILURE();
- }
- //调用第三方revokeTask接口执行撤销
- approvalTaskService.revokeTask(approvalInfo.getActivitiId(),"业务员撤销审核");
- break;
- case 4:
- //添加评论内容到流程信息表,不用修改任何状态
- processInfo.setProcessState(0);
- if(approvalOrderService.insertProcessInfo(processInfo) < 1){
- return ResponseJson.getFAILURE();
- }
- break;
- }
- return rj;
- }
- /**
- * 查询审批订单详情
- * @param approvalInfo
- * @return
- * @throws Exception
- */
- @ResponseBody
- @RequestMapping(value = "/getApprovalInfo")
- public ResponseJson getApprovalInfo(HttpServletRequest request,
- ApprovalInfo approvalInfo) throws Exception {
- ResponseJson rj =new ResponseJson(200, "查询成功", 200);
- if(approvalInfo == null){
- return ResponseJson.getFAILURE();
- }
- List<ApprovalInfo> info = approvalOrderService.getApprovalInfo(approvalInfo);
- rj.addResponseKeyValue("approvalInfo",info);
- return rj;
- }
- /**
- * 添加入库信息
- * @param request
- * @param inventoryRecordss
- * @return
- */
- @ResponseBody
- @RequestMapping(value = "/addInventoryRecords")
- public ResponseJson addInventoryRecords(HttpServletRequest request, String inventoryRecordss){
- ResponseJson rj =new ResponseJson(200, "添加成功", 200);
- if (inventoryRecordss == null || inventoryRecordss.equals("")) {
- return ResponseJson.getFAILURE();
- }
- //获取openid,根据openid查询当前登录人信息
- String openId = WechatUtils.getUserBySession(request).getUserOpenid();
- Admin admin = sysService.getByOpenid(openId);
- if(admin == null){
- return new ResponseJson(200, "未查询到登录人信息", 500);
- }
- JSONArray jsonRecordss = JSONArray.fromObject(inventoryRecordss);
- for (int i = 0; i < jsonRecordss.size(); i++) {
- JSONObject jsonRecords = jsonRecordss.getJSONObject(i);
- //封装入库信息
- ApprovalInventoryRecords records = new ApprovalInventoryRecords();
- if(jsonRecords.get("shouldStorage") == null || jsonRecords.get("actualStorage") == null){
- if(jsonRecords.getInt("shouldStorage") < jsonRecords.getInt("actualStorage")){
- return new ResponseJson(200, "实际入库数量不得大于应入库数量", 500);
- }
- }
- records.setStorageState(jsonRecords.getInt("shouldStorage") > jsonRecords.getInt("actualStorage") ? 1 : 2);
- records.setApprovalId(jsonRecords.getInt("approvalId"));
- records.setProductName(jsonRecords.getString("productName"));
- records.setColorName(jsonRecords.getString("colorName"));
- records.setActualStorage(jsonRecords.getInt("actualStorage"));
- records.setShouldStorage(jsonRecords.getInt("shouldStorage"));
- records.setLackNumber(jsonRecords.getInt("lackNumber"));
- records.setOperatingAdminId(admin.getAdminId());
- if(approvalOrderService.insertInventoryRecords(records) < 1){
- return new ResponseJson(200, "添加入库记录失败", 500);
- }
- //修改订单项信息
- if(jsonRecords.get("itemId") == null || jsonRecords.get("itemId").equals("")){
- return new ResponseJson(200, "产品项id不能为空", 500);
- }
- ApprovalProductionItem productionItem = approvalOrderService.getProductionItem(jsonRecords.getInt("itemId"));
- if(productionItem.getItemActualStorage() < productionItem.getItemShouldStorage() + jsonRecords.getInt("shouldStorage")){
- return new ResponseJson(200, "产品项id不能为空", 500);
- }
- productionItem.setItemShouldStorage(productionItem.getItemShouldStorage() + jsonRecords.getInt("shouldStorage"));
- productionItem.setItemLackNumber(productionItem.getItemActualStorage() - (productionItem.getItemShouldStorage() + jsonRecords.getInt("shouldStorage")));
- if(approvalOrderService.updateProductionItem(productionItem) < 1){
- return new ResponseJson(200, "修改审批产品项失败", 500);
- }
- }
- return rj;
- }
- }
|