| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473 |
- package com.chinaitop.depot.business.controller;
- import com.chinaitop.depot.business.model.BusinessDeliveryStorageNotice;
- import com.chinaitop.depot.business.model.BusinessStoreWareDetail;
- import com.chinaitop.depot.business.model.enums.AuditType;
- import com.chinaitop.depot.business.model.enums.StoreWareType;
- import com.chinaitop.depot.business.model.vo.BusinessDeliveryStorageNoticeAuditVO;
- import com.chinaitop.depot.business.service.BusinessDeliveryStorageNoticeService;
- import com.chinaitop.depot.business.service.BusinessStoreWareDetailService;
- import com.fasterxml.jackson.core.JsonParseException;
- import com.fasterxml.jackson.core.type.TypeReference;
- import com.fasterxml.jackson.databind.JsonMappingException;
- import com.fasterxml.jackson.databind.ObjectMapper;
- import com.github.pagehelper.PageInfo;
- import io.swagger.annotations.Api;
- import io.swagger.annotations.ApiImplicitParam;
- import io.swagger.annotations.ApiImplicitParams;
- import io.swagger.annotations.ApiOperation;
- import org.apache.commons.lang3.StringUtils;
- import org.springframework.http.MediaType;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.RequestMethod;
- import org.springframework.web.bind.annotation.RestController;
- import javax.annotation.Resource;
- import javax.servlet.http.HttpServletRequest;
- import java.io.IOException;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- /**
- * 粮库业务管理-出入库通知单管理
- * <p>Title: BusinessDeliveryStorageNoticeController</p>
- * <p>Description: </p>
- * @author yaoyabin
- * @date 2017年10月25日 下午5:36:15
- */
- @RestController
- @RequestMapping(value="/depot/business/deliveryStorageNotice")
- @Api(value= "BusinessDeliveryStorageNoticeController", description = "出入库通知单管理")
- public class BusinessDeliveryStorageNoticeController {
-
- @Resource
- private BusinessDeliveryStorageNoticeService deliveryStorageNoticeService;
- @Resource
- private BusinessStoreWareDetailService businessStoreWareDetailService;
- /* @Resource
- private BasicCodeRuleService basicCodeRuleService;*/
-
- /**
- * 申请列表.
- * @param pageNum 页码
- * @param pageSize 每页显示条数
- * @return
- */
- @RequestMapping(value="/getList", produces = MediaType.APPLICATION_JSON_VALUE, method=RequestMethod.GET)
- @ApiOperation(value="申请列表", notes = "查询数据列表,支持分页")
- @ApiImplicitParams({
- @ApiImplicitParam(name = "pageNum", value = "页码", paramType = "query"),
- @ApiImplicitParam(name = "pageSize", value = "每页条数", paramType = "query"),
- @ApiImplicitParam(name = "userId", value = "当前登录人id", paramType = "query")
- })
- public PageInfo<BusinessDeliveryStorageNotice> getList(Integer pageNum, Integer pageSize,
- HttpServletRequest request, BusinessDeliveryStorageNotice notice,Integer userId) {
- /*UserInfo userInfo= (UserInfo) request.getSession().getAttribute("userInfo");
- Integer userId = userInfo.getUserId();*/
- List<BusinessDeliveryStorageNotice> list = deliveryStorageNoticeService.queryByExample(pageNum, pageSize, userId, notice, "FIELD(audit_state,0,3,1,2,4 ), id desc");
- PageInfo<BusinessDeliveryStorageNotice> pageInfo = new PageInfo<BusinessDeliveryStorageNotice>(list);
- return pageInfo;
- }
-
- //中转
- /**
- * 申请列表.
- * @param pageNum 页码
- * @param pageSize 每页显示条数
- * @return
- */
- @RequestMapping(value="/getListTransfer", produces = MediaType.APPLICATION_JSON_VALUE, method=RequestMethod.GET)
- @ApiOperation(value="申请列表(中转)", notes = "查询数据列表,支持分页")
- @ApiImplicitParams({
- @ApiImplicitParam(name = "pageNum", value = "页码", paramType = "query"),
- @ApiImplicitParam(name = "pageSize", value = "每页条数", paramType = "query"),
- @ApiImplicitParam(name = "userId", value = "当前登录人id", paramType = "query")
- })
- public PageInfo<BusinessDeliveryStorageNotice> getListTransfer(Integer pageNum, Integer pageSize,
- HttpServletRequest request, BusinessDeliveryStorageNotice notice,Integer userId) {
- /*UserInfo userInfo= (UserInfo) request.getSession().getAttribute("userInfo");
- Integer userId = userInfo.getUserId();*/
- List<BusinessDeliveryStorageNotice> list = deliveryStorageNoticeService.queryByExampleTransfer(pageNum, pageSize, userId, notice, "FIELD(audit_state,0,3,1,2,4 ), id desc");
- PageInfo<BusinessDeliveryStorageNotice> pageInfo = new PageInfo<BusinessDeliveryStorageNotice>(list);
- return pageInfo;
- }
- /**
- * 审批通过列表.
- * @param pageNum 页码
- * @param pageSize 每页显示条数
- * @return
- */
- @RequestMapping(value="/getAuditPassList", produces = MediaType.APPLICATION_JSON_VALUE, method=RequestMethod.GET)
- @ApiOperation(value="通知单审批通过列表", notes = "查询数据列表,支持分页")
- @ApiImplicitParams({
- @ApiImplicitParam(name = "pageNum", value = "页码", paramType = "query"),
- @ApiImplicitParam(name = "pageSize", value = "每页条数", paramType = "query")
- })
- public PageInfo<BusinessDeliveryStorageNotice> getAuditPassList(Integer pageNum, Integer pageSize, BusinessDeliveryStorageNotice notice) {
- notice.setAuditState(AuditType.AGREE.getAuditCode());
- List<BusinessDeliveryStorageNotice> list = deliveryStorageNoticeService.queryByExample(pageNum, pageSize, null, notice, "agree_time desc");
- PageInfo<BusinessDeliveryStorageNotice> pageInfo = new PageInfo<BusinessDeliveryStorageNotice>(list);
- return pageInfo;
- }
-
- /**
- * 获取进度列表.
- * @param pageNum
- * @param pageSize
- * @param deliveryStorageNotice
- * @return
- */
- @RequestMapping(value="/getScheduleList",produces = MediaType.APPLICATION_JSON_VALUE, method=RequestMethod.GET)
- @ApiOperation(value="获取通知单进度列表", notes = "查询数据列表,支持分页")
- @ApiImplicitParams({
- @ApiImplicitParam(name = "pageNum", value = "页码", paramType = "query"),
- @ApiImplicitParam(name = "pageSize", value = "每页条数", paramType = "query")
- })
- public PageInfo<BusinessDeliveryStorageNoticeAuditVO> getScheduleList(Integer pageNum, Integer pageSize, BusinessDeliveryStorageNotice deliveryStorageNotice) {
- PageInfo<BusinessDeliveryStorageNoticeAuditVO> pageInfo = deliveryStorageNoticeService.getScheduleList(pageNum, pageSize, deliveryStorageNotice);
- return pageInfo;
- }
- /**
- * 根据id查询.
- * @param id 主键
- * @return
- */
- @RequestMapping(value="/edit", produces = MediaType.APPLICATION_JSON_VALUE, method=RequestMethod.GET)
- @ApiOperation(value="根据id查找", notes = "根据id查找")
- @ApiImplicitParams({
- @ApiImplicitParam(name = "id", value = "通知单id", paramType = "query")
- })
- public Map<String, Object> edit(Integer id) {
- Map<String, Object> modelMap = new HashMap<String, Object>();
- if (id != null) {
- BusinessDeliveryStorageNotice deliveryStorageNotice = deliveryStorageNoticeService.findById(id);
- modelMap.put("deliveryStorageNotice", deliveryStorageNotice);
-
- List<BusinessStoreWareDetail> list = new ArrayList<BusinessStoreWareDetail>();
- Integer plan_id = deliveryStorageNotice.getPlanBid(); //计划ID
- Integer contract_id = deliveryStorageNotice.getContractBid(); //合同ID
- Map<String, Object> param_map = new HashMap<String, Object>();
- List<Map<String, Object>> map = null;
- if (null != contract_id) {
- list = businessStoreWareDetailService.getByZidAndType(contract_id, "contract");
- param_map.put("contract_id", contract_id);
- map = businessStoreWareDetailService.selectContractUseCount(param_map);
- } else if (null != plan_id) {
- list = businessStoreWareDetailService.getByZidAndType(plan_id, "plan");
- param_map.put("plan_id", plan_id);
- map = businessStoreWareDetailService.selectPlanUseCount(param_map);
- }
-
- BusinessStoreWareDetail obj = null;
- double sysl = 0d;
- double sum_use_num = 0d; //已使用总量
- double plan_sum_num = 0d; //原计划数量
- for (int i = 0; i < list.size(); i++) {
- obj = list.get(i);
- for (Map<String, Object> m : map) {
- if (obj.getHouseId().equals(m.get("house_id")) && obj.getWarehouseId().equals(m.get("warehouse_id"))) {
- if ("1".equals(deliveryStorageNotice.getBillType())) {
- plan_sum_num = Double.parseDouble(obj.getInCount());
- sum_use_num = Double.parseDouble(m.get("in_count")+"");
- if (sum_use_num <= plan_sum_num) {
- sysl = plan_sum_num - sum_use_num;
- obj.setRemainingNumber(sysl+""); //页面上明细列表的剩余数量
- } else if (sum_use_num > plan_sum_num){
- sysl = sum_use_num - plan_sum_num;
- obj.setRemainingNumber("超出:"+sysl);
- }
- }
- if ("3".equals(deliveryStorageNotice.getBillType())) {
- plan_sum_num = Double.parseDouble(obj.getOutCount());
- sum_use_num = Double.parseDouble(m.get("out_count")+"");
- if (sum_use_num <= plan_sum_num) {
- sysl = plan_sum_num - sum_use_num;
- obj.setOutRemainingNumber(sysl+""); //页面上明细列表的剩余数量
- } else if (sum_use_num > plan_sum_num){
- sysl = sum_use_num - plan_sum_num;
- obj.setOutRemainingNumber("超出:"+sysl);
- }
- }
- }
- }
- }
-
- //明细
- List<BusinessStoreWareDetail> transferNoticeList= businessStoreWareDetailService.getByZidAndType(id, StoreWareType.transferNotice.getValue());
- /*for (int i = 0; i < list.size(); i++) {
- obj = list.get(i);
- for (BusinessStoreWareDetail m : transferNoticeList) {
- if (obj.getHouseId().equals(m.getHouseId()) && obj.getWarehouseId().equals(m.getWarehouseId())) {
- if ("1".equals(deliveryStorageNotice.getBillType())) {
- m.setRemainingNumber(obj.getRemainingNumber());
- }
- if ("3".equals(deliveryStorageNotice.getBillType())) {
- m.setOutRemainingNumber(obj.getOutRemainingNumber());
- }
- }
- }
- }*/
- List<BusinessStoreWareDetail> noticelList= businessStoreWareDetailService.getByZidAndType(id, StoreWareType.notice.getValue());
- for (int i = 0; i < list.size(); i++) {
- obj = list.get(i);
- for (BusinessStoreWareDetail m : noticelList) {
- if (obj.getHouseId().equals(m.getHouseId()) && obj.getWarehouseId().equals(m.getWarehouseId())) {
- if ("1".equals(deliveryStorageNotice.getBillType())) {
- m.setRemainingNumber(obj.getRemainingNumber());
- }
- if ("3".equals(deliveryStorageNotice.getBillType())) {
- m.setOutRemainingNumber(obj.getOutRemainingNumber());
- }
- }
- }
- }
- if(transferNoticeList.size()>0 && transferNoticeList!=null){
- modelMap.put("storeWareDetailList", transferNoticeList);
- }
- if(noticelList.size()>0 && noticelList!=null){
- modelMap.put("storeWareDetailList", noticelList);
- }
-
- }
- return modelMap;
- }
- /**
- * 保存
- * @param deliveryStorageNoticeJson 主表信息
- * @param businessStoreWareDetailJson 明细
- * @return
- * @throws JsonParseException
- * @throws JsonMappingException
- * @throws IOException
- */
- @RequestMapping(value="/save", produces = MediaType.APPLICATION_JSON_VALUE, method=RequestMethod.POST)
- @ApiOperation(value="保存数据", notes = "保存")
- @SuppressWarnings("unchecked")
- @ApiImplicitParams({
- @ApiImplicitParam(name = "deliveryStorageNoticeJson", value = "主表数据", paramType = "query"),
- @ApiImplicitParam(name = "businessStoreWareDetailJson", value = "子表数据", paramType = "query"),
- @ApiImplicitParam(name = "userId", value = "当前登录人id", paramType = "query"),
- @ApiImplicitParam(name = "name", value = "当前登录人name", paramType = "query"),
- @ApiImplicitParam(name = "orgId", value = "当前登录人所在组织", paramType = "query"),
- @ApiImplicitParam(name = "depotInfoOrgId", value = "当前登录人所在组织id", paramType = "query")
- })
- public Map<String, Object> save(String deliveryStorageNoticeJson, String businessStoreWareDetailJson,
- Integer userId, String name ,Integer orgId,Integer depotInfoOrgId,HttpServletRequest request)
- throws JsonParseException, JsonMappingException, IOException {
- Map<String, Object> modelMap = new HashMap<String, Object>();
- /*UserInfo userInfo= (UserInfo) request.getSession().getAttribute("userInfo");
- OrgInfo depotInfo = (OrgInfo)request.getSession().getAttribute("depotInfo");*/
- try {
- // JSON字符串转对象
- ObjectMapper mapper = new ObjectMapper();
- BusinessDeliveryStorageNotice businessDeliveryStorageNotice = (BusinessDeliveryStorageNotice)mapper.readValue(deliveryStorageNoticeJson, BusinessDeliveryStorageNotice.class);
-
- List<BusinessStoreWareDetail> storeWareDetailList = null;
- if (businessStoreWareDetailJson != null) {
- storeWareDetailList = (List<BusinessStoreWareDetail>)mapper.readValue(businessStoreWareDetailJson, new TypeReference<List<BusinessStoreWareDetail>>(){});
-
- //通知单的明细 库点名称都是一样的,所以取第一个
- if(storeWareDetailList.get(0).getState() != storeWareDetailList.get(0).getOrgId()){ //代储库的
- businessDeliveryStorageNotice.setHouseId(storeWareDetailList.get(0).getState());
- }else{
- businessDeliveryStorageNotice.setHouseId(storeWareDetailList.get(0).getOrgId());
- }
-
- }
-
- if (businessDeliveryStorageNotice.getId() == null) {
- Map<String, Object> returnMap = deliveryStorageNoticeService.add(businessDeliveryStorageNotice, storeWareDetailList, userId, name , orgId, depotInfoOrgId);
- if (returnMap != null && returnMap.get("error") != null) {
- modelMap.put("status", "error");
- modelMap.put("msg", returnMap.get("error"));
- return modelMap;
- }
- modelMap.put("id", returnMap.get("id"));
- } else {
- deliveryStorageNoticeService.update(businessDeliveryStorageNotice, storeWareDetailList);
- }
- modelMap.put("status", "success");
- } catch (Exception e) {
- e.printStackTrace();
- modelMap.put("status", "error");
- modelMap.put("msg", "保存失败!");
- return modelMap;
- }
- return modelMap;
- }
-
- /**
- * 删除(同时删除流程)
- * @param id 主键
- * @param processInstanceId 流程实例id
- * @param deleteReason 删除原因
- * @return
- * @throws JsonParseException
- * @throws JsonMappingException
- * @throws IOException
- */
- @RequestMapping(value="/remove", produces = MediaType.APPLICATION_JSON_VALUE, method=RequestMethod.POST)
- @ApiOperation(value="通知单删除(同时删除流程)", notes = "删除.")
- @ApiImplicitParams({
- @ApiImplicitParam(name = "id", value = "主键id", paramType = "query"),
- @ApiImplicitParam(name = "processInstanceId", value = "流程实例id", paramType = "query"),
- @ApiImplicitParam(name = "deleteReason", value = "删除原因", paramType = "query"),
- @ApiImplicitParam(name = "planBid", value = "计划id", paramType = "query"),
- @ApiImplicitParam(name = "contractBid", value = "合同id", paramType = "query")
- })
- public Map<String, Object> remove(Integer id, String processInstanceId, String deleteReason,Integer planBid,Integer contractBid)
- throws JsonParseException, JsonMappingException, IOException {
- Map<String, Object> modelMap = new HashMap<String, Object>();
- if (id != null) {
- deliveryStorageNoticeService.remove(id, processInstanceId, deleteReason,planBid,contractBid);
- }
- modelMap.put("status", "success");
- return modelMap;
- }
-
- /**
- * 提交
- * @param businessDeliveryStorageNotice 业务主体
- * @param assignee 下一个审批人
- * @return
- */
- @RequestMapping(value="/submit", produces = MediaType.APPLICATION_JSON_VALUE, method=RequestMethod.POST)
- @ApiOperation(value="提交", notes = "提交")
- @ApiImplicitParams({
- @ApiImplicitParam(name = "businessDeliveryStorageNotice", value = "业务主体", paramType = "query"),
- @ApiImplicitParam(name = "assignee", value = "下一个审批人", paramType = "query"),
- @ApiImplicitParam(name = "userId", value = "当前登录人id", paramType = "query"),
- @ApiImplicitParam(name = "realName", value = "当前登录人name", paramType = "query")
- })
- public Map<String, Object> startProcess(BusinessDeliveryStorageNotice businessDeliveryStorageNotice, String assignee,Integer userId,String realName,HttpServletRequest request) {
- //UserInfo userInfo= (UserInfo) request.getSession().getAttribute("userInfo");
- Map<String, Object> returnMap = deliveryStorageNoticeService.submit(businessDeliveryStorageNotice, assignee, userId, realName);
- return returnMap;
- }
-
- /**
- * 启用
- * @param id 主键.
- * @return
- */
- @RequestMapping(value="/application", produces = MediaType.APPLICATION_JSON_VALUE, method=RequestMethod.POST)
- @ApiOperation(value="通知单启用", notes = "启用.")
- @ApiImplicitParams({
- @ApiImplicitParam(name = "id", value = "主键id", paramType = "query")
- })
- public Map<String, Object> application(Integer id) {
- Map<String, Object> modelMap = new HashMap<String, Object>();
- Map<String, String> returnMap = deliveryStorageNoticeService.application(id);
- if (StringUtils.isNoneBlank(returnMap.get("error"))) {
- modelMap.put("status", "error");
- modelMap.put("msg", returnMap.get("error"));
- } else {
- modelMap.put("status", "success");
- }
- return modelMap;
- }
-
- /**
- * 暂停
- * @param id 主键.
- * @return
- */
- @RequestMapping(value="/discontinue",produces = MediaType.APPLICATION_JSON_VALUE, method=RequestMethod.POST)
- @ApiOperation(value="通知单暂停", notes = "暂停.")
- @ApiImplicitParams({
- @ApiImplicitParam(name = "id", value = "主键id", paramType = "query")
- })
- public Map<String, Object> discontinue(Integer id ,String refuseReason) {
- Map<String, Object> modelMap = new HashMap<String, Object>();
- deliveryStorageNoticeService.discontinue(id,refuseReason);
- modelMap.put("status", "success");
- return modelMap;
- }
-
- /**
- * 终止.
- * @param id 主键.
- * @return
- */
- @RequestMapping(value="/finish",produces = MediaType.APPLICATION_JSON_VALUE, method=RequestMethod.POST)
- @ApiOperation(value="通知单终止", notes = "终止.")
- @ApiImplicitParams({
- @ApiImplicitParam(name = "id", value = "主键id", paramType = "query")
- })
- public Map<String, Object> finish(Integer id,String refuseReason) {
- Map<String, Object> modelMap = new HashMap<String, Object>();
- deliveryStorageNoticeService.finish(id,refuseReason);
- modelMap.put("status", "success");
- return modelMap;
- }
-
-
- /**
- * 中转保存
- * @param deliveryStorageNoticeJson 主表信息
- * @param businessStoreWareDetailJson 明细
- * @return
- * @throws JsonParseException
- * @throws JsonMappingException
- * @throws IOException
- */
- @RequestMapping(value="/addTransfer",produces = MediaType.APPLICATION_JSON_VALUE, method=RequestMethod.POST)
- @ApiOperation(value="中转保存", notes = "保存")
- @SuppressWarnings("unchecked")
- @ApiImplicitParams({
- @ApiImplicitParam(name = "deliveryStorageNoticeJson", value = "主表数据", paramType = "query"),
- @ApiImplicitParam(name = "businessStoreWareDetailJson", value = "子表数据", paramType = "query"),
- @ApiImplicitParam(name = "userId", value = "当前登录人id", paramType = "query"),
- @ApiImplicitParam(name = "name", value = "当前登录人name", paramType = "query"),
- @ApiImplicitParam(name = "orgId", value = "当前登录人所在组织", paramType = "query")
-
- })
- public Map<String, Object> addTransfer(String deliveryStorageNoticeJson, String businessStoreWareDetailJson, Integer userId, String name ,Integer orgId,HttpServletRequest request)
- throws JsonParseException, JsonMappingException, IOException {
- Map<String, Object> modelMap = new HashMap<String, Object>();
- /* UserInfo userInfo= (UserInfo) request.getSession().getAttribute("userInfo");
- OrgInfo depotInfo = (OrgInfo)request.getSession().getAttribute("depotInfo");*/
- try {
- // JSON字符串转对象
- ObjectMapper mapper = new ObjectMapper();
- BusinessDeliveryStorageNotice businessDeliveryStorageNotice = (BusinessDeliveryStorageNotice)mapper.readValue(deliveryStorageNoticeJson, BusinessDeliveryStorageNotice.class);
- businessDeliveryStorageNotice.setHouseId(orgId);
- //List<BusinessStoreWareDetail> storeWareDetailList = null;
- /*if (businessStoreWareDetailJson != null) {
- storeWareDetailList = (List<BusinessStoreWareDetail>)mapper.readValue(businessStoreWareDetailJson, new TypeReference<List<BusinessStoreWareDetail>>(){});
- }*/
- List<BusinessStoreWareDetail> storeWareDetailList = null;
- if (businessStoreWareDetailJson != null) {
- storeWareDetailList = (List<BusinessStoreWareDetail>)mapper.readValue(businessStoreWareDetailJson, new TypeReference<List<BusinessStoreWareDetail>>(){});
-
- }
-
- if (businessDeliveryStorageNotice.getId() == null) {
- Map<String, Object> returnMap = deliveryStorageNoticeService.addTransfer(businessDeliveryStorageNotice, storeWareDetailList, userId, name , orgId);
- if (returnMap != null && returnMap.get("error") != null) {
- modelMap.put("status", "error");
- modelMap.put("msg", returnMap.get("error"));
- return modelMap;
- }
- } else {
- //deliveryStorageNoticeService.update(businessDeliveryStorageNotice, storeWareDetailList);
- }
- modelMap.put("status", "success");
- } catch (Exception e) {
- e.printStackTrace();
- modelMap.put("status", "error");
- modelMap.put("msg", "保存失败!");
- return modelMap;
- }
- return modelMap;
- }
-
- }
|