Files
jshERP/src/main/java/com/jsh/action/materials/DepotHeadAction.java
AlanGao 546aa7ec40 update
2018-04-07 12:41:53 +08:00

971 lines
35 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package com.jsh.action.materials;
import java.io.IOException;
import java.sql.Timestamp;
import java.text.ParseException;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import org.apache.commons.lang.StringUtils;
import org.springframework.dao.DataAccessException;
import com.jsh.base.BaseAction;
import com.jsh.base.Log;
import com.jsh.model.po.Account;
import com.jsh.model.po.Depot;
import com.jsh.model.po.DepotHead;
import com.jsh.model.po.Logdetails;
import com.jsh.model.po.Person;
import com.jsh.model.po.Supplier;
import com.jsh.model.vo.materials.DepotHeadModel;
import com.jsh.service.materials.DepotHeadIService;
import com.jsh.util.JshException;
import com.jsh.util.PageUtil;
import com.jsh.util.Tools;
/*
* 单据表头管理
* @author jishenghua qq:752718920
*/
@SuppressWarnings("serial")
public class DepotHeadAction extends BaseAction<DepotHeadModel>
{
private DepotHeadIService depotHeadService;
private DepotHeadModel model = new DepotHeadModel();
/*
* 获取MaxId
*/
@SuppressWarnings({ "rawtypes", "unchecked" })
public String getMaxId()
{
Map<String,List> mapData = model.getShowModel().getMap();
PageUtil pageUtil = new PageUtil();
pageUtil.setPageSize(0);
pageUtil.setCurPage(0);
try
{
depotHeadService.find(pageUtil,"maxId");
mapData.put("depotHeadMax", pageUtil.getPageList());
}
catch (Exception e)
{
Log.errorFileSync(">>>>>>>>>>>>>查找最大的Id信息异常", e);
model.getShowModel().setMsgTip("exceptoin");
}
return SUCCESS;
}
/**
* 增加单据
* @return
*/
public void create(){
Log.infoFileSync("==================开始调用增加单据信息信息方法create()===================");
Boolean flag = false;
try
{
DepotHead depotHead = new DepotHead();
depotHead.setType(model.getType());
depotHead.setSubType(model.getSubType());
if(model.getProjectId()!=null){depotHead.setProjectId(new Depot(model.getProjectId()));}
//构造新的编号
String dNumber = model.getDefaultNumber();
String number = dNumber.substring(0,12); //截取前缀
String beginTime = Tools.getNow() + " 00:00:00";
String endTime = Tools.getNow() + " 23:59:59";
String newNumber = buildNumberFun(model.getType(), model.getSubType(), beginTime, endTime); //从数据库查询最新的编号+1,这样能防止重复
String allNewNumber = number + newNumber;
depotHead.setNumber(model.getNumber()); //一直从前端文本框里面获取
depotHead.setDefaultNumber(allNewNumber); //初始编号,一直都从后台取值
depotHead.setOperPersonName(getUser().getUsername());
depotHead.setCreateTime(new Timestamp(System.currentTimeMillis()));
try{
depotHead.setOperTime(new Timestamp(Tools.parse(model.getOperTime(), "yyyy-MM-dd HH:mm:ss").getTime()));
}
catch (ParseException e){
Log.errorFileSync(">>>>>>>>>>>>>>>解析购买日期格式异常", e);
}
if(model.getOrganId()!=null){depotHead.setOrganId(new Supplier(model.getOrganId()));}
if(model.getHandsPersonId()!=null){depotHead.setHandsPersonId(new Person(model.getHandsPersonId()));}
if(model.getSalesman()!=null){
depotHead.setSalesman(model.getSalesman().toString());
}
if(model.getAccountId()!=null){depotHead.setAccountId(new Account(model.getAccountId()));}
depotHead.setChangeAmount(model.getChangeAmount());
depotHead.setAccountIdList(model.getAccountIdList());
depotHead.setAccountMoneyList(model.getAccountMoneyList());
depotHead.setDiscount(model.getDiscount());
depotHead.setDiscountMoney(model.getDiscountMoney());
depotHead.setDiscountLastMoney(model.getDiscountLastMoney());
depotHead.setOtherMoney(model.getOtherMoney());
depotHead.setOtherMoneyList(model.getOtherMoneyList());
depotHead.setOtherMoneyItem(model.getOtherMoneyItem());
depotHead.setAccountDay(model.getAccountDay());
if(model.getAllocationProjectId()!=null){depotHead.setAllocationProjectId(new Depot(model.getAllocationProjectId()));}
depotHead.setTotalPrice(model.getTotalPrice());
depotHead.setPayType(model.getPayType());
depotHead.setStatus(false);
depotHead.setRemark(model.getRemark());
depotHeadService.create(depotHead);
//========标识位===========
flag = true;
//记录操作日志使用
tipMsg = "成功";
tipType = 0;
}
catch (DataAccessException e) {
Log.errorFileSync(">>>>>>>>>>>>>>>>>>>增加单据信息异常", e);
flag = false;
tipMsg = "失败";
tipType = 1;
}
finally {
try {
toClient(flag.toString());
}
catch (IOException e) {
Log.errorFileSync(">>>>>>>>>>>>增加单据信息回写客户端结果异常", e);
}
}
logService.create(new Logdetails(getUser(), "增加单据", model.getClientIp(),
new Timestamp(System.currentTimeMillis())
, tipType, "增加单据编号为 "+ model.getNumber() + " " + tipMsg + "", "增加单据" + tipMsg));
Log.infoFileSync("==================结束调用增加单据方法create()===================");
}
/**
* 删除单据
* @return
*/
public String delete() {
Log.infoFileSync("====================开始调用删除单据信息方法delete()================");
try {
depotHeadService.delete(model.getDepotHeadID());
tipMsg = "成功";
tipType = 0;
}
catch (DataAccessException e) {
Log.errorFileSync(">>>>>>>>>>>删除ID为 " + model.getDepotHeadID() + " 的单据异常", e);
tipMsg = "失败";
tipType = 1;
}
model.getShowModel().setMsgTip(tipMsg);
logService.create(new Logdetails(getUser(), "删除单据", model.getClientIp(),
new Timestamp(System.currentTimeMillis())
, tipType, "删除单据ID为 "+ model.getDepotHeadID() + " " + tipMsg + "", "删除单据" + tipMsg));
Log.infoFileSync("====================结束调用删除单据信息方法delete()================");
return SUCCESS;
}
/**
* 更新单据
* @return
*/
public void update() {
Boolean flag = false;
try {
DepotHead depotHead = depotHeadService.get(model.getDepotHeadID());
depotHead.setType(model.getType());
depotHead.setSubType(model.getSubType());
if(model.getProjectId()!=null){depotHead.setProjectId(new Depot(model.getProjectId()));}
depotHead.setNumber(model.getNumber());
depotHead.setOperPersonName(getUser().getUsername());
try{
depotHead.setOperTime(new Timestamp(Tools.parse(model.getOperTime(), "yyyy-MM-dd HH:mm:ss").getTime()));
}
catch (ParseException e) {
Log.errorFileSync(">>>>>>>>>>>>>>>解析入库时间格式异常", e);
}
if(model.getOrganId()!=null){depotHead.setOrganId(new Supplier(model.getOrganId()));}
if(model.getHandsPersonId()!=null){depotHead.setHandsPersonId(new Person(model.getHandsPersonId()));}
depotHead.setSalesman(model.getSalesman());
if(model.getAccountId()!=null){
depotHead.setAccountId(new Account(model.getAccountId()));
}
else {
depotHead.setAccountId(null);
}
depotHead.setChangeAmount(model.getChangeAmount());
depotHead.setAccountIdList(model.getAccountIdList());
depotHead.setAccountMoneyList(model.getAccountMoneyList());
depotHead.setDiscount(model.getDiscount());
depotHead.setDiscountMoney(model.getDiscountMoney());
depotHead.setDiscountLastMoney(model.getDiscountLastMoney());
depotHead.setOtherMoney(model.getOtherMoney());
depotHead.setOtherMoneyList(model.getOtherMoneyList());
depotHead.setOtherMoneyItem(model.getOtherMoneyItem());
depotHead.setAccountDay(model.getAccountDay());
if(model.getAllocationProjectId()!=null){depotHead.setAllocationProjectId(new Depot(model.getAllocationProjectId()));}
depotHead.setTotalPrice(model.getTotalPrice());
depotHead.setPayType(model.getPayType());
depotHead.setStatus(false);
depotHead.setRemark(model.getRemark());
depotHeadService.update(depotHead);
flag = true;
tipMsg = "成功";
tipType = 0;
}
catch (DataAccessException e) {
Log.errorFileSync(">>>>>>>>>>>>>修改单据ID为 " + model.getDepotHeadID() + "信息失败", e);
flag = false;
tipMsg = "失败";
tipType = 1;
}
finally {
try {
toClient(flag.toString());
}
catch (IOException e) {
Log.errorFileSync(">>>>>>>>>>>>修改单据回写客户端结果异常", e);
}
}
logService.create(new Logdetails(getUser(), "更新单据", model.getClientIp(),
new Timestamp(System.currentTimeMillis())
, tipType, "更新单据ID为 "+ model.getDepotHeadID() + " " + tipMsg + "", "更新单据" + tipMsg));
}
/**
* 批量删除指定ID单据
* @return
*/
public String batchDelete()
{
try
{
depotHeadService.batchDelete(model.getDepotHeadIDs());
model.getShowModel().setMsgTip("成功");
//记录操作日志使用
tipMsg = "成功";
tipType = 0;
}
catch (DataAccessException e)
{
Log.errorFileSync(">>>>>>>>>>>批量删除单据ID为" + model.getDepotHeadIDs() + "信息异常", e);
tipMsg = "失败";
tipType = 1;
}
logService.create(new Logdetails(getUser(), "批量删除单据", model.getClientIp(),
new Timestamp(System.currentTimeMillis())
, tipType, "批量删除单据ID为 "+ model.getDepotHeadIDs() + " " + tipMsg + "", "批量删除单据" + tipMsg));
return SUCCESS;
}
/**
* 批量设置状态-审核或者反审核
* @return
*/
public String batchSetStatus() {
try {
depotHeadService.batchSetStatus(model.getStatus(), model.getDepotHeadIDs());
model.getShowModel().setMsgTip("成功");
//记录操作日志使用
tipMsg = "成功";
tipType = 0;
}
catch (DataAccessException e) {
Log.errorFileSync(">>>>>>>>>>>批量修改状态单据ID为" + model.getDepotHeadIDs() + "信息异常", e);
tipMsg = "失败";
tipType = 1;
}
logService.create(new Logdetails(getUser(), "批量修改单据状态", model.getClientIp(),
new Timestamp(System.currentTimeMillis())
, tipType, "批量修改状态单据ID为 "+ model.getDepotHeadIDs() + " " + tipMsg + "", "批量修改单据状态" + tipMsg));
return SUCCESS;
}
/**
* 检查单据编号是否存在
*/
public void checkIsNumberExist() {
Boolean flag = false;
try {
flag = depotHeadService.checkIsNameExist("Number", model.getNumber(), "Id", model.getDepotHeadID());
}
catch (DataAccessException e)
{
Log.errorFileSync(">>>>>>>>>>>>>>>>>检查单据编号为:" + model.getNumber() + " ID为 " + model.getDepotHeadID() + " 是否存在出现异常!");
}
finally
{
try
{
toClient(flag.toString());
}
catch (IOException e)
{
Log.errorFileSync(">>>>>>>>>>>>回写检查单据编号为:" + model.getNumber() + " ID为 " + model.getDepotHeadID() + " 是否存在出现异常!",e);
}
}
}
/**
* 单据编号生成接口规则查找当前类型单据下的当天最大的单据号并加1
*/
public void buildNumber(){
try {
String beginTime = model.getBeginTime();
String endTime = model.getEndTime();
String newNumber = buildNumberFun(model.getType(), model.getSubType(), beginTime, endTime);
JSONObject outer = new JSONObject();
outer.put("DefaultNumber", newNumber);
//回写查询结果
toClient(outer.toString());
}
catch (DataAccessException e) {
Log.errorFileSync(">>>>>>>>>>>>>>>>>>>单据编号生成异常", e);
}
catch (IOException e) {
Log.errorFileSync(">>>>>>>>>>>>>>>>>>>回写单据编号生成接口异常", e);
}
}
/**
* 查找单据编号
* @return
*/
public String buildNumberFun(String type,String subType,String beginTime,String endTime){
String newNumber = "0001"; //新编号
try {
PageUtil<DepotHead> pageUtil = new PageUtil<DepotHead>();
pageUtil.setPageSize(0);
pageUtil.setCurPage(0);
pageUtil.setAdvSearch(buildNumberCondition(type, subType, beginTime, endTime));
depotHeadService.find(pageUtil);
List<DepotHead> dataList = pageUtil.getPageList();
//存放数据json数组
if (null != dataList && dataList.size() > 0) {
DepotHead depotHead = dataList.get(0);
if (depotHead != null) {
String number = depotHead.getDefaultNumber(); //最大的单据编号
if (number != null) {
Integer lastNumber = Integer.parseInt(number.substring(12, 16)); //末四尾
lastNumber = lastNumber + 1;
Integer nLen = lastNumber.toString().length();
if (nLen == 1) {
newNumber = "000" + lastNumber.toString();
} else if (nLen == 2) {
newNumber = "00" + lastNumber.toString();
} else if (nLen == 3) {
newNumber = "0" + lastNumber.toString();
} else if (nLen == 4) {
newNumber = lastNumber.toString();
}
}
}
}
}
catch (DataAccessException e) {
Log.errorFileSync(">>>>>>>>>>>>>>>>>>>单据编号生成异常", e);
}
return newNumber;
}
/**
* 根据材料信息获取
*/
public void getHeaderIdByMaterial(){
try {
String materialParam = model.getMaterialParam(); //商品参数
String depotIds = model.getDepotIds(); //拥有的仓库信息
PageUtil pageUtil = new PageUtil();
pageUtil.setPageSize(0);
pageUtil.setCurPage(0);
depotHeadService.getHeaderIdByMaterial(pageUtil, materialParam, depotIds);
JSONObject outer = new JSONObject();
String allReturn = "";
List dataList = pageUtil.getPageList();
if(dataList!=null) {
for (Integer i = 0; i < dataList.size(); i++) {
Object dl = dataList.get(i); //获取对象
allReturn = allReturn + dl.toString() + ",";
}
}
allReturn = allReturn.substring(0,allReturn.length()-1);
if(allReturn.equals("null")){
allReturn = "";
}
outer.put("ret", allReturn);
//回写查询结果
toClient(outer.toString());
}
catch (JshException e) {
Log.errorFileSync(">>>>>>>>>>>>>>>>>>>查找信息异常", e);
}
catch (IOException e) {
Log.errorFileSync(">>>>>>>>>>>>>>>>>>>回写查询单据信息结果异常", e);
}
}
/**
* 查找单据信息
* @return
*/
public void findBy() {
try {
PageUtil<DepotHead> pageUtil = new PageUtil<DepotHead>();
pageUtil.setPageSize(model.getPageSize());
pageUtil.setCurPage(model.getPageNo());
pageUtil.setAdvSearch(getCondition());
depotHeadService.find(pageUtil);
List<DepotHead> dataList = pageUtil.getPageList();
JSONObject outer = new JSONObject();
outer.put("total", pageUtil.getTotalCount());
//存放数据json数组
JSONArray dataArray = new JSONArray();
if(null != dataList) {
for(DepotHead depotHead:dataList) {
JSONObject item = new JSONObject();
item.put("Id", depotHead.getId());
item.put("ProjectId", depotHead.getProjectId()==null?"":depotHead.getProjectId().getId());
item.put("ProjectName", depotHead.getProjectId()==null?"":depotHead.getProjectId().getName());
item.put("Number", depotHead.getNumber());
item.put("OperPersonName", depotHead.getOperPersonName());
item.put("CreateTime", Tools.getCenternTime(depotHead.getCreateTime()));
item.put("OperTime", Tools.getCenternTime(depotHead.getOperTime()));
item.put("OrganId", depotHead.getOrganId()==null?"":depotHead.getOrganId().getId());
item.put("OrganName", depotHead.getOrganId()==null?"":depotHead.getOrganId().getSupplier());
item.put("HandsPersonId", depotHead.getHandsPersonId()==null?"":depotHead.getHandsPersonId().getId());
item.put("Salesman", depotHead.getSalesman().toString());
item.put("HandsPersonName", depotHead.getHandsPersonId()==null?"":depotHead.getHandsPersonId().getName());
item.put("AccountId", depotHead.getAccountId()==null?"":depotHead.getAccountId().getId());
item.put("AccountName", depotHead.getAccountId()==null?"":depotHead.getAccountId().getName());
item.put("ChangeAmount", depotHead.getChangeAmount()==null?"":Math.abs(depotHead.getChangeAmount()));
item.put("AccountIdList", depotHead.getAccountIdList());
item.put("AccountMoneyList", depotHead.getAccountMoneyList());
item.put("Discount", depotHead.getDiscount());
item.put("DiscountMoney", depotHead.getDiscountMoney());
item.put("DiscountLastMoney", depotHead.getDiscountLastMoney());
item.put("OtherMoney", depotHead.getOtherMoney());
item.put("OtherMoneyList", depotHead.getOtherMoneyList()); //id列表
item.put("OtherMoneyItem", depotHead.getOtherMoneyItem()); //money列表
item.put("AccountDay", depotHead.getAccountDay()); //结算天数
item.put("AllocationProjectId", depotHead.getAllocationProjectId()==null?"":depotHead.getAllocationProjectId().getId());
item.put("AllocationProjectName", depotHead.getAllocationProjectId()==null?"":depotHead.getAllocationProjectId().getName());
item.put("TotalPrice", depotHead.getTotalPrice()==null?"":Math.abs(depotHead.getTotalPrice()));
item.put("payType", depotHead.getPayType()==null?"":depotHead.getPayType());
item.put("Status", depotHead.getStatus());
item.put("Remark", depotHead.getRemark());
item.put("MaterialsList", findMaterialsListByHeaderId(depotHead.getId()));
item.put("op", 1);
dataArray.add(item);
}
}
outer.put("rows", dataArray);
//回写查询结果
toClient(outer.toString());
}
catch (DataAccessException e) {
Log.errorFileSync(">>>>>>>>>>>>>>>>>>>查找单据信息异常", e);
}
catch (IOException e) {
Log.errorFileSync(">>>>>>>>>>>>>>>>>>>回写查询单据信息结果异常", e);
}
}
/**
* 根据编号查询单据信息
*/
public void getDetailByNumber(){
try {
PageUtil<DepotHead> pageUtil = new PageUtil<DepotHead>();
pageUtil.setPageSize(0);
pageUtil.setCurPage(0);
pageUtil.setAdvSearch(getConditionByNumber());
depotHeadService.find(pageUtil);
List<DepotHead> dataList = pageUtil.getPageList();
JSONObject item = new JSONObject();
if(dataList!=null && dataList.get(0)!=null) {
DepotHead depotHead = dataList.get(0);
item.put("Id", depotHead.getId());
item.put("ProjectId", depotHead.getProjectId()==null?"":depotHead.getProjectId().getId());
item.put("ProjectName", depotHead.getProjectId()==null?"":depotHead.getProjectId().getName());
item.put("Number", depotHead.getNumber());
item.put("OperPersonName", depotHead.getOperPersonName());
item.put("CreateTime", Tools.getCenternTime(depotHead.getCreateTime()));
item.put("OperTime", Tools.getCenternTime(depotHead.getOperTime()));
item.put("OrganId", depotHead.getOrganId()==null?"":depotHead.getOrganId().getId());
item.put("OrganName", depotHead.getOrganId()==null?"":depotHead.getOrganId().getSupplier());
item.put("HandsPersonId", depotHead.getHandsPersonId()==null?"":depotHead.getHandsPersonId().getId());
item.put("Salesman", depotHead.getSalesman().toString());
item.put("HandsPersonName", depotHead.getHandsPersonId()==null?"":depotHead.getHandsPersonId().getName());
item.put("AccountId", depotHead.getAccountId()==null?"":depotHead.getAccountId().getId());
item.put("AccountName", depotHead.getAccountId()==null?"":depotHead.getAccountId().getName());
item.put("ChangeAmount", depotHead.getChangeAmount()==null?"":Math.abs(depotHead.getChangeAmount()));
item.put("AccountIdList", depotHead.getAccountIdList());
item.put("AccountMoneyList", depotHead.getAccountMoneyList());
item.put("Discount", depotHead.getDiscount());
item.put("DiscountMoney", depotHead.getDiscountMoney());
item.put("DiscountLastMoney", depotHead.getDiscountLastMoney());
item.put("OtherMoney", depotHead.getOtherMoney());
item.put("OtherMoneyList", depotHead.getOtherMoneyList()); //id列表
item.put("OtherMoneyItem", depotHead.getOtherMoneyItem()); //money列表
item.put("AccountDay", depotHead.getAccountDay()); //结算天数
item.put("AllocationProjectId", depotHead.getAllocationProjectId()==null?"":depotHead.getAllocationProjectId().getId());
item.put("AllocationProjectName", depotHead.getAllocationProjectId()==null?"":depotHead.getAllocationProjectId().getName());
item.put("TotalPrice", depotHead.getTotalPrice()==null?"":Math.abs(depotHead.getTotalPrice()));
item.put("payType", depotHead.getPayType()==null?"":depotHead.getPayType());
item.put("Status", depotHead.getStatus());
item.put("Remark", depotHead.getRemark());
item.put("MaterialsList", findMaterialsListByHeaderId(depotHead.getId()));
}
//回写查询结果
toClient(item.toString());
}
catch (DataAccessException e) {
Log.errorFileSync(">>>>>>>>>>>>>>>>>>>查找单据信息异常", e);
}
catch (IOException e) {
Log.errorFileSync(">>>>>>>>>>>>>>>>>>>回写查询单据信息结果异常", e);
}
}
/**
* 查找单据_根据月份(报表)
* @return
*/
public void findByMonth() {
try
{
PageUtil<DepotHead> pageUtil = new PageUtil<DepotHead>();
pageUtil.setPageSize(1000);
pageUtil.setCurPage(1);
pageUtil.setAdvSearch(getConditionHead());
depotHeadService.find(pageUtil);
List<DepotHead> dataList = pageUtil.getPageList();
JSONObject outer = new JSONObject();
String headId = "";
if(null != dataList)
{
for(DepotHead depotHead:dataList)
{
headId = headId + depotHead.getId() + ",";
}
}
if(headId!="") {
headId = headId.substring(0, headId.lastIndexOf(","));
}
outer.put("HeadIds", headId);
toClient(outer.toString());
}
catch (DataAccessException e)
{
Log.errorFileSync(">>>>>>>>>>>>>>>>>>>查找单据信息异常", e);
}
catch (IOException e)
{
Log.errorFileSync(">>>>>>>>>>>>>>>>>>>回写查询单据信息结果异常", e);
}
}
/**
* 查找统计信息_根据礼品卡(报表)
* @return
*/
public void findGiftReport() {
try {
PageUtil<DepotHead> pageUtil_in = new PageUtil<DepotHead>();
pageUtil_in.setPageSize(0);
pageUtil_in.setCurPage(0);
pageUtil_in.setAdvSearch(getConditionHead_Gift_In());
depotHeadService.find(pageUtil_in);
List<DepotHead> dataList_in = pageUtil_in.getPageList();
JSONObject outer = new JSONObject();
String headId = "";
if(null != dataList_in) {
for(DepotHead depotHead:dataList_in) {
headId = headId + depotHead.getId() + ",";
}
PageUtil<DepotHead> pageUtil_out = new PageUtil<DepotHead>();
pageUtil_out.setPageSize(0);
pageUtil_out.setCurPage(0);
pageUtil_out.setAdvSearch(getConditionHead_Gift_Out());
depotHeadService.find(pageUtil_out);
List<DepotHead> dataList_out = pageUtil_out.getPageList();
if(null != dataList_out) {
for(DepotHead depotHead:dataList_out) {
headId = headId + depotHead.getId() + ",";
}
}
}
if(headId!="") {
headId = headId.substring(0, headId.lastIndexOf(","));
}
outer.put("HeadIds", headId);
toClient(outer.toString());
}
catch (DataAccessException e) {
Log.errorFileSync(">>>>>>>>>>>>>>>>>>>查找单据信息异常", e);
}
catch (IOException e) {
Log.errorFileSync(">>>>>>>>>>>>>>>>>>>回写查询单据信息结果异常", e);
}
}
/**
* 查询单位的累计应收和累计应付,零售不能计入
* @return
*/
public void findTotalPay() {
try
{
JSONObject outer = new JSONObject();
Double sum = 0.0;
String getS = model.getSupplierId();
String supType = model.getSupType(); //单位类型:客户、供应商
int i = 1;
if(supType.equals("customer")){ //客户
i = 1;
}
else if(supType.equals("vendor")){ //供应商
i = -1;
}
//进销部分
sum = sum - (allMoney(getS, "入库", "采购", "合计") - allMoney(getS, "入库", "采购", "实际"))*i;
sum = sum - (allMoney(getS, "入库", "销售退货", "合计") - allMoney(getS, "入库", "销售退货", "实际"))*i;
sum = sum + (allMoney(getS, "出库", "销售", "合计") - allMoney(getS, "出库", "销售", "实际"))*i;
sum = sum + (allMoney(getS, "出库", "采购退货", "合计") - allMoney(getS, "出库", "采购退货", "实际"))*i;
outer.put("getAllMoney", sum);
toClient(outer.toString());
}
catch (DataAccessException e)
{
Log.errorFileSync(">>>>>>>>>>>>>>>>>>>查找异常", e);
}
catch (IOException e)
{
Log.errorFileSync(">>>>>>>>>>>>>>>>>>>回写查询结果异常", e);
}
}
/**
* 统计总金额
* @param type
* @param subType
* @param mode 合计或者金额
* @return
*/
@SuppressWarnings({ "unchecked", "rawtypes" })
public Double allMoney(String getS, String type, String subType, String mode) {
Log.infoFileSync("getS:" + getS);
Double allMoney = 0.0;
String allReturn = "";
PageUtil<DepotHead> pageUtil = new PageUtil<DepotHead>();
pageUtil.setPageSize(0);
pageUtil.setCurPage(0);
pageUtil.setAdvSearch(getConditionHead_byEndTime());
try {
Integer supplierId = Integer.valueOf(getS);
depotHeadService.findAllMoney(pageUtil, supplierId, type, subType, mode);
allReturn = pageUtil.getPageList().toString();
allReturn = allReturn.substring(1,allReturn.length()-1);
if(allReturn.equals("null")){
allReturn = "0";
}
} catch (JshException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
allMoney = Double.parseDouble(allReturn);
//返回正数,如果负数也转为正数
if(allMoney<0){
allMoney = -allMoney;
}
return allMoney;
}
/**
*入库出库明细接口
*/
public void findInDetail(){
PageUtil pageUtil = new PageUtil();
pageUtil.setPageSize(model.getPageSize());
pageUtil.setCurPage(model.getPageNo());
Long pid =model.getProjectId();
String dids =model.getDepotIds();
Long oId = model.getOrganId();
String beginTime = model.getBeginTime();
String endTime = model.getEndTime();
String type = model.getType();
try{
depotHeadService.findInDetail(pageUtil,beginTime,endTime,type,pid,dids,oId);
List dataList = pageUtil.getPageList();
JSONObject outer = new JSONObject();
outer.put("total", pageUtil.getTotalCount());
//存放数据json数组
JSONArray dataArray = new JSONArray();
if(dataList!=null){
for(Integer i=0; i<dataList.size(); i++){
JSONObject item = new JSONObject();
Object dl = dataList.get(i); //获取对象
Object[] arr = (Object[]) dl; //转为数组
item.put("number", arr[0]); //单据编号
item.put("materialName", arr[1]); //商品名称
item.put("materialModel", arr[2]); //商品型号
item.put("unitPrice", arr[3]); //单价
item.put("operNumber", arr[4]); //入库出库数量
item.put("allPrice", arr[5]); //金额
item.put("supplierName", arr[6]); //供应商
item.put("depotName", arr[7]); //仓库
item.put("operTime", arr[8]); //入库出库日期
item.put("type", arr[9]); //入库出库日期
dataArray.add(item);
}
}
outer.put("rows", dataArray);
//回写查询结果
toClient(outer.toString());
}
catch (JshException e) {
Log.errorFileSync(">>>>>>>>>>>>>>>>>>>查找信息异常", e);
}
catch (IOException e) {
Log.errorFileSync(">>>>>>>>>>>>>>>>>>>回写查询信息结果异常", e);
}
}
/**
*入库出库统计接口
*/
public void findInOutMaterialCount(){
PageUtil pageUtil = new PageUtil();
pageUtil.setPageSize(model.getPageSize());
pageUtil.setCurPage(model.getPageNo());
Long pid =model.getProjectId();
String dids =model.getDepotIds();
Long oId = model.getOrganId();
String beginTime = model.getBeginTime();
String endTime = model.getEndTime();
String type = model.getType();
try{
depotHeadService.findInOutMaterialCount(pageUtil, beginTime, endTime, type, pid, dids, oId);
List dataList = pageUtil.getPageList();
JSONObject outer = new JSONObject();
outer.put("total", pageUtil.getTotalCount());
//存放数据json数组
JSONArray dataArray = new JSONArray();
if(dataList!=null){
for(Integer i=0; i<dataList.size(); i++){
JSONObject item = new JSONObject();
Object dl = dataList.get(i); //获取对象
Object[] arr = (Object[]) dl; //转为数组
item.put("MaterialId", arr[0]); //商品Id
item.put("mName", arr[1]); //商品名称
item.put("Model", arr[2]); //商品型号
item.put("categoryName", arr[3]); //商品类型
item.put("numSum", arr[4]); //数量
item.put("priceSum", arr[5]); //金额
dataArray.add(item);
}
}
outer.put("rows", dataArray);
//回写查询结果
toClient(outer.toString());
}
catch (JshException e) {
Log.errorFileSync(">>>>>>>>>>>>>>>>>>>查找信息异常", e);
}
catch (IOException e) {
Log.errorFileSync(">>>>>>>>>>>>>>>>>>>回写查询信息结果异常", e);
}
}
public String findMaterialsListByHeaderId(Long headerId){
String allReturn = "";
PageUtil pageUtil = new PageUtil();
pageUtil.setPageSize(0);
pageUtil.setCurPage(0);
try {
depotHeadService.findMaterialsListByHeaderId(pageUtil, headerId);
allReturn = pageUtil.getPageList().toString();
allReturn = allReturn.substring(1,allReturn.length()-1);
if(allReturn.equals("null")){
allReturn = "";
}
}
catch (JshException e) {
Log.errorFileSync(">>>>>>>>>>>>>>>>>>>查找信息异常", e);
}
return allReturn;
}
/**
*对账单接口
*/
public void findStatementAccount(){
PageUtil pageUtil = new PageUtil();
pageUtil.setPageSize(model.getPageSize());
pageUtil.setCurPage(model.getPageNo());
String beginTime = model.getBeginTime();
String endTime = model.getEndTime();
Long organId = model.getOrganId();
String supType = model.getSupType(); //单位类型:客户、供应商
int j = 1;
if(supType.equals("客户")){ //客户
j = 1;
}
else if(supType.equals("供应商")){ //供应商
j = -1;
}
try{
depotHeadService.findStatementAccount(pageUtil, beginTime, endTime, organId, supType);
List dataList = pageUtil.getPageList();
JSONObject outer = new JSONObject();
outer.put("total", pageUtil.getTotalCount());
//存放数据json数组
JSONArray dataArray = new JSONArray();
if(dataList!=null){
for(Integer i=0; i<dataList.size(); i++){
JSONObject item = new JSONObject();
Object dl = dataList.get(i); //获取对象
Object[] arr = (Object[]) dl; //转为数组
item.put("number", arr[0]); //单据编号
item.put("type", arr[1]); //类型
String type = arr[1].toString();
Double p1 = 0.0;
Double p2 = 0.0;
if(arr[2]!=null){
p1 = Double.parseDouble(arr[2].toString());
}
if(arr[3]!=null){
p2 = Double.parseDouble(arr[3].toString());
}
Double allPrice = 0.0;
if(p1<0) {
p1 = -p1;
}
if(p2<0) {
p2 = -p2;
}
if(type.equals("采购入库")) {
allPrice = -(p1-p2);
}
else if(type.equals("销售退货入库")) {
allPrice = -(p1-p2);
}
else if(type.equals("销售出库")) {
allPrice = p1-p2;
}
else if(type.equals("采购退货出库")) {
allPrice = p1-p2;
}
else if(type.equals("付款")) {
allPrice = p1+p2;
}
else if(type.equals("收款")) {
allPrice = -(p1+p2);
}
else if(type.equals("收入")) {
allPrice = p1-p2;
}
else if(type.equals("支出")) {
allPrice = -(p1-p2);
}
item.put("discountLastMoney", p1); //金额
item.put("changeAmount", p2); //金额
item.put("allPrice", String .format("%.2f",allPrice*j)); //计算后的金额
item.put("supplierName", arr[4]); //供应商
item.put("operTime", arr[5]); //入库出库日期
dataArray.add(item);
}
}
outer.put("rows", dataArray);
//回写查询结果
toClient(outer.toString());
}
catch (JshException e) {
Log.errorFileSync(">>>>>>>>>>>>>>>>>>>查找信息异常", e);
}
catch (IOException e) {
Log.errorFileSync(">>>>>>>>>>>>>>>>>>>回写查询信息结果异常", e);
}
}
private Map<String,Object> getConditionByNumber() {
Map<String,Object> condition = new HashMap<String,Object>();
condition.put("Number_s_eq",model.getNumber());
return condition;
}
/**
* 拼接搜索条件
* @return
*/
private Map<String,Object> getCondition()
{
/**
* 拼接搜索条件
*/
Map<String,Object> condition = new HashMap<String,Object>();
condition.put("Type_s_eq",model.getType());
condition.put("SubType_s_eq",model.getSubType());
condition.put("Number_s_like",model.getNumber());
condition.put("Id_s_in",model.getDhIds());
condition.put("OperTime_s_gteq",model.getBeginTime());
condition.put("OperTime_s_lteq",model.getEndTime());
condition.put("Id_s_order","desc");
return condition;
}
private Map<String,Object> buildNumberCondition(String type,String subType,String beginTime,String endTime) {
Map<String,Object> condition = new HashMap<String,Object>();
condition.put("Type_s_eq", type);
condition.put("SubType_s_eq", subType);
condition.put("OperTime_s_gteq",beginTime);
condition.put("OperTime_s_lteq",endTime);
condition.put("Id_s_order","desc");
return condition;
}
private Map<String,Object> getConditionHead()
{
Map<String,Object> condition = new HashMap<String,Object>();
condition.put("OperTime_s_lteq",model.getMonthTime() + "-31 00:00:00");
return condition;
}
private Map<String,Object> getConditionHead_Gift_In() {
Map<String,Object> condition = new HashMap<String,Object>();
return condition;
}
private Map<String,Object> getConditionHead_Gift_Out() {
Map<String,Object> condition = new HashMap<String,Object>();
if(model.getProjectId()!=null) {
condition.put("ProjectId_n_eq", model.getProjectId());
}
return condition;
}
private Map<String,Object> getConditionHead_byEndTime()
{
Map<String,Object> condition = new HashMap<String,Object>();
condition.put("OperTime_s_lteq", model.getEndTime());
return condition;
}
//=============以下spring注入以及Model驱动公共方法与Action处理无关==================
public DepotHeadModel getModel()
{
return model;
}
public void setDepotHeadService(DepotHeadIService depotHeadService)
{
this.depotHeadService = depotHeadService;
}
}