463 lines
19 KiB
Java
463 lines
19 KiB
Java
package com.jsh.erp.controller;
|
|
|
|
import com.alibaba.fastjson.JSONArray;
|
|
import com.alibaba.fastjson.JSONObject;
|
|
import com.jsh.erp.constants.ExceptionConstants;
|
|
import com.jsh.erp.datasource.entities.DepotHead;
|
|
import com.jsh.erp.datasource.entities.DepotHeadVo4Body;
|
|
import com.jsh.erp.datasource.vo.DepotHeadVo4InDetail;
|
|
import com.jsh.erp.datasource.vo.DepotHeadVo4InOutMCount;
|
|
import com.jsh.erp.datasource.vo.DepotHeadVo4List;
|
|
import com.jsh.erp.datasource.vo.DepotHeadVo4StatementAccount;
|
|
import com.jsh.erp.exception.BusinessParamCheckingException;
|
|
import com.jsh.erp.service.depotHead.DepotHeadService;
|
|
import com.jsh.erp.service.log.LogService;
|
|
import com.jsh.erp.utils.BaseResponseInfo;
|
|
import com.jsh.erp.utils.ErpInfo;
|
|
import com.jsh.erp.utils.StringUtil;
|
|
import com.jsh.erp.utils.Tools;
|
|
import org.slf4j.Logger;
|
|
import org.slf4j.LoggerFactory;
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
import org.springframework.web.bind.annotation.*;
|
|
|
|
import javax.annotation.Resource;
|
|
import javax.servlet.http.HttpServletRequest;
|
|
import java.math.BigDecimal;
|
|
import java.sql.Date;
|
|
import java.text.DecimalFormat;
|
|
import java.util.ArrayList;
|
|
import java.util.HashMap;
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
|
|
import static com.jsh.erp.utils.ResponseJsonUtil.returnJson;
|
|
import static com.jsh.erp.utils.Tools.getNow3;
|
|
|
|
/**
|
|
* @author ji-sheng-hua 752*718*920
|
|
*/
|
|
@RestController
|
|
@RequestMapping(value = "/depotHead")
|
|
public class DepotHeadController {
|
|
private Logger logger = LoggerFactory.getLogger(DepotHeadController.class);
|
|
|
|
@Resource
|
|
private DepotHeadService depotHeadService;
|
|
|
|
/**
|
|
* 批量设置状态-审核或者反审核
|
|
* @param status
|
|
* @param depotHeadIDs
|
|
* @param request
|
|
* @return
|
|
*/
|
|
@PostMapping(value = "/batchSetStatus")
|
|
public String batchSetStatus(@RequestParam("status") String status,
|
|
@RequestParam("depotHeadIDs") String depotHeadIDs,
|
|
HttpServletRequest request) throws Exception{
|
|
Map<String, Object> objectMap = new HashMap<String, Object>();
|
|
int res = depotHeadService.batchSetStatus(status, depotHeadIDs);
|
|
if(res > 0) {
|
|
return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code);
|
|
} else {
|
|
return returnJson(objectMap, ErpInfo.ERROR.name, ErpInfo.ERROR.code);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 单据编号生成接口
|
|
* @param request
|
|
* @return
|
|
*/
|
|
@GetMapping(value = "/buildNumber")
|
|
public BaseResponseInfo buildNumber(HttpServletRequest request)throws Exception {
|
|
BaseResponseInfo res = new BaseResponseInfo();
|
|
Map<String, Object> map = new HashMap<String, Object>();
|
|
try {
|
|
String number = depotHeadService.buildOnlyNumber();
|
|
map.put("DefaultNumber", number);
|
|
res.code = 200;
|
|
res.data = map;
|
|
} catch(Exception e){
|
|
e.printStackTrace();
|
|
res.code = 500;
|
|
res.data = "获取数据失败";
|
|
}
|
|
return res;
|
|
}
|
|
|
|
/**
|
|
* 获取最大的id
|
|
* @param request
|
|
* @return
|
|
*/
|
|
@GetMapping(value = "/getMaxId")
|
|
public BaseResponseInfo getMaxId(HttpServletRequest request)throws Exception {
|
|
BaseResponseInfo res = new BaseResponseInfo();
|
|
Map<String, Object> map = new HashMap<String, Object>();
|
|
try {
|
|
Long maxId = depotHeadService.getMaxId();
|
|
map.put("maxId", maxId);
|
|
res.code = 200;
|
|
res.data = map;
|
|
} catch(Exception e){
|
|
e.printStackTrace();
|
|
res.code = 500;
|
|
res.data = "获取数据失败";
|
|
}
|
|
return res;
|
|
}
|
|
|
|
/**
|
|
* 入库出库明细接口
|
|
* @param currentPage
|
|
* @param pageSize
|
|
* @param oId
|
|
* @param pid
|
|
* @param dids
|
|
* @param beginTime
|
|
* @param endTime
|
|
* @param type
|
|
* @param request
|
|
* @return
|
|
*/
|
|
@GetMapping(value = "/findInDetail")
|
|
public BaseResponseInfo findInDetail(@RequestParam("currentPage") Integer currentPage,
|
|
@RequestParam("pageSize") Integer pageSize,
|
|
@RequestParam("organId") Integer oId,
|
|
@RequestParam("projectId") Integer pid,
|
|
@RequestParam("depotIds") String dids,
|
|
@RequestParam("beginTime") String beginTime,
|
|
@RequestParam("endTime") String endTime,
|
|
@RequestParam("type") String type,
|
|
HttpServletRequest request)throws Exception {
|
|
BaseResponseInfo res = new BaseResponseInfo();
|
|
Map<String, Object> map = new HashMap<String, Object>();
|
|
try {
|
|
List<DepotHeadVo4InDetail> resList = new ArrayList<DepotHeadVo4InDetail>();
|
|
List<DepotHeadVo4InDetail> list = depotHeadService.findByAll(beginTime, endTime, type, pid, dids, oId, (currentPage-1)*pageSize, pageSize);
|
|
int total = depotHeadService.findByAllCount(beginTime, endTime, type, pid, dids, oId);
|
|
map.put("total", total);
|
|
//存放数据json数组
|
|
if (null != list) {
|
|
for (DepotHeadVo4InDetail dhd : list) {
|
|
resList.add(dhd);
|
|
}
|
|
}
|
|
map.put("rows", resList);
|
|
res.code = 200;
|
|
res.data = map;
|
|
} catch(Exception e){
|
|
e.printStackTrace();
|
|
res.code = 500;
|
|
res.data = "获取数据失败";
|
|
}
|
|
return res;
|
|
}
|
|
|
|
/**
|
|
* 入库出库统计接口
|
|
* @param currentPage
|
|
* @param pageSize
|
|
* @param oId
|
|
* @param pid
|
|
* @param dids
|
|
* @param beginTime
|
|
* @param endTime
|
|
* @param type
|
|
* @param request
|
|
* @return
|
|
*/
|
|
@GetMapping(value = "/findInOutMaterialCount")
|
|
public BaseResponseInfo findInOutMaterialCount(@RequestParam("currentPage") Integer currentPage,
|
|
@RequestParam("pageSize") Integer pageSize,
|
|
@RequestParam("organId") Integer oId,
|
|
@RequestParam("projectId") Integer pid,
|
|
@RequestParam("depotIds") String dids,
|
|
@RequestParam("beginTime") String beginTime,
|
|
@RequestParam("endTime") String endTime,
|
|
@RequestParam("type") String type,
|
|
HttpServletRequest request)throws Exception {
|
|
BaseResponseInfo res = new BaseResponseInfo();
|
|
Map<String, Object> map = new HashMap<String, Object>();
|
|
try {
|
|
List<DepotHeadVo4InOutMCount> resList = new ArrayList<DepotHeadVo4InOutMCount>();
|
|
List<DepotHeadVo4InOutMCount> list = depotHeadService.findInOutMaterialCount(beginTime, endTime, type, pid, dids, oId, (currentPage-1)*pageSize, pageSize);
|
|
int total = depotHeadService.findInOutMaterialCountTotal(beginTime, endTime, type, pid, dids, oId);
|
|
map.put("total", total);
|
|
//存放数据json数组
|
|
if (null != list) {
|
|
for (DepotHeadVo4InOutMCount dhc : list) {
|
|
resList.add(dhc);
|
|
}
|
|
}
|
|
map.put("rows", resList);
|
|
res.code = 200;
|
|
res.data = map;
|
|
} catch(Exception e){
|
|
e.printStackTrace();
|
|
res.code = 500;
|
|
res.data = "获取数据失败";
|
|
}
|
|
return res;
|
|
}
|
|
|
|
/**
|
|
* 对账单接口
|
|
* @param currentPage
|
|
* @param pageSize
|
|
* @param beginTime
|
|
* @param endTime
|
|
* @param organId
|
|
* @param supType
|
|
* @param request
|
|
* @return
|
|
*/
|
|
@GetMapping(value = "/findStatementAccount")
|
|
public BaseResponseInfo findStatementAccount(@RequestParam("currentPage") Integer currentPage,
|
|
@RequestParam("pageSize") Integer pageSize,
|
|
@RequestParam("beginTime") String beginTime,
|
|
@RequestParam("endTime") String endTime,
|
|
@RequestParam("organId") Integer organId,
|
|
@RequestParam("supType") String supType,
|
|
HttpServletRequest request) throws Exception{
|
|
BaseResponseInfo res = new BaseResponseInfo();
|
|
Map<String, Object> map = new HashMap<String, Object>();
|
|
try {
|
|
int j = 1;
|
|
if (supType.equals("客户")) { //客户
|
|
j = 1;
|
|
} else if (supType.equals("供应商")) { //供应商
|
|
j = -1;
|
|
}
|
|
List<DepotHeadVo4StatementAccount> resList = new ArrayList<DepotHeadVo4StatementAccount>();
|
|
List<DepotHeadVo4StatementAccount> list = depotHeadService.findStatementAccount(beginTime, endTime, organId, supType, (currentPage-1)*pageSize, pageSize);
|
|
int total = depotHeadService.findStatementAccountCount(beginTime, endTime, organId, supType);
|
|
map.put("total", total);
|
|
//存放数据json数组
|
|
if (null != list) {
|
|
for (DepotHeadVo4StatementAccount dha : list) {
|
|
dha.setNumber(dha.getNumber()); //单据编号
|
|
dha.setType(dha.getType()); //类型
|
|
String type = dha.getType();
|
|
BigDecimal p1 = BigDecimal.ZERO ;
|
|
BigDecimal p2 = BigDecimal.ZERO;
|
|
if (dha.getDiscountLastMoney() != null) {
|
|
p1 = dha.getDiscountLastMoney();
|
|
}
|
|
if (dha.getChangeAmount() != null) {
|
|
p2 = dha.getChangeAmount();
|
|
}
|
|
BigDecimal allPrice = BigDecimal.ZERO;
|
|
if ((p1.compareTo(BigDecimal.ZERO))==-1) {
|
|
p1 = p1.abs();
|
|
}
|
|
if(dha.getOtherMoney()!=null) {
|
|
p1 = p1.add(dha.getOtherMoney()); //与其它费用相加
|
|
}
|
|
if ((p2 .compareTo(BigDecimal.ZERO))==-1) {
|
|
p2 = p2.abs();
|
|
}
|
|
if (type.equals("采购入库")) {
|
|
allPrice = p2.subtract(p1);
|
|
} else if (type.equals("销售退货入库")) {
|
|
allPrice = p2.subtract(p1);
|
|
} else if (type.equals("销售出库")) {
|
|
allPrice = p1.subtract(p2);
|
|
} else if (type.equals("采购退货出库")) {
|
|
allPrice = p1.subtract(p2);
|
|
} else if (type.equals("付款")) {
|
|
allPrice = p1.add(p2);
|
|
} else if (type.equals("收款")) {
|
|
allPrice = BigDecimal.ZERO.subtract(p1.add(p2));
|
|
} else if (type.equals("收入")) {
|
|
allPrice = p1.subtract(p2);
|
|
} else if (type.equals("支出")) {
|
|
allPrice = p2.subtract(p1);
|
|
}
|
|
dha.setBillMoney(p1); //单据金额
|
|
dha.setChangeAmount(p2); //实际支付
|
|
DecimalFormat df = new DecimalFormat(".##");
|
|
dha.setAllPrice(new BigDecimal(df.format(allPrice.multiply(new BigDecimal(j))))); //本期变化
|
|
dha.setSupplierName(dha.getSupplierName()); //单位名称
|
|
dha.setoTime(dha.getoTime()); //单据日期
|
|
resList.add(dha);
|
|
}
|
|
}
|
|
map.put("rows", resList);
|
|
res.code = 200;
|
|
res.data = map;
|
|
} catch(Exception e){
|
|
e.printStackTrace();
|
|
res.code = 500;
|
|
res.data = "获取数据失败";
|
|
}
|
|
return res;
|
|
}
|
|
|
|
/**
|
|
* 查询单位的累计应收和累计应付,零售不能计入
|
|
* @param supplierId
|
|
* @param endTime
|
|
* @param supType
|
|
* @param request
|
|
* @return
|
|
*/
|
|
@GetMapping(value = "/findTotalPay")
|
|
public BaseResponseInfo findTotalPay(@RequestParam("supplierId") Integer supplierId,
|
|
@RequestParam("endTime") String endTime,
|
|
@RequestParam("supType") String supType,
|
|
HttpServletRequest request)throws Exception {
|
|
BaseResponseInfo res = new BaseResponseInfo();
|
|
Map<String, Object> map = new HashMap<String, Object>();
|
|
try {
|
|
JSONObject outer = new JSONObject();
|
|
BigDecimal sum = depotHeadService.findTotalPay(supplierId, endTime, supType);
|
|
outer.put("getAllMoney", sum);
|
|
map.put("rows", outer);
|
|
res.code = 200;
|
|
res.data = map;
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
res.code = 500;
|
|
res.data = "获取数据失败";
|
|
}
|
|
return res;
|
|
}
|
|
|
|
/**
|
|
* 根据编号查询单据信息
|
|
* @param number
|
|
* @param request
|
|
* @return
|
|
*/
|
|
@GetMapping(value = "/getDetailByNumber")
|
|
public BaseResponseInfo getDetailByNumber(@RequestParam("number") String number,
|
|
HttpServletRequest request)throws Exception {
|
|
BaseResponseInfo res = new BaseResponseInfo();
|
|
DepotHeadVo4List dhl = new DepotHeadVo4List();
|
|
try {
|
|
List<DepotHeadVo4List> list = depotHeadService.getDetailByNumber(number);
|
|
if(list.size() == 1) {
|
|
dhl = list.get(0);
|
|
}
|
|
res.code = 200;
|
|
res.data = dhl;
|
|
} catch(Exception e){
|
|
e.printStackTrace();
|
|
res.code = 500;
|
|
res.data = "获取数据失败";
|
|
}
|
|
return res;
|
|
}
|
|
|
|
/**
|
|
* 新增单据主表及单据子表信息
|
|
* @param body
|
|
* @param request
|
|
* @return
|
|
* @throws Exception
|
|
*/
|
|
@PostMapping(value = "/addDepotHeadAndDetail")
|
|
public Object addDepotHeadAndDetail(@RequestBody DepotHeadVo4Body body, HttpServletRequest request) throws Exception{
|
|
JSONObject result = ExceptionConstants.standardSuccess();
|
|
String beanJson = body.getInfo();
|
|
String inserted = body.getInserted();
|
|
String deleted = body.getDeleted();
|
|
String updated = body.getUpdated();
|
|
Long billsNumLimit = Long.parseLong(request.getSession().getAttribute("billsNumLimit").toString());
|
|
Long tenantId = Long.parseLong(request.getSession().getAttribute("tenantId").toString());
|
|
Long count = depotHeadService.countDepotHead(null,null,null,null,null,null,null);
|
|
if(count>= billsNumLimit) {
|
|
throw new BusinessParamCheckingException(ExceptionConstants.DEPOT_HEAD_OVER_LIMIT_FAILED_CODE,
|
|
ExceptionConstants.DEPOT_HEAD_OVER_LIMIT_FAILED_MSG);
|
|
} else {
|
|
depotHeadService.addDepotHeadAndDetail(beanJson,inserted,deleted,updated,tenantId, request);
|
|
}
|
|
return result;
|
|
}
|
|
|
|
/**
|
|
* 更新单据主表及单据子表信息
|
|
* @param body
|
|
* @param request
|
|
* @return
|
|
* @throws Exception
|
|
*/
|
|
@PostMapping(value = "/updateDepotHeadAndDetail")
|
|
public Object updateDepotHeadAndDetail(@RequestBody DepotHeadVo4Body body, HttpServletRequest request) throws Exception{
|
|
Long tenantId = Long.parseLong(request.getSession().getAttribute("tenantId").toString());
|
|
JSONObject result = ExceptionConstants.standardSuccess();
|
|
Long id = body.getId();
|
|
String beanJson = body.getInfo();
|
|
String inserted = body.getInserted();
|
|
String deleted = body.getDeleted();
|
|
String updated = body.getUpdated();
|
|
BigDecimal preTotalPrice = body.getPreTotalPrice();
|
|
depotHeadService.updateDepotHeadAndDetail(id,beanJson,inserted,deleted,updated,preTotalPrice,tenantId,request);
|
|
return result;
|
|
}
|
|
|
|
/**
|
|
* 删除单据主表及子表信息
|
|
* @param id
|
|
* @return
|
|
* @throws Exception
|
|
*/
|
|
@PostMapping(value = "/deleteDepotHeadAndDetail")
|
|
public Object deleteDepotHeadAndDetail(@RequestParam("id") Long id) throws Exception{
|
|
JSONObject result = ExceptionConstants.standardSuccess();
|
|
depotHeadService.deleteDepotHeadAndDetail(id);
|
|
return result;
|
|
}
|
|
|
|
/**
|
|
* 批量删除单据主表及子表信息
|
|
* @param ids
|
|
* @return
|
|
* @throws Exception
|
|
*/
|
|
@PostMapping(value = "/batchDeleteDepotHeadAndDetail")
|
|
public Object batchDeleteDepotHeadAndDetail(@RequestParam("ids") String ids) throws Exception{
|
|
JSONObject result = ExceptionConstants.standardSuccess();
|
|
depotHeadService.batchDeleteDepotHeadAndDetail(ids);
|
|
return result;
|
|
}
|
|
|
|
/**
|
|
* 统计今日销售额、本月销售额、本月进货额
|
|
* @param request
|
|
* @return
|
|
*/
|
|
@GetMapping(value = "/getBuyAndSaleStatistics")
|
|
public BaseResponseInfo getBuyAndSaleStatistics(HttpServletRequest request) {
|
|
BaseResponseInfo res = new BaseResponseInfo();
|
|
Map<String, Object> map = new HashMap<String, Object>();
|
|
try {
|
|
String today = Tools.getNow() + " 00:00:00";
|
|
String firstDay = Tools.getCurrentMonth() + "-01 00:00:00";
|
|
BigDecimal todaySale = depotHeadService.getBuyAndSaleStatistics("出库", "销售",
|
|
1, today, getNow3()); //今日销售出库
|
|
BigDecimal todayRetailSale = depotHeadService.getBuyAndSaleRetailStatistics("出库", "零售",
|
|
0, today, getNow3()); //今日零售出库
|
|
BigDecimal monthSale = depotHeadService.getBuyAndSaleStatistics("出库", "销售",
|
|
1,firstDay, getNow3()); //本月销售出库
|
|
BigDecimal monthRetailSale = depotHeadService.getBuyAndSaleRetailStatistics("出库", "零售",
|
|
0,firstDay, getNow3()); //本月零售出库
|
|
BigDecimal monthBuy = depotHeadService.getBuyAndSaleStatistics("入库", "采购",
|
|
1, firstDay, getNow3()); //本月采购入库
|
|
map.put("todaySale", todaySale.add(todayRetailSale));
|
|
map.put("thisMonthSale", monthSale.add(monthRetailSale));
|
|
map.put("thisMonthBuy", monthBuy);
|
|
res.code = 200;
|
|
res.data = map;
|
|
} catch(Exception e){
|
|
e.printStackTrace();
|
|
res.code = 500;
|
|
res.data = "获取数据失败";
|
|
}
|
|
return res;
|
|
}
|
|
}
|