package com.jsh.erp.service.depotHead; import com.alibaba.fastjson.JSONObject; import com.jsh.erp.constants.BusinessConstants; import com.jsh.erp.constants.ExceptionConstants; import com.jsh.erp.datasource.entities.DepotHead; import com.jsh.erp.datasource.entities.DepotHeadExample; import com.jsh.erp.datasource.entities.DepotItem; import com.jsh.erp.datasource.entities.User; import com.jsh.erp.datasource.mappers.DepotHeadMapper; import com.jsh.erp.datasource.mappers.DepotHeadMapperEx; import com.jsh.erp.datasource.mappers.DepotItemMapperEx; 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.BusinessRunTimeException; import com.jsh.erp.service.depotItem.DepotItemService; import com.jsh.erp.service.log.LogService; import com.jsh.erp.service.serialNumber.SerialNumberService; import com.jsh.erp.service.supplier.SupplierService; import com.jsh.erp.service.user.UserService; import com.jsh.erp.utils.StringUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import java.math.BigDecimal; import java.sql.Timestamp; import java.util.ArrayList; import java.util.Date; import java.util.List; import static com.jsh.erp.utils.Tools.getCenternTime; @Service public class DepotHeadService { private Logger logger = LoggerFactory.getLogger(DepotHeadService.class); @Resource private DepotHeadMapper depotHeadMapper; @Resource private DepotHeadMapperEx depotHeadMapperEx; @Resource private UserService userService; @Resource DepotItemService depotItemService; @Resource private SupplierService supplierService; @Resource private SerialNumberService serialNumberService; @Resource DepotItemMapperEx depotItemMapperEx; @Resource private LogService logService; public DepotHead getDepotHead(long id)throws Exception { DepotHead result=null; try{ result=depotHeadMapper.selectByPrimaryKey(id); }catch(Exception e){ logger.error("异常码[{}],异常提示[{}],异常[{}]", ExceptionConstants.DATA_READ_FAIL_CODE,ExceptionConstants.DATA_READ_FAIL_MSG,e); throw new BusinessRunTimeException(ExceptionConstants.DATA_READ_FAIL_CODE, ExceptionConstants.DATA_READ_FAIL_MSG); } return result; } public List getDepotHead()throws Exception { DepotHeadExample example = new DepotHeadExample(); example.createCriteria().andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); List list=null; try{ list=depotHeadMapper.selectByExample(example); }catch(Exception e){ logger.error("异常码[{}],异常提示[{}],异常[{}]", ExceptionConstants.DATA_READ_FAIL_CODE,ExceptionConstants.DATA_READ_FAIL_MSG,e); throw new BusinessRunTimeException(ExceptionConstants.DATA_READ_FAIL_CODE, ExceptionConstants.DATA_READ_FAIL_MSG); } return list; } public List select(String type, String subType, String number, String beginTime, String endTime, String materialParam, String depotIds, int offset, int rows)throws Exception { List resList = new ArrayList(); List list=null; try{ list=depotHeadMapperEx.selectByConditionDepotHead(type, subType, number, beginTime, endTime, materialParam, depotIds, offset, rows); }catch(Exception e){ logger.error("异常码[{}],异常提示[{}],异常[{}]", ExceptionConstants.DATA_READ_FAIL_CODE,ExceptionConstants.DATA_READ_FAIL_MSG,e); throw new BusinessRunTimeException(ExceptionConstants.DATA_READ_FAIL_CODE, ExceptionConstants.DATA_READ_FAIL_MSG); } if (null != list) { for (DepotHeadVo4List dh : list) { if(dh.getOthermoneylist() != null) { String otherMoneyListStr = dh.getOthermoneylist().replace("[", "").replace("]", "").replaceAll("\"", ""); dh.setOthermoneylist(otherMoneyListStr); } if(dh.getOthermoneyitem() != null) { String otherMoneyItemStr = dh.getOthermoneyitem().replace("[", "").replace("]", "").replaceAll("\"", ""); dh.setOthermoneyitem(otherMoneyItemStr); } if(dh.getChangeamount() != null) { dh.setChangeamount(dh.getChangeamount().abs()); } if(dh.getTotalprice() != null) { dh.setTotalprice(dh.getTotalprice().abs()); } if(dh.getOpertime() != null) { dh.setOpertimeStr(getCenternTime(dh.getOpertime())); } dh.setMaterialsList(findMaterialsListByHeaderId(dh.getId())); resList.add(dh); } } return resList; } public Long countDepotHead(String type, String subType, String number, String beginTime, String endTime, String materialParam, String depotIds) throws Exception{ Long result=null; try{ result=depotHeadMapperEx.countsByDepotHead(type, subType, number, beginTime, endTime, materialParam, depotIds); }catch(Exception e){ logger.error("异常码[{}],异常提示[{}],异常[{}]", ExceptionConstants.DATA_READ_FAIL_CODE,ExceptionConstants.DATA_READ_FAIL_MSG,e); throw new BusinessRunTimeException(ExceptionConstants.DATA_READ_FAIL_CODE, ExceptionConstants.DATA_READ_FAIL_MSG); } return result; } @Transactional(value = "transactionManager", rollbackFor = Exception.class) public int insertDepotHead(String beanJson, HttpServletRequest request)throws Exception { DepotHead depotHead = JSONObject.parseObject(beanJson, DepotHead.class); //判断用户是否已经登录过,登录过不再处理 Object userInfo = request.getSession().getAttribute("user"); if (userInfo != null) { User sessionUser = (User) userInfo; String uName = sessionUser.getUsername(); depotHead.setOperpersonname(uName); } depotHead.setCreatetime(new Timestamp(System.currentTimeMillis())); depotHead.setStatus(BusinessConstants.BILLS_STATUS_UN_AUDIT); int result=0; try{ result=depotHeadMapper.insert(depotHead); }catch(Exception e){ logger.error("异常码[{}],异常提示[{}],异常[{}]", ExceptionConstants.DATA_WRITE_FAIL_CODE,ExceptionConstants.DATA_WRITE_FAIL_MSG,e); throw new BusinessRunTimeException(ExceptionConstants.DATA_WRITE_FAIL_CODE, ExceptionConstants.DATA_WRITE_FAIL_MSG); } return result; } @Transactional(value = "transactionManager", rollbackFor = Exception.class) public int updateDepotHead(String beanJson, Long id) throws Exception{ DepotHead dh=null; try{ dh = depotHeadMapper.selectByPrimaryKey(id); }catch(Exception e){ logger.error("异常码[{}],异常提示[{}],异常[{}]", ExceptionConstants.DATA_READ_FAIL_CODE,ExceptionConstants.DATA_READ_FAIL_MSG,e); throw new BusinessRunTimeException(ExceptionConstants.DATA_READ_FAIL_CODE, ExceptionConstants.DATA_READ_FAIL_MSG); } DepotHead depotHead = JSONObject.parseObject(beanJson, DepotHead.class); depotHead.setId(id); depotHead.setStatus(dh.getStatus()); depotHead.setCreatetime(dh.getCreatetime()); depotHead.setOperpersonname(dh.getOperpersonname()); int result=0; try{ result = depotHeadMapper.updateByPrimaryKey(depotHead); }catch(Exception e){ logger.error("异常码[{}],异常提示[{}],异常[{}]", ExceptionConstants.DATA_WRITE_FAIL_CODE,ExceptionConstants.DATA_WRITE_FAIL_MSG,e); throw new BusinessRunTimeException(ExceptionConstants.DATA_WRITE_FAIL_CODE, ExceptionConstants.DATA_WRITE_FAIL_MSG); } return result; } @Transactional(value = "transactionManager", rollbackFor = Exception.class) public int deleteDepotHead(Long id)throws Exception { int result=0; try{ result = depotHeadMapper.deleteByPrimaryKey(id); }catch(Exception e){ logger.error("异常码[{}],异常提示[{}],异常[{}]", ExceptionConstants.DATA_WRITE_FAIL_CODE,ExceptionConstants.DATA_WRITE_FAIL_MSG,e); throw new BusinessRunTimeException(ExceptionConstants.DATA_WRITE_FAIL_CODE, ExceptionConstants.DATA_WRITE_FAIL_MSG); } return result; } @Transactional(value = "transactionManager", rollbackFor = Exception.class) public int batchDeleteDepotHead(String ids)throws Exception { List idList = StringUtil.strToLongList(ids); DepotHeadExample example = new DepotHeadExample(); example.createCriteria().andIdIn(idList); int result=0; try{ result = depotHeadMapper.deleteByExample(example); }catch(Exception e){ logger.error("异常码[{}],异常提示[{}],异常[{}]", ExceptionConstants.DATA_WRITE_FAIL_CODE,ExceptionConstants.DATA_WRITE_FAIL_MSG,e); throw new BusinessRunTimeException(ExceptionConstants.DATA_WRITE_FAIL_CODE, ExceptionConstants.DATA_WRITE_FAIL_MSG); } return result; } public int checkIsNameExist(Long id, String name)throws Exception { DepotHeadExample example = new DepotHeadExample(); example.createCriteria().andIdNotEqualTo(id).andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); List list = null; try{ list = depotHeadMapper.selectByExample(example); }catch(Exception e){ logger.error("异常码[{}],异常提示[{}],异常[{}]", ExceptionConstants.DATA_READ_FAIL_CODE,ExceptionConstants.DATA_READ_FAIL_MSG,e); throw new BusinessRunTimeException(ExceptionConstants.DATA_READ_FAIL_CODE, ExceptionConstants.DATA_READ_FAIL_MSG); } return list==null?0:list.size(); } @Transactional(value = "transactionManager", rollbackFor = Exception.class) public int batchSetStatus(String status, String depotHeadIDs)throws Exception { logService.insertLog(BusinessConstants.LOG_INTERFACE_NAME_DEPOT_HEAD, new StringBuffer(BusinessConstants.LOG_OPERATION_TYPE_EDIT).append(depotHeadIDs).toString(), ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest()); List ids = StringUtil.strToLongList(depotHeadIDs); DepotHead depotHead = new DepotHead(); depotHead.setStatus(status); DepotHeadExample example = new DepotHeadExample(); example.createCriteria().andIdIn(ids); int result = 0; try{ result = depotHeadMapper.updateByExampleSelective(depotHead, example); }catch(Exception e){ logger.error("异常码[{}],异常提示[{}],异常[{}]", ExceptionConstants.DATA_WRITE_FAIL_CODE,ExceptionConstants.DATA_WRITE_FAIL_MSG,e); throw new BusinessRunTimeException(ExceptionConstants.DATA_WRITE_FAIL_CODE, ExceptionConstants.DATA_WRITE_FAIL_MSG); } return result; } /** * 创建一个唯一的序列号 * */ @Transactional(value = "transactionManager", rollbackFor = Exception.class) public String buildOnlyNumber()throws Exception{ Long buildOnlyNumber=null; synchronized (this){ try{ depotHeadMapperEx.updateBuildOnlyNumber(); //编号+1 buildOnlyNumber= depotHeadMapperEx.getBuildOnlyNumber(BusinessConstants.DEPOT_NUMBER_SEQ); }catch(Exception e){ logger.error("异常码[{}],异常提示[{}],异常[{}]", ExceptionConstants.DATA_WRITE_FAIL_CODE,ExceptionConstants.DATA_WRITE_FAIL_MSG,e); throw new BusinessRunTimeException(ExceptionConstants.DATA_WRITE_FAIL_CODE, ExceptionConstants.DATA_WRITE_FAIL_MSG); } } if(buildOnlyNumber findByMonth(String monthTime)throws Exception { DepotHeadExample example = new DepotHeadExample(); monthTime = monthTime + "-31 23:59:59"; Date month = StringUtil.getDateByString(monthTime, null); example.createCriteria().andOpertimeLessThanOrEqualTo(month).andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); List list = null; try{ list = depotHeadMapper.selectByExample(example); }catch(Exception e){ logger.error("异常码[{}],异常提示[{}],异常[{}]", ExceptionConstants.DATA_READ_FAIL_CODE,ExceptionConstants.DATA_READ_FAIL_MSG,e); throw new BusinessRunTimeException(ExceptionConstants.DATA_READ_FAIL_CODE, ExceptionConstants.DATA_READ_FAIL_MSG); } return list; } public List getDepotHeadGiftOut(String projectId)throws Exception { DepotHeadExample example = new DepotHeadExample(); if (projectId != null) { example.createCriteria().andProjectidEqualTo(Long.parseLong(projectId)); } List list = null; try{ list =depotHeadMapper.selectByExample(example); }catch(Exception e){ logger.error("异常码[{}],异常提示[{}],异常[{}]", ExceptionConstants.DATA_READ_FAIL_CODE,ExceptionConstants.DATA_READ_FAIL_MSG,e); throw new BusinessRunTimeException(ExceptionConstants.DATA_READ_FAIL_CODE, ExceptionConstants.DATA_READ_FAIL_MSG); } return list; } public List findByAll(String beginTime, String endTime, String type, Integer pid, String dids, Integer oId, Integer offset, Integer rows) throws Exception{ List list = null; try{ list =depotHeadMapperEx.findByAll(beginTime, endTime, type, pid, dids, oId, offset, rows); }catch(Exception e){ logger.error("异常码[{}],异常提示[{}],异常[{}]", ExceptionConstants.DATA_READ_FAIL_CODE,ExceptionConstants.DATA_READ_FAIL_MSG,e); throw new BusinessRunTimeException(ExceptionConstants.DATA_READ_FAIL_CODE, ExceptionConstants.DATA_READ_FAIL_MSG); } return list; } public int findByAllCount(String beginTime, String endTime, String type, Integer pid, String dids, Integer oId) throws Exception{ int result = 0; try{ result =depotHeadMapperEx.findByAllCount(beginTime, endTime, type, pid, dids, oId); }catch(Exception e){ logger.error("异常码[{}],异常提示[{}],异常[{}]", ExceptionConstants.DATA_READ_FAIL_CODE,ExceptionConstants.DATA_READ_FAIL_MSG,e); throw new BusinessRunTimeException(ExceptionConstants.DATA_READ_FAIL_CODE, ExceptionConstants.DATA_READ_FAIL_MSG); } return result; } public List findInOutMaterialCount(String beginTime, String endTime, String type, Integer pid, String dids, Integer oId, Integer offset, Integer rows)throws Exception { List list = null; try{ list =depotHeadMapperEx.findInOutMaterialCount(beginTime, endTime, type, pid, dids, oId, offset, rows); }catch(Exception e){ logger.error("异常码[{}],异常提示[{}],异常[{}]", ExceptionConstants.DATA_READ_FAIL_CODE,ExceptionConstants.DATA_READ_FAIL_MSG,e); throw new BusinessRunTimeException(ExceptionConstants.DATA_READ_FAIL_CODE, ExceptionConstants.DATA_READ_FAIL_MSG); } return list; } public int findInOutMaterialCountTotal(String beginTime, String endTime, String type, Integer pid, String dids, Integer oId)throws Exception { int result = 0; try{ result =depotHeadMapperEx.findInOutMaterialCountTotal(beginTime, endTime, type, pid, dids, oId); }catch(Exception e){ logger.error("异常码[{}],异常提示[{}],异常[{}]", ExceptionConstants.DATA_READ_FAIL_CODE,ExceptionConstants.DATA_READ_FAIL_MSG,e); throw new BusinessRunTimeException(ExceptionConstants.DATA_READ_FAIL_CODE, ExceptionConstants.DATA_READ_FAIL_MSG); } return result; } public List findStatementAccount(String beginTime, String endTime, Integer organId, String supType, Integer offset, Integer rows)throws Exception { List list = null; try{ list =depotHeadMapperEx.findStatementAccount(beginTime, endTime, organId, supType, offset, rows); }catch(Exception e){ logger.error("异常码[{}],异常提示[{}],异常[{}]", ExceptionConstants.DATA_READ_FAIL_CODE,ExceptionConstants.DATA_READ_FAIL_MSG,e); throw new BusinessRunTimeException(ExceptionConstants.DATA_READ_FAIL_CODE, ExceptionConstants.DATA_READ_FAIL_MSG); } return list; } public int findStatementAccountCount(String beginTime, String endTime, Integer organId, String supType) throws Exception{ int result = 0; try{ result =depotHeadMapperEx.findStatementAccountCount(beginTime, endTime, organId, supType); }catch(Exception e){ logger.error("异常码[{}],异常提示[{}],异常[{}]", ExceptionConstants.DATA_READ_FAIL_CODE,ExceptionConstants.DATA_READ_FAIL_MSG,e); throw new BusinessRunTimeException(ExceptionConstants.DATA_READ_FAIL_CODE, ExceptionConstants.DATA_READ_FAIL_MSG); } return result; } public BigDecimal findAllMoney(Integer supplierId, String type, String subType, String mode, String endTime)throws Exception { String modeName = ""; if (mode.equals("实际")) { modeName = "ChangeAmount"; } else if (mode.equals("合计")) { modeName = "DiscountLastMoney"; } BigDecimal result = null; try{ result =depotHeadMapperEx.findAllMoney(supplierId, type, subType, modeName, endTime); }catch(Exception e){ logger.error("异常码[{}],异常提示[{}],异常[{}]", ExceptionConstants.DATA_READ_FAIL_CODE,ExceptionConstants.DATA_READ_FAIL_MSG,e); throw new BusinessRunTimeException(ExceptionConstants.DATA_READ_FAIL_CODE, ExceptionConstants.DATA_READ_FAIL_MSG); } return result; } /** * 统计总金额 * @param getS * @param type * @param subType * @param mode 合计或者金额 * @return */ public BigDecimal allMoney(String getS, String type, String subType, String mode, String endTime) { BigDecimal allMoney = BigDecimal.ZERO; try { Integer supplierId = Integer.valueOf(getS); BigDecimal sum = findAllMoney(supplierId, type, subType, mode, endTime); if(sum != null) { allMoney = sum; } } catch (Exception e) { e.printStackTrace(); } //返回正数,如果负数也转为正数 if ((allMoney.compareTo(BigDecimal.ZERO))==-1) { allMoney = allMoney.abs(); } return allMoney; } /** * 查询单位的累计应收和累计应付,零售不能计入 * @param supplierId * @param endTime * @param supType * @return */ public BigDecimal findTotalPay(Integer supplierId, String endTime, String supType) { BigDecimal sum = BigDecimal.ZERO; String getS = supplierId.toString(); int i = 1; if (("customer").equals(supType)) { //客户 i = 1; } else if (("vendor").equals(supType)) { //供应商 i = -1; } //进销部分 sum = sum.subtract((allMoney(getS, "入库", "采购", "合计",endTime).subtract(allMoney(getS, "入库", "采购", "实际",endTime))).multiply(new BigDecimal(i))); sum = sum.subtract((allMoney(getS, "入库", "销售退货", "合计",endTime).subtract(allMoney(getS, "入库", "销售退货", "实际",endTime))).multiply(new BigDecimal(i))); sum = sum.add((allMoney(getS, "出库", "销售", "合计",endTime).subtract(allMoney(getS, "出库", "销售", "实际",endTime))).multiply(new BigDecimal(i))); sum = sum.add((allMoney(getS, "出库", "采购退货", "合计",endTime).subtract(allMoney(getS, "出库", "采购退货", "实际",endTime))).multiply(new BigDecimal(i))); return sum; } public List getDetailByNumber(String number)throws Exception { List resList = new ArrayList(); List list = null; try{ list = depotHeadMapperEx.getDetailByNumber(number); }catch(Exception e){ logger.error("异常码[{}],异常提示[{}],异常[{}]", ExceptionConstants.DATA_READ_FAIL_CODE,ExceptionConstants.DATA_READ_FAIL_MSG,e); throw new BusinessRunTimeException(ExceptionConstants.DATA_READ_FAIL_CODE, ExceptionConstants.DATA_READ_FAIL_MSG); } if (null != list) { for (DepotHeadVo4List dh : list) { if(dh.getOthermoneylist() != null) { String otherMoneyListStr = dh.getOthermoneylist().replace("[", "").replace("]", "").replaceAll("\"", ""); dh.setOthermoneylist(otherMoneyListStr); } if(dh.getOthermoneyitem() != null) { String otherMoneyItemStr = dh.getOthermoneyitem().replace("[", "").replace("]", "").replaceAll("\"", ""); dh.setOthermoneyitem(otherMoneyItemStr); } if(dh.getChangeamount() != null) { dh.setChangeamount(dh.getChangeamount().abs()); } if(dh.getTotalprice() != null) { dh.setTotalprice(dh.getTotalprice().abs()); } dh.setOpertimeStr(getCenternTime(dh.getOpertime())); dh.setMaterialsList(findMaterialsListByHeaderId(dh.getId())); resList.add(dh); } } return resList; } /** * create by: cjl * description: * 新增单据主表及单据子表信息 * create time: 2019/1/25 14:36 * @Param: beanJson  * @Param: inserted  * @Param: deleted  * @Param: updated * @return java.lang.String */ @Transactional(value = "transactionManager", rollbackFor = Exception.class) public void addDepotHeadAndDetail(String beanJson, String inserted, String deleted, String updated) throws Exception { logService.insertLog(BusinessConstants.LOG_INTERFACE_NAME_DEPOT_HEAD, BusinessConstants.LOG_OPERATION_TYPE_ADD, ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest()); /**处理单据主表数据*/ DepotHead depotHead = JSONObject.parseObject(beanJson, DepotHead.class); //判断用户是否已经登录过,登录过不再处理 User userInfo=userService.getCurrentUser(); depotHead.setOperpersonname(userInfo==null?null:userInfo.getUsername()); depotHead.setCreatetime(new Timestamp(System.currentTimeMillis())); depotHead.setStatus(BusinessConstants.BILLS_STATUS_UN_AUDIT); try{ depotHeadMapperEx.adddepotHead(depotHead); }catch(Exception e){ logger.error("异常码[{}],异常提示[{}],异常[{}]", ExceptionConstants.DATA_WRITE_FAIL_CODE,ExceptionConstants.DATA_WRITE_FAIL_MSG,e); throw new BusinessRunTimeException(ExceptionConstants.DATA_WRITE_FAIL_CODE, ExceptionConstants.DATA_WRITE_FAIL_MSG); } /**入库和出库处理预付款信息*/ if(BusinessConstants.PAY_TYPE_PREPAID.equals(depotHead.getPaytype())){ if(depotHead.getOrganid()!=null) { supplierService.updateAdvanceIn(depotHead.getOrganid(), BigDecimal.ZERO.subtract(depotHead.getTotalprice())); } } /**入库和出库处理单据子表信息*/ depotItemService.saveDetials(inserted,deleted,updated,depotHead.getId()); /**如果关联单据号非空则更新订单的状态为2 */ if(depotHead.getLinknumber()!=null) { DepotHead depotHeadOrders = new DepotHead(); depotHeadOrders.setStatus(BusinessConstants.BILLS_STATUS_SKIP); DepotHeadExample example = new DepotHeadExample(); example.createCriteria().andNumberEqualTo(depotHead.getLinknumber()); try{ depotHeadMapper.updateByExampleSelective(depotHeadOrders, example); }catch(Exception e){ logger.error("异常码[{}],异常提示[{}],异常[{}]", ExceptionConstants.DATA_WRITE_FAIL_CODE,ExceptionConstants.DATA_WRITE_FAIL_MSG,e); throw new BusinessRunTimeException(ExceptionConstants.DATA_WRITE_FAIL_CODE, ExceptionConstants.DATA_WRITE_FAIL_MSG); } } } /** * create by: cjl * description: * 更新单据主表及单据子表信息 * create time: 2019/1/28 14:47 * @Param: id  * @Param: beanJson  * @Param: inserted  * @Param: deleted  * @Param: updated  * @Param: preTotalPrice * @return java.lang.Object */ @Transactional(value = "transactionManager", rollbackFor = Exception.class) public void updateDepotHeadAndDetail(Long id, String beanJson, String inserted, String deleted, String updated, BigDecimal preTotalPrice)throws Exception { logService.insertLog(BusinessConstants.LOG_INTERFACE_NAME_DEPOT_HEAD, new StringBuffer(BusinessConstants.LOG_OPERATION_TYPE_EDIT).append(id).toString(), ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest()); /**更新单据主表信息*/ DepotHead depotHead = JSONObject.parseObject(beanJson, DepotHead.class); //判断用户是否已经登录过,登录过不再处理 depotHead.setId(id); User userInfo=userService.getCurrentUser(); depotHead.setOperpersonname(userInfo==null?null:userInfo.getUsername()); depotHead.setOpertime(new Timestamp(System.currentTimeMillis())); try{ depotHeadMapperEx.updatedepotHead(depotHead); }catch(Exception e){ logger.error("异常码[{}],异常提示[{}],异常[{}]", ExceptionConstants.DATA_WRITE_FAIL_CODE,ExceptionConstants.DATA_WRITE_FAIL_MSG,e); throw new BusinessRunTimeException(ExceptionConstants.DATA_WRITE_FAIL_CODE, ExceptionConstants.DATA_WRITE_FAIL_MSG); } /**入库和出库处理预付款信息*/ if(BusinessConstants.PAY_TYPE_PREPAID.equals(depotHead.getPaytype())){ if(depotHead.getOrganid()!=null){ supplierService.updateAdvanceIn(depotHead.getOrganid(), BigDecimal.ZERO.subtract(depotHead.getTotalprice().subtract(preTotalPrice))); } } /**入库和出库处理单据子表信息*/ depotItemService.saveDetials(inserted,deleted,updated,depotHead.getId()); } /** * create by: cjl * description: * 删除单据主表及子表信息 * create time: 2019/1/28 17:29 * @Param: id * @return java.lang.Object */ @Transactional(value = "transactionManager", rollbackFor = Exception.class) public void deleteDepotHeadAndDetail(Long id) throws Exception { logService.insertLog(BusinessConstants.LOG_INTERFACE_NAME_DEPOT_HEAD, new StringBuffer(BusinessConstants.LOG_OPERATION_TYPE_DELETE).append(id).toString(), ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest()); //查询单据主表信息 DepotHead depotHead =getDepotHead(id); User userInfo=userService.getCurrentUser(); //删除出库数据回收序列号 if(BusinessConstants.DEPOTHEAD_TYPE_OUT.equals(depotHead.getType()) &&!BusinessConstants.SUB_TYPE_TRANSFER.equals(depotHead.getSubtype())){ //查询单据子表列表 List depotItemList=null; try{ depotItemList = depotItemMapperEx.findDepotItemListBydepotheadId(id,BusinessConstants.ENABLE_SERIAL_NUMBER_ENABLED); }catch(Exception e){ logger.error("异常码[{}],异常提示[{}],异常[{}]", ExceptionConstants.DATA_READ_FAIL_CODE,ExceptionConstants.DATA_READ_FAIL_MSG,e); throw new BusinessRunTimeException(ExceptionConstants.DATA_READ_FAIL_CODE, ExceptionConstants.DATA_READ_FAIL_MSG); } /**回收序列号*/ if(depotItemList!=null&&depotItemList.size()>0){ for(DepotItem depotItem:depotItemList){ //BasicNumber=OperNumber*ratio serialNumberService.cancelSerialNumber(depotItem.getMaterialid(), depotItem.getHeaderid(),(depotItem.getBasicnumber()==null?0:depotItem.getBasicnumber()).intValue(),userInfo); } } } /**删除单据子表数据*/ try{ depotItemMapperEx.batchDeleteDepotItemByDepotHeadIds(new Long []{id}); }catch(Exception e){ logger.error("异常码[{}],异常提示[{}],异常[{}]", ExceptionConstants.DATA_WRITE_FAIL_CODE,ExceptionConstants.DATA_WRITE_FAIL_MSG,e); throw new BusinessRunTimeException(ExceptionConstants.DATA_WRITE_FAIL_CODE, ExceptionConstants.DATA_WRITE_FAIL_MSG); } /**删除单据主表信息*/ batchDeleteDepotHeadByIds(id.toString()); } /** * create by: cjl * description: * 批量删除单据主表及子表信息 * create time: 2019/1/28 17:29 * @Param: id * @return java.lang.Object */ @Transactional(value = "transactionManager", rollbackFor = Exception.class) public void batchDeleteDepotHeadAndDetail(String ids) throws Exception{ logService.insertLog(BusinessConstants.LOG_INTERFACE_NAME_DEPOT_HEAD, new StringBuffer(BusinessConstants.LOG_OPERATION_TYPE_DELETE).append(ids).toString(), ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest()); if(StringUtil.isNotEmpty(ids)){ String [] headIds=ids.split(","); for(int i=0;i