|
|
@@ -1,5 +1,6 @@
|
|
|
package com.usoftchina.saas.sale.service.impl;
|
|
|
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
|
import com.github.pagehelper.PageHelper;
|
|
|
import com.github.pagehelper.PageInfo;
|
|
|
import com.netflix.discovery.converters.Auto;
|
|
|
@@ -18,13 +19,13 @@ import com.usoftchina.saas.page.PageRequest;
|
|
|
import com.usoftchina.saas.sale.dto.SaleDTO;
|
|
|
import com.usoftchina.saas.sale.dto.SaleDetailDTO;
|
|
|
import com.usoftchina.saas.sale.dto.SaleFormDTO;
|
|
|
-import com.usoftchina.saas.sale.mapper.SaleListMapper;
|
|
|
-import com.usoftchina.saas.sale.mapper.SaleMapper;
|
|
|
-import com.usoftchina.saas.sale.mapper.SaledetailMapper;
|
|
|
+import com.usoftchina.saas.sale.mapper.*;
|
|
|
import com.usoftchina.saas.sale.po.Sale;
|
|
|
import com.usoftchina.saas.sale.po.SaleDetail;
|
|
|
import com.usoftchina.saas.sale.po.SaleList;
|
|
|
import com.usoftchina.saas.sale.service.SaleService;
|
|
|
+import com.usoftchina.saas.storage.entities.ProdIODetail;
|
|
|
+import com.usoftchina.saas.storage.entities.ProdInOut;
|
|
|
import com.usoftchina.saas.utils.BeanMapper;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
@@ -52,6 +53,10 @@ public class SaleServiceImpl implements SaleService{
|
|
|
private MessageLogService messageLogService;
|
|
|
@Autowired
|
|
|
private MaxnumberService maxnumberService;
|
|
|
+ @Autowired
|
|
|
+ private ProdInOutMapper prodInOutMapper;
|
|
|
+ @Autowired
|
|
|
+ private ProdIODetailMapper prodIODetailMapper;
|
|
|
|
|
|
@Override
|
|
|
public PageInfo<SaleList> getListData(PageRequest page, ListReqDTO req) {
|
|
|
@@ -285,7 +290,7 @@ public class SaleServiceImpl implements SaleService{
|
|
|
}
|
|
|
Integer count = "0".equals(String.valueOf(id)) ? saleMapper.validateCodeWhenInsert(code) :
|
|
|
saleMapper.validateCodeWhenUpdate(code, id);
|
|
|
- return maxnumberService.pushMaxnubmer(count, code, "Purchase");
|
|
|
+ return maxnumberService.pushMaxnubmer(count, code, "Purchase").getData();
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -338,126 +343,125 @@ public class SaleServiceImpl implements SaleService{
|
|
|
@Override
|
|
|
public void open(long id) {
|
|
|
List<SaleDetail> saleDetailList = saledetailMapper.selectByFK(id);
|
|
|
- /* //部分入库、全部入库
|
|
|
+ //部分入库、全部入库
|
|
|
int partTurnCount = 0,turnCount = 0;
|
|
|
if(saleDetailList != null && saleDetailList.size() > 0){
|
|
|
for(SaleDetail saleDetail : saleDetailList){
|
|
|
- //入库数大于等于采购数
|
|
|
- if(purchaseDetail.getPd_acceptqty() >= purchaseDetail.getPd_qty()){
|
|
|
+ //
|
|
|
+ if(saleDetail.getSd_yqty() >= saleDetail.getSd_qty()){
|
|
|
turnCount++;
|
|
|
+
|
|
|
+ }else if(saleDetail.getSd_yqty() > 0 && saleDetail.getSd_yqty() < saleDetail.getSd_qty()){
|
|
|
// 0 < 入库数 < 采购数
|
|
|
partTurnCount++;
|
|
|
- }else if(purchaseDetail.getPd_acceptqty() > 0 && purchaseDetail.getPd_acceptqty() < purchaseDetail.getPd_qty()){
|
|
|
}
|
|
|
}
|
|
|
//构造更新对象
|
|
|
- Purchase purchase = new Purchase();
|
|
|
- purchase.setId(id);
|
|
|
- purchase.setPu_acceptstatuscode("UNTURNIN");
|
|
|
- purchase.setPu_acceptstatus("未入库");
|
|
|
+ Sale sale = new Sale();
|
|
|
+ sale.setId(id);
|
|
|
+ sale.setSa_sendstatus(Status.UNTURNOUT.getDisplay());
|
|
|
+ sale.setSa_sendstatuscode(Status.UNTURNOUT.name());
|
|
|
if(partTurnCount > 0){
|
|
|
- purchase.setPu_acceptstatuscode("PART2IN");
|
|
|
- purchase.setPu_acceptstatus("部分入库");
|
|
|
+ sale.setSa_sendstatus(Status.PARTOUT.getDisplay());
|
|
|
+ sale.setSa_sendstatuscode(Status.PARTOUT.name());
|
|
|
}
|
|
|
- if(turnCount == purchaseDetailList.size()){
|
|
|
- purchase.setPu_acceptstatus("已入库");
|
|
|
- purchase.setPu_acceptstatuscode("TURNIN");
|
|
|
+ if(turnCount == saleDetailList.size()){
|
|
|
+ sale.setSa_sendstatus(Status.TURNOUT.getDisplay());
|
|
|
+ sale.setSa_sendstatuscode(Status.TURNOUT.name());
|
|
|
}
|
|
|
- purchaseMapper.updateByPrimaryKeySelective(purchase);
|
|
|
+ saleMapper.updateByPrimaryKeySelective(sale);
|
|
|
DocBaseDTO docBaseDTO = getBaseDTOById(id);
|
|
|
//日志
|
|
|
messageLogService.open(docBaseDTO);
|
|
|
- }*/
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public void turnOut(Long id) {
|
|
|
-
|
|
|
- }/*{
|
|
|
if (null == id) {
|
|
|
return;
|
|
|
}
|
|
|
+ Integer count = 0;
|
|
|
+ double pdQty = 0;
|
|
|
+ double pdYqty = 0;
|
|
|
Sale sale = saleMapper.selectByPrimaryKey(id);
|
|
|
- Integer count=0;
|
|
|
- double pdQty=0, pdYqty=0;
|
|
|
+ List<SaleDetail> details = saledetailMapper.selectByFK(id);
|
|
|
//检查转单状态
|
|
|
- // String acceptstatus = sale.getPu_acceptstatuscode();
|
|
|
-
|
|
|
- if ("TURNIN".equals(acceptstatus)){
|
|
|
- return Result.error(ExceptionCode.TURNIN_EXIST);
|
|
|
+ String statuscode = sale.getSa_sendstatuscode();
|
|
|
+ if (Status.TURNOUT.name().equals(statuscode)){
|
|
|
+ throw new BizException(BizExceptionCode.SALE_ALL_TURNOUT);
|
|
|
}
|
|
|
- if ("CLOSED".equals(acceptstatus)){
|
|
|
- return Result.error(ExceptionCode.CLOSED_EXIST);
|
|
|
+ if (Status.CLOSE.name().equals(statuscode)){
|
|
|
+ throw new BizException(BizExceptionCode.SALE_CLOSE);
|
|
|
}
|
|
|
|
|
|
- List<PurchaseDetail> purchaseDetails = purchasedetailMapper.selectByFK(id);
|
|
|
-
|
|
|
//检查从表
|
|
|
- for (PurchaseDetail purchaseDetail : purchaseDetails) {
|
|
|
- pdQty = purchaseDetail.getPd_qty();
|
|
|
- pdYqty = purchaseDetail.getPd_yqty();
|
|
|
- if (pdQty-pdYqty>0){
|
|
|
+ for (SaleDetail detail : details) {
|
|
|
+ pdQty = detail.getSd_qty();
|
|
|
+ pdYqty = detail.getSd_yqty();
|
|
|
+ if (pdQty - pdYqty > 0){
|
|
|
count++;
|
|
|
}
|
|
|
}
|
|
|
//判断可转数
|
|
|
if (count==0){
|
|
|
- return Result.error(ExceptionCode.TURNINNUM_NOT_EXIST);
|
|
|
+ throw new BizException(BizExceptionCode.SALE_YQTYBEYONDQTY);
|
|
|
}
|
|
|
+
|
|
|
//插入验收单主表
|
|
|
ProdInOut prodInOut = new ProdInOut();
|
|
|
//生成单号
|
|
|
- String piInoutno ="YS0001";
|
|
|
+ Object data = maxnumberService.getMaxnumber("Sale", true).getData();
|
|
|
+ JSONObject parse = (JSONObject)JSONObject.parse(data.toString());
|
|
|
+ String pi_inoutno = String.valueOf(parse.get("code"));
|
|
|
|
|
|
- prodInOut.setPi_inoutno(piInoutno);
|
|
|
- prodInOut.setPi_class("采购验收单");
|
|
|
+ prodInOut.setPi_inoutno(pi_inoutno);
|
|
|
+ prodInOut.setPi_class("出货单");
|
|
|
prodInOut.setPi_date(new Date());
|
|
|
- prodInOut.setPi_status("未审核");
|
|
|
- prodInOut.setPi_statuscode("UNAUDITED");
|
|
|
+ prodInOut.setPi_status(Status.UNAUDITED.getDisplay());
|
|
|
+ prodInOut.setPi_statuscode(Status.UNAUDITED.name());
|
|
|
prodInOut.setPi_recorddate(new Date());
|
|
|
- prodInOut.setPi_vendid(purchase.getPu_vendid());
|
|
|
- prodInOut.setPi_vendcode(purchase.getPu_vendcode());
|
|
|
- prodInOut.setPi_vendname(purchase.getPu_vendname());
|
|
|
- prodInOut.setPi_puid(purchase.getId().intValue());
|
|
|
- prodInOut.setPi_pucode(purchase.getPu_code());
|
|
|
+ prodInOut.setPi_custid(sale.getSa_custid());
|
|
|
+ prodInOut.setPi_custcode(sale.getSa_custcode());
|
|
|
+ prodInOut.setPi_custname(sale.getSa_custname());
|
|
|
+ prodInOut.setPi_said(sale.getId());
|
|
|
+ prodInOut.setPi_sacode(sale.getSa_code());
|
|
|
//设置公司id
|
|
|
- prodInOut.setCompanyId(purchase.getCompanyId());
|
|
|
+ prodInOut.setCompanyId(sale.getCompanyId());
|
|
|
|
|
|
prodInOutMapper.insertSelective(prodInOut);
|
|
|
-
|
|
|
- //插入验收单从表
|
|
|
+ //插入出货单从表
|
|
|
long pi_id = prodInOut.getId();
|
|
|
|
|
|
- for (int i=0;i<purchaseDetails.size();i++){
|
|
|
- PurchaseDetail purchaseDetail =purchaseDetails.get(i);
|
|
|
+ for (int i=0;i<details.size();i++){
|
|
|
+ SaleDetail saleDetail =details.get(i);
|
|
|
ProdIODetail prodIODetail = new ProdIODetail();
|
|
|
- if ((int) (purchaseDetail.getPd_qty()-purchaseDetail.getPd_yqty())>0){
|
|
|
- prodIODetail.setPd_piid(pi_id);
|
|
|
- prodIODetail.setPd_inoutno(piInoutno);
|
|
|
- prodIODetail.setPd_piclass("采购验收单");
|
|
|
- prodIODetail.setPd_pdno(i);
|
|
|
- prodIODetail.setPd_orderid(purchaseDetail.getId().intValue());
|
|
|
- prodIODetail.setPd_ordercode(purchase.getPu_code());
|
|
|
- prodIODetail.setPd_orderdetno(purchaseDetail.getPd_detno());
|
|
|
- prodIODetail.setPd_orderprice(purchaseDetail.getPd_price());
|
|
|
- prodIODetail.setPd_prodid(purchaseDetail.getPd_prodid());
|
|
|
- prodIODetail.setPd_prodcode(purchaseDetail.getPd_prodcode());
|
|
|
- //公司id
|
|
|
- prodIODetail.setCompanyId(purchaseDetail.getCompanyId());
|
|
|
- //本次转单数
|
|
|
- prodIODetail.setPd_inqty((int) (purchaseDetail.getPd_qty()-purchaseDetail.getPd_yqty()));
|
|
|
- prodIODetailMapper.insertSelective(prodIODetail);
|
|
|
- //更新已转数
|
|
|
- purchaseDetail.setPd_yqty(purchaseDetail.getPd_qty());
|
|
|
- purchasedetailMapper.updateByPrimaryKeySelective(purchaseDetail);
|
|
|
- }
|
|
|
+ prodIODetail.setPd_piid(pi_id);
|
|
|
+ prodIODetail.setPd_inoutno(pi_inoutno);
|
|
|
+ prodIODetail.setPd_piclass("出货单");
|
|
|
+ prodIODetail.setPd_pdno(i);
|
|
|
+ prodIODetail.setPd_orderid(sale.getId());
|
|
|
+ prodIODetail.setPd_ordercode(sale.getSa_code());
|
|
|
+ prodIODetail.setPd_orderdetno(saleDetail.getSd_detno());
|
|
|
+ prodIODetail.setPd_orderprice(saleDetail.getSd_price());
|
|
|
+ prodIODetail.setPd_prodid(saleDetail.getSd_prodid());
|
|
|
+ prodIODetail.setPd_prodcode(saleDetail.getSd_prodcode());
|
|
|
+ //公司id
|
|
|
+ prodIODetail.setCompanyId(saleDetail.getCompanyId());
|
|
|
+ //本次转单数
|
|
|
+ prodIODetail.setPd_inqty((saleDetail.getSd_qty()-saleDetail.getSd_yqty()));
|
|
|
+ prodIODetailMapper.insertSelective(prodIODetail);
|
|
|
+ //更新已转数
|
|
|
+ saleDetail.setSd_yqty(saleDetail.getSd_qty());
|
|
|
+ saledetailMapper.updateByPrimaryKeySelective(saleDetail);
|
|
|
+
|
|
|
}
|
|
|
//更新主表入库状态
|
|
|
- purchase.setPu_acceptstatus("已入库");
|
|
|
- purchase.setPu_acceptstatuscode("TURNIN");
|
|
|
+ sale.setSa_sendstatus(Status.TURNOUT.getDisplay());
|
|
|
+ sale.setSa_sendstatuscode(Status.TURNOUT.name());
|
|
|
//更新存在字段
|
|
|
- int affect = getMapper().updateByPrimaryKeySelective(purchase);
|
|
|
- }*/
|
|
|
+ saleMapper.updateByPrimaryKeySelective(sale);
|
|
|
+ }
|
|
|
|
|
|
private void singleUnAudit(Long id) {
|
|
|
Sale sale = new Sale();
|