添加出库时开启序列号的商品强制附加使用序列号
This commit is contained in:
@@ -2,14 +2,22 @@ package com.jsh.erp.service.depotHead;
|
||||
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.jsh.erp.constants.BusinessConstants;
|
||||
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.service.depotItem.DepotItemService;
|
||||
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;
|
||||
@@ -33,6 +41,19 @@ public class DepotHeadService {
|
||||
|
||||
@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;
|
||||
|
||||
|
||||
public DepotHead getDepotHead(long id) {
|
||||
return depotHeadMapper.selectByPrimaryKey(id);
|
||||
@@ -45,7 +66,7 @@ public class DepotHeadService {
|
||||
|
||||
public List<DepotHeadVo4List> select(String type, String subType, String number, String beginTime, String endTime, String dhIds, int offset, int rows) {
|
||||
List<DepotHeadVo4List> resList = new ArrayList<DepotHeadVo4List>();
|
||||
List<DepotHeadVo4List> list = depotHeadMapper.selectByConditionDepotHead(type, subType, number, beginTime, endTime, dhIds, offset, rows);
|
||||
List<DepotHeadVo4List> list = depotHeadMapperEx.selectByConditionDepotHead(type, subType, number, beginTime, endTime, dhIds, offset, rows);
|
||||
if (null != list) {
|
||||
for (DepotHeadVo4List dh : list) {
|
||||
if(dh.getOthermoneylist() != null) {
|
||||
@@ -73,7 +94,7 @@ public class DepotHeadService {
|
||||
|
||||
|
||||
public int countDepotHead(String type, String subType, String number, String beginTime, String endTime, String dhIds) {
|
||||
return depotHeadMapper.countsByDepotHead(type, subType, number, beginTime, endTime, dhIds);
|
||||
return depotHeadMapperEx.countsByDepotHead(type, subType, number, beginTime, endTime, dhIds);
|
||||
}
|
||||
|
||||
@Transactional(value = "transactionManager", rollbackFor = Exception.class)
|
||||
@@ -169,11 +190,11 @@ public class DepotHeadService {
|
||||
}
|
||||
|
||||
public Long getMaxId() {
|
||||
return depotHeadMapper.getMaxId();
|
||||
return depotHeadMapperEx.getMaxId();
|
||||
}
|
||||
|
||||
public String findMaterialsListByHeaderId(Long id) {
|
||||
String allReturn = depotHeadMapper.findMaterialsListByHeaderId(id);
|
||||
String allReturn = depotHeadMapperEx.findMaterialsListByHeaderId(id);
|
||||
return allReturn;
|
||||
}
|
||||
|
||||
@@ -194,27 +215,27 @@ public class DepotHeadService {
|
||||
}
|
||||
|
||||
public List<DepotHeadVo4InDetail> findByAll(String beginTime, String endTime, String type, Integer pid, String dids, Integer oId, Integer offset, Integer rows) {
|
||||
return depotHeadMapper.findByAll(beginTime, endTime, type, pid, dids, oId, offset, rows);
|
||||
return depotHeadMapperEx.findByAll(beginTime, endTime, type, pid, dids, oId, offset, rows);
|
||||
}
|
||||
|
||||
public int findByAllCount(String beginTime, String endTime, String type, Integer pid, String dids, Integer oId) {
|
||||
return depotHeadMapper.findByAllCount(beginTime, endTime, type, pid, dids, oId);
|
||||
return depotHeadMapperEx.findByAllCount(beginTime, endTime, type, pid, dids, oId);
|
||||
}
|
||||
|
||||
public List<DepotHeadVo4InOutMCount> findInOutMaterialCount(String beginTime, String endTime, String type, Integer pid, String dids, Integer oId, Integer offset, Integer rows) {
|
||||
return depotHeadMapper.findInOutMaterialCount(beginTime, endTime, type, pid, dids, oId, offset, rows);
|
||||
return depotHeadMapperEx.findInOutMaterialCount(beginTime, endTime, type, pid, dids, oId, offset, rows);
|
||||
}
|
||||
|
||||
public int findInOutMaterialCountTotal(String beginTime, String endTime, String type, Integer pid, String dids, Integer oId) {
|
||||
return depotHeadMapper.findInOutMaterialCountTotal(beginTime, endTime, type, pid, dids, oId);
|
||||
return depotHeadMapperEx.findInOutMaterialCountTotal(beginTime, endTime, type, pid, dids, oId);
|
||||
}
|
||||
|
||||
public List<DepotHeadVo4StatementAccount> findStatementAccount(String beginTime, String endTime, Integer organId, String supType, Integer offset, Integer rows) {
|
||||
return depotHeadMapper.findStatementAccount(beginTime, endTime, organId, supType, offset, rows);
|
||||
return depotHeadMapperEx.findStatementAccount(beginTime, endTime, organId, supType, offset, rows);
|
||||
}
|
||||
|
||||
public int findStatementAccountCount(String beginTime, String endTime, Integer organId, String supType) {
|
||||
return depotHeadMapper.findStatementAccountCount(beginTime, endTime, organId, supType);
|
||||
return depotHeadMapperEx.findStatementAccountCount(beginTime, endTime, organId, supType);
|
||||
}
|
||||
|
||||
public BigDecimal findAllMoney(Integer supplierId, String type, String subType, String mode, String endTime) {
|
||||
@@ -224,12 +245,12 @@ public class DepotHeadService {
|
||||
} else if (mode.equals("合计")) {
|
||||
modeName = "DiscountLastMoney";
|
||||
}
|
||||
return depotHeadMapper.findAllMoney(supplierId, type, subType, modeName, endTime);
|
||||
return depotHeadMapperEx.findAllMoney(supplierId, type, subType, modeName, endTime);
|
||||
}
|
||||
|
||||
public List<DepotHeadVo4List> getDetailByNumber(String number) {
|
||||
List<DepotHeadVo4List> resList = new ArrayList<DepotHeadVo4List>();
|
||||
List<DepotHeadVo4List> list = depotHeadMapper.getDetailByNumber(number);
|
||||
List<DepotHeadVo4List> list = depotHeadMapperEx.getDetailByNumber(number);
|
||||
if (null != list) {
|
||||
for (DepotHeadVo4List dh : list) {
|
||||
if(dh.getOthermoneylist() != null) {
|
||||
@@ -254,4 +275,115 @@ public class DepotHeadService {
|
||||
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 {
|
||||
/**处理单据主表数据*/
|
||||
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(false);
|
||||
depotHeadMapperEx.adddepotHead(depotHead);
|
||||
|
||||
/**入库和出库处理预付款信息*/
|
||||
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());
|
||||
}
|
||||
/**
|
||||
* 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 {
|
||||
/**更新单据主表信息*/
|
||||
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()));
|
||||
depotHeadMapperEx.updatedepotHead(depotHead);
|
||||
/**入库和出库处理预付款信息*/
|
||||
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 {
|
||||
//查询单据主表信息
|
||||
DepotHead depotHead =getDepotHead(id);
|
||||
User userInfo=userService.getCurrentUser();
|
||||
//删除出库数据回收序列号
|
||||
if(BusinessConstants.DEPOTHEAD_TYPE_OUT.equals(depotHead.getType())
|
||||
&&!BusinessConstants.SUB_TYPE_TRANSFER.equals(depotHead.getSubtype())){
|
||||
//查询单据子表列表
|
||||
List<DepotItem> depotItemList = depotItemMapperEx.findDepotItemListBydepotheadId(id,BusinessConstants.ENABLE_SERIAL_NUMBER_ENABLED);
|
||||
/**回收序列号*/
|
||||
if(depotItemList!=null&&depotItemList.size()>0){
|
||||
for(DepotItem depotItem:depotItemList){
|
||||
serialNumberService.cancelSerialNumber(depotItem.getMaterialid(), depotItem.getHeaderid(),depotItem.getOpernumber().intValue(),userInfo);
|
||||
}
|
||||
}
|
||||
}
|
||||
/**删除单据子表数据*/
|
||||
depotItemMapperEx.deleteDepotItemByDepotHeadIds(new Long []{id});
|
||||
/**删除单据主表信息*/
|
||||
deleteDepotHead(id);
|
||||
}
|
||||
/**
|
||||
* 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{
|
||||
if(StringUtil.isNotEmpty(ids)){
|
||||
String [] headIds=ids.split(",");
|
||||
for(int i=0;i<headIds.length;i++){
|
||||
deleteDepotHeadAndDetail(new Long(headIds[i]));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,9 +2,15 @@ package com.jsh.erp.service.depotItem;
|
||||
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.jsh.erp.constants.BusinessConstants;
|
||||
import com.jsh.erp.datasource.entities.*;
|
||||
import com.jsh.erp.datasource.mappers.DepotHeadMapper;
|
||||
import com.jsh.erp.datasource.mappers.DepotItemMapper;
|
||||
import com.jsh.erp.datasource.mappers.DepotItemMapperEx;
|
||||
import com.jsh.erp.datasource.mappers.SerialNumberMapperEx;
|
||||
import com.jsh.erp.service.material.MaterialService;
|
||||
import com.jsh.erp.service.serialNumber.SerialNumberService;
|
||||
import com.jsh.erp.service.user.UserService;
|
||||
import com.jsh.erp.utils.ErpInfo;
|
||||
import com.jsh.erp.utils.QueryUtils;
|
||||
import com.jsh.erp.utils.StringUtil;
|
||||
@@ -17,6 +23,7 @@ import org.springframework.transaction.annotation.Transactional;
|
||||
import javax.annotation.Resource;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@@ -34,7 +41,17 @@ public class DepotItemService {
|
||||
@Resource
|
||||
private DepotItemMapper depotItemMapper;
|
||||
@Resource
|
||||
private DepotItemMapperEx depotItemMapperEx;
|
||||
@Resource
|
||||
private MaterialService materialService;
|
||||
@Resource
|
||||
SerialNumberMapperEx serialNumberMapperEx;
|
||||
@Resource
|
||||
private DepotHeadMapper depotHeadMapper;
|
||||
@Resource
|
||||
SerialNumberService serialNumberService;
|
||||
@Resource
|
||||
private UserService userService;
|
||||
|
||||
public DepotItem getDepotItem(long id) {
|
||||
return depotItemMapper.selectByPrimaryKey(id);
|
||||
@@ -46,11 +63,11 @@ public class DepotItemService {
|
||||
}
|
||||
|
||||
public List<DepotItem> select(String name, Integer type, String remark, int offset, int rows) {
|
||||
return depotItemMapper.selectByConditionDepotItem(name, type, remark, offset, rows);
|
||||
return depotItemMapperEx.selectByConditionDepotItem(name, type, remark, offset, rows);
|
||||
}
|
||||
|
||||
public int countDepotItem(String name, Integer type, String remark) {
|
||||
return depotItemMapper.countsByDepotItem(name, type, remark);
|
||||
return depotItemMapperEx.countsByDepotItem(name, type, remark);
|
||||
}
|
||||
|
||||
@Transactional(value = "transactionManager", rollbackFor = Exception.class)
|
||||
@@ -87,7 +104,7 @@ public class DepotItemService {
|
||||
}
|
||||
|
||||
public List<DepotItemVo4HeaderId> getHeaderIdByMaterial(String materialParam, String depotIds) {
|
||||
return depotItemMapper.getHeaderIdByMaterial(materialParam, depotIds);
|
||||
return depotItemMapperEx.getHeaderIdByMaterial(materialParam, depotIds);
|
||||
}
|
||||
|
||||
public List<DepotItemVo4DetailByTypeAndMId> findDetailByTypeAndMaterialIdList(Map<String, String> map) {
|
||||
@@ -96,7 +113,7 @@ public class DepotItemService {
|
||||
if(!StringUtil.isEmpty(mIdStr)) {
|
||||
mId = Long.parseLong(mIdStr);
|
||||
}
|
||||
return depotItemMapper.findDetailByTypeAndMaterialIdList(mId, QueryUtils.offset(map), QueryUtils.rows(map));
|
||||
return depotItemMapperEx.findDetailByTypeAndMaterialIdList(mId, QueryUtils.offset(map), QueryUtils.rows(map));
|
||||
}
|
||||
|
||||
public int findDetailByTypeAndMaterialIdCounts(Map<String, String> map) {
|
||||
@@ -105,7 +122,7 @@ public class DepotItemService {
|
||||
if(!StringUtil.isEmpty(mIdStr)) {
|
||||
mId = Long.parseLong(mIdStr);
|
||||
}
|
||||
return depotItemMapper.findDetailByTypeAndMaterialIdCounts(mId);
|
||||
return depotItemMapperEx.findDetailByTypeAndMaterialIdCounts(mId);
|
||||
}
|
||||
|
||||
public List<DepotItemVo4Material> findStockNumByMaterialIdList(Map<String, String> map) {
|
||||
@@ -115,7 +132,7 @@ public class DepotItemService {
|
||||
mId = Long.parseLong(mIdStr);
|
||||
}
|
||||
String monthTime = map.get("monthTime");
|
||||
return depotItemMapper.findStockNumByMaterialIdList(mId, monthTime, QueryUtils.offset(map), QueryUtils.rows(map));
|
||||
return depotItemMapperEx.findStockNumByMaterialIdList(mId, monthTime, QueryUtils.offset(map), QueryUtils.rows(map));
|
||||
}
|
||||
|
||||
public int findStockNumByMaterialIdCounts(Map<String, String> map) {
|
||||
@@ -125,7 +142,7 @@ public class DepotItemService {
|
||||
mId = Long.parseLong(mIdStr);
|
||||
}
|
||||
String monthTime = map.get("monthTime");
|
||||
return depotItemMapper.findStockNumByMaterialIdCounts(mId, monthTime);
|
||||
return depotItemMapperEx.findStockNumByMaterialIdCounts(mId, monthTime);
|
||||
}
|
||||
|
||||
@Transactional(value = "transactionManager", rollbackFor = Exception.class)
|
||||
@@ -140,36 +157,36 @@ public class DepotItemService {
|
||||
|
||||
public int findByTypeAndMaterialId(String type, Long mId) {
|
||||
if(type.equals(TYPE)) {
|
||||
return depotItemMapper.findByTypeAndMaterialIdIn(mId);
|
||||
return depotItemMapperEx.findByTypeAndMaterialIdIn(mId);
|
||||
} else {
|
||||
return depotItemMapper.findByTypeAndMaterialIdOut(mId);
|
||||
return depotItemMapperEx.findByTypeAndMaterialIdOut(mId);
|
||||
}
|
||||
}
|
||||
|
||||
public List<DepotItemVo4WithInfoEx> getDetailList(Long headerId) {
|
||||
return depotItemMapper.getDetailList(headerId);
|
||||
return depotItemMapperEx.getDetailList(headerId);
|
||||
}
|
||||
|
||||
public List<DepotItemVo4WithInfoEx> findByAll(String headIds, String materialIds, Integer offset, Integer rows) {
|
||||
return depotItemMapper.findByAll(headIds, materialIds, offset, rows);
|
||||
return depotItemMapperEx.findByAll(headIds, materialIds, offset, rows);
|
||||
}
|
||||
|
||||
public int findByAllCount(String headIds, String materialIds) {
|
||||
return depotItemMapper.findByAllCount(headIds, materialIds);
|
||||
return depotItemMapperEx.findByAllCount(headIds, materialIds);
|
||||
}
|
||||
|
||||
public BigDecimal findByType(String type, Integer ProjectId, Long MId, String MonthTime, Boolean isPrev) {
|
||||
if (TYPE.equals(type)) {
|
||||
if (isPrev) {
|
||||
return depotItemMapper.findByTypeInIsPrev(ProjectId, MId, MonthTime);
|
||||
return depotItemMapperEx.findByTypeInIsPrev(ProjectId, MId, MonthTime);
|
||||
} else {
|
||||
return depotItemMapper.findByTypeInIsNotPrev(ProjectId, MId, MonthTime);
|
||||
return depotItemMapperEx.findByTypeInIsNotPrev(ProjectId, MId, MonthTime);
|
||||
}
|
||||
} else {
|
||||
if (isPrev) {
|
||||
return depotItemMapper.findByTypeOutIsPrev(ProjectId, MId, MonthTime);
|
||||
return depotItemMapperEx.findByTypeOutIsPrev(ProjectId, MId, MonthTime);
|
||||
} else {
|
||||
return depotItemMapper.findByTypeOutIsNotPrev(ProjectId, MId, MonthTime);
|
||||
return depotItemMapperEx.findByTypeOutIsNotPrev(ProjectId, MId, MonthTime);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -177,41 +194,64 @@ public class DepotItemService {
|
||||
public BigDecimal findPriceByType(String type, Integer ProjectId, Long MId, String MonthTime, Boolean isPrev) {
|
||||
if (TYPE.equals(type)) {
|
||||
if (isPrev) {
|
||||
return depotItemMapper.findPriceByTypeInIsPrev(ProjectId, MId, MonthTime);
|
||||
return depotItemMapperEx.findPriceByTypeInIsPrev(ProjectId, MId, MonthTime);
|
||||
} else {
|
||||
return depotItemMapper.findPriceByTypeInIsNotPrev(ProjectId, MId, MonthTime);
|
||||
return depotItemMapperEx.findPriceByTypeInIsNotPrev(ProjectId, MId, MonthTime);
|
||||
}
|
||||
} else {
|
||||
if (isPrev) {
|
||||
return depotItemMapper.findPriceByTypeOutIsPrev(ProjectId, MId, MonthTime);
|
||||
return depotItemMapperEx.findPriceByTypeOutIsPrev(ProjectId, MId, MonthTime);
|
||||
} else {
|
||||
return depotItemMapper.findPriceByTypeOutIsNotPrev(ProjectId, MId, MonthTime);
|
||||
return depotItemMapperEx.findPriceByTypeOutIsNotPrev(ProjectId, MId, MonthTime);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public BigDecimal buyOrSale(String type, String subType, Long MId, String MonthTime, String sumType) {
|
||||
if (SUM_TYPE.equals(sumType)) {
|
||||
return depotItemMapper.buyOrSaleNumber(type, subType, MId, MonthTime, sumType);
|
||||
return depotItemMapperEx.buyOrSaleNumber(type, subType, MId, MonthTime, sumType);
|
||||
} else {
|
||||
return depotItemMapper.buyOrSalePrice(type, subType, MId, MonthTime, sumType);
|
||||
return depotItemMapperEx.buyOrSalePrice(type, subType, MId, MonthTime, sumType);
|
||||
}
|
||||
}
|
||||
|
||||
public BigDecimal findGiftByType(String subType, Integer ProjectId, Long MId, String type) {
|
||||
if (IN.equals(type)) {
|
||||
return depotItemMapper.findGiftByTypeIn(subType, ProjectId, MId);
|
||||
return depotItemMapperEx.findGiftByTypeIn(subType, ProjectId, MId);
|
||||
} else {
|
||||
return depotItemMapper.findGiftByTypeOut(subType, ProjectId, MId);
|
||||
return depotItemMapperEx.findGiftByTypeOut(subType, ProjectId, MId);
|
||||
}
|
||||
}
|
||||
|
||||
@Transactional(value = "transactionManager", rollbackFor = Exception.class)
|
||||
public String saveDetials(String inserted, String deleted, String updated, Long headerId) throws DataAccessException{
|
||||
//转为json
|
||||
public String saveDetials(String inserted, String deleted, String updated, Long headerId) throws Exception{
|
||||
//查询单据主表信息
|
||||
DepotHead depotHead=depotHeadMapper.selectByPrimaryKey(headerId);
|
||||
//获得当前操作人
|
||||
User userInfo=userService.getCurrentUser();
|
||||
//转为json
|
||||
JSONArray insertedJson = JSONArray.parseArray(inserted);
|
||||
JSONArray deletedJson = JSONArray.parseArray(deleted);
|
||||
JSONArray updatedJson = JSONArray.parseArray(updated);
|
||||
/**
|
||||
* 2019-01-28优先处理删除的
|
||||
* 删除的可以继续卖,删除的需要将使用的序列号回收
|
||||
* 插入的需要判断当前货源是否充足
|
||||
* 更新的需要判断货源是否充足
|
||||
* */
|
||||
if (null != deletedJson) {
|
||||
for (int i = 0; i < deletedJson.size(); i++) {
|
||||
//首先回收序列号,如果是调拨,不用处理序列号
|
||||
JSONObject tempDeletedJson = JSONObject.parseObject(deletedJson.getString(i));
|
||||
if(BusinessConstants.DEPOTHEAD_TYPE_OUT.equals(depotHead.getType())
|
||||
&&!BusinessConstants.SUB_TYPE_TRANSFER.equals(depotHead.getSubtype())){
|
||||
DepotItem depotItem = getDepotItem(tempDeletedJson.getLong("Id"));
|
||||
serialNumberMapperEx.cancelSerialNumber(depotItem.getMaterialid(),depotItem.getHeaderid(),depotItem.getOpernumber().intValue(),
|
||||
new Date(),userInfo==null?null:userInfo.getId());
|
||||
}
|
||||
this.deleteDepotItem(tempDeletedJson.getLong("Id"));
|
||||
}
|
||||
}
|
||||
if (null != insertedJson) {
|
||||
for (int i = 0; i < insertedJson.size(); i++) {
|
||||
DepotItem depotItem = new DepotItem();
|
||||
@@ -289,18 +329,25 @@ public class DepotItemService {
|
||||
depotItem.setMtype(tempInsertedJson.getString("MType"));
|
||||
}
|
||||
this.insertDepotItemWithObj(depotItem);
|
||||
/**出库时处理序列号*/
|
||||
if(BusinessConstants.DEPOTHEAD_TYPE_OUT.equals(depotHead.getType())
|
||||
&&!BusinessConstants.SUB_TYPE_TRANSFER.equals(depotHead.getSubtype())){
|
||||
//查询单据子表中开启序列号的数据列表
|
||||
serialNumberService.checkAndUpdateSerialNumber(depotItem,userInfo);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (null != deletedJson) {
|
||||
for (int i = 0; i < deletedJson.size(); i++) {
|
||||
JSONObject tempDeletedJson = JSONObject.parseObject(deletedJson.getString(i));
|
||||
this.deleteDepotItem(tempDeletedJson.getLong("Id"));
|
||||
}
|
||||
}
|
||||
|
||||
if (null != updatedJson) {
|
||||
for (int i = 0; i < updatedJson.size(); i++) {
|
||||
JSONObject tempUpdatedJson = JSONObject.parseObject(updatedJson.getString(i));
|
||||
DepotItem depotItem = this.getDepotItem(tempUpdatedJson.getLong("Id"));
|
||||
//首先回收序列号
|
||||
if(BusinessConstants.DEPOTHEAD_TYPE_OUT.equals(depotHead.getType())
|
||||
&&!BusinessConstants.SUB_TYPE_TRANSFER.equals(depotHead.getSubtype())) {
|
||||
serialNumberMapperEx.cancelSerialNumber(depotItem.getMaterialid(), depotItem.getHeaderid(), depotItem.getOpernumber().intValue(),
|
||||
new Date(),userInfo==null?null:userInfo.getId());
|
||||
}
|
||||
depotItem.setId(tempUpdatedJson.getLong("Id"));
|
||||
depotItem.setMaterialid(tempUpdatedJson.getLong("MaterialId"));
|
||||
depotItem.setMunit(tempUpdatedJson.getString("Unit"));
|
||||
@@ -362,6 +409,12 @@ public class DepotItemService {
|
||||
depotItem.setOtherfield5(tempUpdatedJson.getString("OtherField5"));
|
||||
depotItem.setMtype(tempUpdatedJson.getString("MType"));
|
||||
this.updateDepotItemWithObj(depotItem);
|
||||
/**出库时处理序列号*/
|
||||
if(BusinessConstants.DEPOTHEAD_TYPE_OUT.equals(depotHead.getType())
|
||||
&&!BusinessConstants.SUB_TYPE_TRANSFER.equals(depotHead.getSubtype())){
|
||||
//查询单据子表中开启序列号的数据列表
|
||||
serialNumberService.checkAndUpdateSerialNumber(depotItem,userInfo);
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
@@ -386,4 +439,5 @@ public class DepotItemService {
|
||||
}
|
||||
return unitName;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -4,9 +4,7 @@ import com.alibaba.fastjson.JSONObject;
|
||||
import com.jsh.erp.constants.BusinessConstants;
|
||||
import com.jsh.erp.constants.ExceptionConstants;
|
||||
import com.jsh.erp.datasource.entities.*;
|
||||
import com.jsh.erp.datasource.mappers.MaterialMapperEx;
|
||||
import com.jsh.erp.datasource.mappers.SerialNumberMapper;
|
||||
import com.jsh.erp.datasource.mappers.SerialNumberMapperEx;
|
||||
import com.jsh.erp.datasource.mappers.*;
|
||||
import com.jsh.erp.exception.BusinessRunTimeException;
|
||||
import com.jsh.erp.service.depotItem.DepotItemService;
|
||||
import com.jsh.erp.service.material.MaterialService;
|
||||
@@ -39,9 +37,13 @@ public class SerialNumberService {
|
||||
@Resource
|
||||
private MaterialMapperEx materialMapperEx;
|
||||
@Resource
|
||||
private MaterialMapper materialMapper;
|
||||
@Resource
|
||||
private DepotItemService depotItemService;
|
||||
@Resource
|
||||
private UserService userService;
|
||||
@Resource
|
||||
private DepotItemMapperEx depotItemMapperEx;
|
||||
|
||||
|
||||
public SerialNumber getSerialNumber(long id) {
|
||||
@@ -173,9 +175,9 @@ public class SerialNumberService {
|
||||
serialNumberEx.setMaterialId(getSerialNumberMaterialIdByMaterialName(serialNumberEx.getMaterialName()));
|
||||
}
|
||||
//删除标记,默认未删除
|
||||
serialNumberEx.setDeleteFlag(false);
|
||||
serialNumberEx.setDeleteFlag(BusinessConstants.DELETE_FLAG_EXISTS);
|
||||
//已卖出,默认未否
|
||||
serialNumberEx.setIsSell(false);
|
||||
serialNumberEx.setIsSell(BusinessConstants.IS_SELL_HOLD);
|
||||
Date date=new Date();
|
||||
serialNumberEx.setCreateTime(date);
|
||||
serialNumberEx.setUpdateTime(date);
|
||||
@@ -231,7 +233,7 @@ public class SerialNumberService {
|
||||
|
||||
}
|
||||
//获得唯一商品
|
||||
if(BusinessConstants.MATERIAL_NOT_ENABLE_SERIAL_NUMBER==mlist.get(0).getEnableSerialNumber()){
|
||||
if(BusinessConstants.ENABLE_SERIAL_NUMBER_NOT_ENABLED.equals(mlist.get(0).getEnableSerialNumber())){
|
||||
//商品未开启序列号
|
||||
throw new BusinessRunTimeException(ExceptionConstants.MATERIAL_NOT_ENABLE_SERIAL_NUMBER_CODE,
|
||||
ExceptionConstants.MATERIAL_NOT_ENABLE_SERIAL_NUMBER_MSG);
|
||||
@@ -254,4 +256,66 @@ public class SerialNumberService {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* create by: cjl
|
||||
* description:
|
||||
* 出库时判断序列号库存是否足够,
|
||||
* 同时将对应的序列号绑定单据
|
||||
* create time: 2019/1/24 16:24
|
||||
* @Param: List<DepotItem>
|
||||
* @return void
|
||||
*/
|
||||
public void checkAndUpdateSerialNumber(DepotItem depotItem,User userInfo) throws Exception{
|
||||
if(depotItem!=null){
|
||||
//查询商品下已分配的可用序列号数量
|
||||
int SerialNumberSum= serialNumberMapperEx.countSerialNumberByMaterialIdAndDepotheadId(depotItem.getMaterialid(),null,BusinessConstants.IS_SELL_HOLD);
|
||||
if(depotItem.getOpernumber().intValue()>SerialNumberSum){
|
||||
//获取商品名称
|
||||
Material material= materialMapper.selectByPrimaryKey(depotItem.getMaterialid());
|
||||
throw new BusinessRunTimeException(ExceptionConstants.MATERIAL_SERIAL_NUMBERE_NOT_ENOUGH_CODE,
|
||||
String.format(ExceptionConstants.MATERIAL_SERIAL_NUMBERE_NOT_ENOUGH_MSG,material==null?"":material.getName()));
|
||||
}
|
||||
//商品下序列号充足,分配序列号
|
||||
sellSerialNumber(depotItem.getMaterialid(),depotItem.getHeaderid(),depotItem.getOpernumber().intValue(),userInfo);
|
||||
}
|
||||
|
||||
}
|
||||
/**
|
||||
*
|
||||
*
|
||||
* */
|
||||
/**
|
||||
* create by: cjl
|
||||
* description:
|
||||
* 卖出序列号
|
||||
* create time: 2019/1/25 9:17
|
||||
* @Param: materialId
|
||||
* @Param: depotheadId
|
||||
* @Param: isSell 卖出'1'
|
||||
* @Param: Count 卖出或者赎回的数量
|
||||
* @return com.jsh.erp.datasource.entities.SerialNumberEx
|
||||
*/
|
||||
@Transactional(value = "transactionManager", rollbackFor = Exception.class)
|
||||
public int sellSerialNumber(Long materialId, Long depotheadId,int count,User user) throws Exception{
|
||||
return serialNumberMapperEx.sellSerialNumber(materialId,depotheadId,count,new Date(),user==null?null:user.getId());
|
||||
}
|
||||
|
||||
/**
|
||||
* create by: cjl
|
||||
* description:
|
||||
* 赎回序列号
|
||||
* create time: 2019/1/25 9:17
|
||||
* @Param: materialId
|
||||
* @Param: depotheadId
|
||||
* @Param: isSell 赎回'0'
|
||||
* @Param: Count 卖出或者赎回的数量
|
||||
* @return com.jsh.erp.datasource.entities.SerialNumberEx
|
||||
*/
|
||||
@Transactional(value = "transactionManager", rollbackFor = Exception.class)
|
||||
public int cancelSerialNumber(Long materialId, Long depotheadId,int count,User user) throws Exception{
|
||||
return serialNumberMapperEx.cancelSerialNumber(materialId,depotheadId,count,new Date(),user==null?null:user.getId());
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -78,8 +78,13 @@ public class SupplierService {
|
||||
@Transactional(value = "transactionManager", rollbackFor = Exception.class)
|
||||
public int updateAdvanceIn(Long supplierId, BigDecimal advanceIn){
|
||||
Supplier supplier = supplierMapper.selectByPrimaryKey(supplierId);
|
||||
supplier.setAdvancein(supplier.getAdvancein().add(advanceIn)); //增加预收款的金额,可能增加的是负值
|
||||
return supplierMapper.updateByPrimaryKeySelective(supplier);
|
||||
if(supplier!=null){
|
||||
supplier.setAdvancein(supplier.getAdvancein().add(advanceIn)); //增加预收款的金额,可能增加的是负值
|
||||
return supplierMapper.updateByPrimaryKeySelective(supplier);
|
||||
}else{
|
||||
return 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public List<Supplier> findBySelectCus() {
|
||||
|
||||
Reference in New Issue
Block a user