Browse Source

采购入库

master
ruanqi 2 years ago
parent
commit
e1eddc736d
  1. 142
      src/main/java/com/spring/modules/material/controller/ProductionStockController.java
  2. 55
      src/main/java/com/spring/modules/material/dao/ProductionStockMapper.java
  3. 279
      src/main/java/com/spring/modules/material/service/Impl/ProductionStockServiceImpl.java
  4. 38
      src/main/java/com/spring/modules/material/service/ProductionStockService.java
  5. 166
      src/main/java/com/spring/modules/production/entity/SoFinalRollOutData.java
  6. 143
      src/main/resources/mapper/material/ProductionStockMapper.xml

142
src/main/java/com/spring/modules/material/controller/ProductionStockController.java

@ -0,0 +1,142 @@
package com.spring.modules.material.controller;
import com.spring.common.utils.PageUtils;
import com.spring.common.utils.R;
import com.spring.modules.material.data.*;
import com.spring.modules.material.service.ProductionStockService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
@RequestMapping(value = "/productionStock")
public class ProductionStockController {
@Autowired
private ProductionStockService productionStockService;
/**
* @Description TODO
* @Title searchTransHeader
* @param data
* @author rq
* @date 2024/5/31 11:45
* @return R
* @throw
*/
@PostMapping(value="/searchTransHeader")
public R searchTransHeader(@RequestBody TransHeaderData data) {
PageUtils page = productionStockService.searchTransHeader(data);
return R.ok().put("page", page);
}
/**
* @Description TODO
* @Title searchTransDetail
* @param data
* @author rq
* @date 2024/5/31 15:23
* @return R
* @throw
*/
@PostMapping(value="/searchTransDetail")
public R searchTransDetail(@RequestBody TransHeaderData data){
List<TransDetailData> rows = productionStockService.searchTransDetail(data);
return R.ok().put("rows", rows);
}
@PostMapping(value="/searchTransDetailSub")
public R searchTransDetailSub(@RequestBody TransHeaderData data){
List<TransDetailSubData> rows = productionStockService.searchTransDetailSub(data);
return R.ok().put("rows", rows);
}
@PostMapping(value="/getWareHouseList")
public R getWareHouseList(@RequestBody WareHouseSearchOutData data){
List<WareHouseSearchOutData> rows = productionStockService.getWareHouseList(data);
return R.ok().put("rows", rows);
}
/**
* @Description 保存入库单抬头
* @Title saveTransHeaderData
* @param data
* @author rq
* @date 2024/5/31 17:37
* @return R
* @throw
*/
@PostMapping(value="/saveTransHeaderData")
public R saveTransHeaderData(@RequestBody TransHeaderData data) {
String result= productionStockService.saveTransHeaderData(data);
return R.ok().put("transNo",result);
}
/**
* @Description TODO
* @Title searchTransDetailAndSubCach
* @param data
* @author rq
* @date 2024/6/4 11:31
* @return R
* @throw
*/
@PostMapping(value="/searchTransDetailAndSubCach")
public R searchTransDetailAndSubCach(@RequestBody TransHeaderData data) {
TransHeaderData row= productionStockService.searchTransHeaderData(data);
List<TransDetailsubCachData> rows =productionStockService.searchTransDetailsubCachData(data);
return R.ok().put("row",row).put("rows",rows);
}
/**
* @Description 手工创建缓存卷
* @Title createNewCachRoll
* @param data
* @author rq
* @date 2024/6/4 14:16
* @return R
* @throw
*/
@PostMapping(value="/saveStockCach")
public R saveStockCach(@RequestBody TransDetailsubCachData data) {
String reStr= productionStockService.saveStockCach(data);
return R.ok().put("str",reStr);
}
@PostMapping(value="/deleteSubCach")
public R deleteSubCach(@RequestBody TransDetailsubCachData data) {
productionStockService.deleteSubCach(data);
return R.ok();
}
/**
* @Description TODO
* @Title finalSaveTransHeaderDetail
* @param data
* @author rq
* @date 2024/6/4 15:48
* @return R
* @throw
*/
@PostMapping(value="/finalSaveTransHeaderDetail")
public R finalSaveTransHeaderDetail(@RequestBody TransHeaderData data) {
productionStockService.finalSaveTransHeaderDetail(data);
return R.ok();
}
/**
* @Description 删除入库主表
* @Title deleteTransHeaderData
* @param data
* @author rq
* @date 2024/6/5 14:55
* @return R
* @throw
*/
@PostMapping(value="/deleteTransHeaderData")
public R deleteTransHeaderData(@RequestBody TransHeaderData data) {
productionStockService.deleteTransHeaderData(data);
return R.ok();
}
}

55
src/main/java/com/spring/modules/material/dao/ProductionStockMapper.java

@ -0,0 +1,55 @@
package com.spring.modules.material.dao;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.spring.modules.material.data.*;
import com.spring.modules.production.entity.SoFinalRollOutData;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import java.util.List;
@Mapper
@Repository
public interface ProductionStockMapper {
IPage<TransHeaderData> searchTransHeader(Page<TransHeaderData> page, @Param("query") TransHeaderData data);
List<TransDetailData> searchTransDetail(TransHeaderData data);
List<TransDetailSubData> searchTransDetailSub(TransHeaderData data);
List<WareHouseSearchOutData> getWareHouseList(WareHouseSearchOutData inData);
TransHeaderData searchTransHeaderData(TransHeaderData data);
List<TransDetailsubCachData> searchTransDetailsubCachData(TransHeaderData inData);
void saveIssureCach(TransDetailsubCachData data);
List<TransDetailData> getDetailDataByCach(TransHeaderData inData);
Double getNextTransHeaderSeqNo (TransHeaderData inData);
void saveTransDetailData(TransDetailData inData);
void batchInsertTransDetailSub( List<TransDetailSubData> inlist);
void deleteTransCach(TransHeaderData inData);
void deleteSubCach(TransDetailsubCachData inData);
void deleteTransHeaderData(TransHeaderData inData);
void updateTransHeader(TransHeaderData inData);
List<TransDetailSubData> checkTransDetailSubIsScan(@Param("site") String site,@Param("rollNo")String rollNo);
SoFinalRollOutData getFinalRoll(@Param("site") String site,@Param("rollNo")String rollNo);
void updateFinalRollStatus(@Param("site") String site,@Param("rollNo")String rollNo,@Param("statusCode") Integer statusCode,@Param("status")String status);
}

279
src/main/java/com/spring/modules/material/service/Impl/ProductionStockServiceImpl.java

@ -0,0 +1,279 @@
package com.spring.modules.material.service.Impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.spring.common.utils.DateUtil;
import com.spring.common.utils.PageUtils;
import com.spring.modules.base.dao.NormalSearchMapper;
import com.spring.modules.base.entity.InventoryStockRoll;
import com.spring.modules.base.service.InventoryStockRollService;
import com.spring.modules.base.service.TransNoControlService;
import com.spring.modules.material.dao.ProductionStockMapper;
import com.spring.modules.material.data.*;
import com.spring.modules.material.service.IssureSoService;
import com.spring.modules.material.service.ProductionStockService;
import com.spring.modules.production.entity.SoFinalRollOutData;
import com.spring.modules.production.mapper.ShopOrderMapper;
import com.spring.modules.production.vo.ShopOrderVo;
import com.spring.modules.report.dao.ProcedureDao;
import com.spring.modules.sys.entity.SysUserEntity;
import org.apache.shiro.SecurityUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
@Service
public class ProductionStockServiceImpl implements ProductionStockService {
@Autowired
private InventoryStockRollService inventoryStockRollService;
@Autowired
private ShopOrderMapper shopOrderMapper;
@Autowired
private ProcedureDao procedureDao;
@Autowired
private NormalSearchMapper normalSearchMapper;
@Autowired
private ProductionStockMapper productionStockMapper;
@Autowired
private TransNoControlService transNoControlService;
@Override
public PageUtils searchTransHeader(TransHeaderData data) {
IPage<TransHeaderData> resultList = this.productionStockMapper.searchTransHeader(new Page<TransHeaderData>(data.getPage(), data.getLimit()), data);
return new PageUtils(resultList);
}
@Override
public List<TransDetailData> searchTransDetail(TransHeaderData data){
return productionStockMapper.searchTransDetail(data);
}
@Override
public List<TransDetailSubData> searchTransDetailSub(TransHeaderData data){
return productionStockMapper.searchTransDetailSub(data);
}
@Override
public List<WareHouseSearchOutData> getWareHouseList(WareHouseSearchOutData inData){
return productionStockMapper.getWareHouseList(inData);
}
@Override
@Transactional
public String saveTransHeaderData(TransHeaderData inData){
ShopOrderVo shopOrder=new ShopOrderVo();
shopOrder.setSite(inData.getSite());
shopOrder.setOrderNo(inData.getOrderRef1());
List<ShopOrderVo> searchShopOrder = shopOrderMapper.selectShopOrderList(shopOrder);
if(searchShopOrder.size()==0){
throw new RuntimeException("生产订单不存在!");
}
if("0".equals(inData.getTransNo())){
// 公共参数
String site = inData.getSite();
String wareHouseId = inData.getWarehouseID();
String transTypeDb = "SR";
String transDate = DateUtil.getStringDate(inData.getTransDate(),"yyyy-MM-dd");
String userId = inData.getEnterBy();
String receiver = inData.getReceiver();
String partnerType = "";
String partnerID = "";
String remark="";
String orderNo=inData.getOrderRef1();
String projectID="";
List<Object> params = new ArrayList<>();
params.add(site);
params.add(wareHouseId);
params.add(transTypeDb);
params.add(transDate);
params.add(userId);
params.add(receiver);
params.add(partnerType);
params.add(partnerID);
params.add(remark);
params.add(orderNo);
params.add(projectID);
// 执行方法
List<Map<String, Object>> resultList = procedureDao.getProcedureData("LNJ_Create_TransHeader", params);
String code = String.valueOf(resultList.get(0).get("result_code"));
if ("400".equalsIgnoreCase(code)) {
String msg = String.valueOf(resultList.get(0).get("result_msg"));
throw new RuntimeException(msg);
}
return String.valueOf(resultList.get(0).get("result_msg"));
}else {
List<TransDetailData> detailList= productionStockMapper.searchTransDetail(inData);
if(detailList.size()>0){
throw new RuntimeException("入库单有明细记录无法修改");
}
List<TransDetailsubCachData> searchTransDetailsubCachData= productionStockMapper.searchTransDetailsubCachData(inData);
if(searchTransDetailsubCachData.size()>0){
throw new RuntimeException("入库单有扫描标签记录无法修改");
}
// if(inData.getPartnerID()!=null&&!"".equals(inData.getPartnerID())){
// Supplier checkSupplier=new Supplier();
// checkSupplier.setSite(inData.getSite());
// checkSupplier.setActive("Y");
// checkSupplier.setSupplierID(inData.getPartnerID());
// List<Supplier> checkSupplierList=normalSearchMapper.getSupplierListForSearch(checkSupplier);
// if(checkSupplierList.size()==0){
// throw new RuntimeException("供应商不可用或者不存在");
// }
// }
SysUserEntity sysUserEntity=new SysUserEntity();
sysUserEntity.setUsername(inData.getReceiver());
List<SysUserEntity> getUserListForSearch=normalSearchMapper.getUserListForSearch(sysUserEntity);
if(getUserListForSearch.size()==0){
throw new RuntimeException("经手人不可用或者不存在");
}
productionStockMapper.updateTransHeader(inData);
return inData.getTransNo();
}
}
@Override
public TransHeaderData searchTransHeaderData(TransHeaderData inData){
return productionStockMapper.searchTransHeaderData(inData);
}
@Override
public List<TransDetailsubCachData> searchTransDetailsubCachData(TransHeaderData inData){
return productionStockMapper.searchTransDetailsubCachData(inData);
}
@Override
@Transactional
public String saveStockCach(TransDetailsubCachData inData){
TransHeaderData searchData=new TransHeaderData();
searchData.setSite(inData.getSite());
searchData.setTransNo(inData.getTransNo());
TransHeaderData transHeaderData=productionStockMapper.searchTransHeaderData(searchData);
if(transHeaderData==null){
throw new RuntimeException("入库单号有误!");
}
// List<InventoryStockRoll> InventoryStockRollList = inventoryStockRollService.lambdaQuery()
// .eq(InventoryStockRoll::getSite, inData.getSite()).gt(InventoryStockRoll::getQtyOnHand,0)
// .eq(InventoryStockRoll::getRollNo,inData.getRollNo()).list();
// if(InventoryStockRollList.size()==0){
// throw new RuntimeException("卷号不存在或者不在库!");
// }
SoFinalRollOutData getFinalRoll=productionStockMapper.getFinalRoll(inData.getSite(),inData.getRollNo());
if(getFinalRoll==null){
throw new RuntimeException("卷号不存在!");
}
if(getFinalRoll.getStatusCode()!=0){
throw new RuntimeException("卷状态不为已创建无法入库!");
}
ShopOrderVo shopOrder=new ShopOrderVo();
shopOrder.setSite(inData.getSite());
shopOrder.setOrderNo(inData.getOrderNo());
List<ShopOrderVo> searchShopOrder = shopOrderMapper.selectShopOrderList(shopOrder);
if(searchShopOrder.size()==0){
throw new RuntimeException("生产订单不存在!");
}
if (!getFinalRoll.getOrderNo().equals(searchShopOrder.get(0).getOrderNo())) {
throw new RuntimeException("该卷不属于入库单所选的生产订单!");
}
// if (!getFinalRoll.getPartNo().equals(searchShopOrder.get(0).getPartNo())) {
// throw new RuntimeException("卷的物料与生产订单不符!");
// }
SysUserEntity sysUserEntity = (SysUserEntity) SecurityUtils.getSubject().getPrincipal();
List<TransDetailSubData> searchTransDetailSub=productionStockMapper.checkTransDetailSubIsScan(inData.getSite(),inData.getRollNo());
if(searchTransDetailSub.size()>0){
throw new RuntimeException("该卷号已被入库单号:"+searchTransDetailSub.get(0).getTransNo()+"扫描进缓存,无法再次扫描!");
}
TransDetailsubCachData saveData=new TransDetailsubCachData();
saveData.setSite(inData.getSite());
saveData.setTransNo(inData.getTransNo());
saveData.setPartNo(getFinalRoll.getPartNo());
saveData.setRollNo(getFinalRoll.getFinalRollNo());
saveData.setRollQty(new BigDecimal(getFinalRoll.getRollQty()));
saveData.setBatchNo(inData.getOrderNo()+ DateUtil.getStringDate(new Date(),"yyyyMMdd"));
saveData.setLocationID(inData.getLocationID());
saveData.setManufactureDate(getFinalRoll.getCreatedDate());
saveData.setExpiredDate(null);
saveData.setEnterBy(sysUserEntity.getUsername());
productionStockMapper.saveIssureCach(saveData);
String reStr="";
return reStr;
}
@Override
public void deleteSubCach(TransDetailsubCachData inData){
productionStockMapper.deleteSubCach(inData);
}
@Override
public void deleteTransHeaderData(TransHeaderData inData){
List<TransDetailData> detailList= productionStockMapper.searchTransDetail(inData);
if(detailList.size()>0){
throw new RuntimeException("入库单有明细记录无法删除");
}
List<TransDetailsubCachData> searchTransDetailsubCachData= productionStockMapper.searchTransDetailsubCachData(inData);
if(searchTransDetailsubCachData.size()>0){
throw new RuntimeException("入库单有扫描标签记录无法删除");
}
productionStockMapper.deleteTransHeaderData(inData);
}
@Override
@Transactional
public void finalSaveTransHeaderDetail(TransHeaderData inData){
SysUserEntity sysUserEntity = (SysUserEntity) SecurityUtils.getSubject().getPrincipal();
String userName=sysUserEntity.getUsername();
inData.setEnterName(userName);
//
List<TransDetailData> transDetailData=productionStockMapper.getDetailDataByCach(inData);
if(transDetailData.size()==0){
throw new RuntimeException("没有缓存卷需要保存");
}
for (int i = 0; i < transDetailData.size(); i++) {
Double getNextTransHeaderSeqNo=productionStockMapper.getNextTransHeaderSeqNo(inData);
transDetailData.get(i).setItemNo(getNextTransHeaderSeqNo);
productionStockMapper.saveTransDetailData(transDetailData.get(i));
}
TransHeaderData getHeader= productionStockMapper.searchTransHeaderData(inData);
List<TransDetailsubCachData> subData=productionStockMapper.searchTransDetailsubCachData(inData);
List<TransDetailSubData> inList=new ArrayList<>();
for (int i = 0; i < transDetailData.size(); i++) {
Double seqNo=0.0;
for (int j = 0; j <subData.size() ; j++) {
if (transDetailData.get(i).getPartNo().equals(subData.get(j).getPartNo())&&
transDetailData.get(i).getLocationID().equals(subData.get(j).getLocationID())&&
transDetailData.get(i).getBatchNo().equals(subData.get(j).getBatchNo()) &&
transDetailData.get(i).getManufactureDate().equals(subData.get(j).getManufactureDate()) ){
seqNo=seqNo+1.0;
TransDetailSubData transDetailSubData=new TransDetailSubData();
transDetailSubData.setTransNo(transDetailData.get(i).getTransNo());
transDetailSubData.setSite(transDetailData.get(i).getSite());
transDetailSubData.setItemNo(transDetailData.get(i).getItemNo().floatValue());
transDetailSubData.setSeqNo(seqNo.floatValue());
transDetailSubData.setLocationID(transDetailData.get(i).getLocationID());
transDetailSubData.setBatchNo(transDetailData.get(i).getBatchNo());
transDetailSubData.setRollNo(subData.get(j).getRollNo());
transDetailSubData.setRollQty(subData.get(j).getRollQty());
transDetailSubData.setOrderRef1(getHeader.getOrderRef1());
inList.add(transDetailSubData);
productionStockMapper.updateFinalRollStatus(transDetailSubData.getSite(),transDetailSubData.getRollNo(),1,"Stocked");
}
}
}
productionStockMapper.batchInsertTransDetailSub(inList);
productionStockMapper.deleteTransCach(inData);
}
}

38
src/main/java/com/spring/modules/material/service/ProductionStockService.java

@ -0,0 +1,38 @@
package com.spring.modules.material.service;
import com.spring.common.utils.PageUtils;
import com.spring.modules.material.data.*;
import java.util.List;
public interface ProductionStockService {
PageUtils searchTransHeader(TransHeaderData data);
List<TransDetailData> searchTransDetail(TransHeaderData data);
List<TransDetailSubData> searchTransDetailSub(TransHeaderData data);
List<WareHouseSearchOutData> getWareHouseList(WareHouseSearchOutData inData);
String saveTransHeaderData(TransHeaderData data);
/**
* @Description TODO
* @Title searchTransDetail
* @param inData
* @author rq
* @date 2024/6/4 11:34
* @return TransDetailData
* @throw
*/
TransHeaderData searchTransHeaderData(TransHeaderData inData);
List<TransDetailsubCachData> searchTransDetailsubCachData(TransHeaderData inData);
String saveStockCach(TransDetailsubCachData data);
void finalSaveTransHeaderDetail(TransHeaderData inData);
void deleteSubCach(TransDetailsubCachData data);
void deleteTransHeaderData(TransHeaderData inData);
}

166
src/main/java/com/spring/modules/production/entity/SoFinalRollOutData.java

@ -0,0 +1,166 @@
package com.spring.modules.production.entity;
import org.apache.ibatis.type.Alias;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.Date;
@Alias("SoFinalRollOutData")
public class SoFinalRollOutData {
/**
*
*/
private Integer id;
/**
*
*/
private String site;
/**
*
*/
private String orderNo;
/**
*
*/
private String partNo;
/**
*
*/
private String seqNo;
/**
*
*/
private String finalRollNo;
/**
*
*/
private Integer rollQty;
/**
*
*/
private Integer statusCode;
/**
*
*/
private String status;
/**
*
*/
private String createdBy;
/**
*
*/
private Date createdDate;
/**
* 标签使用的日期
*/
private Date labelDate;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getSite() {
return site;
}
public void setSite(String site) {
this.site = site;
}
public String getOrderNo() {
return orderNo;
}
public void setOrderNo(String orderNo) {
this.orderNo = orderNo;
}
public String getPartNo() {
return partNo;
}
public void setPartNo(String partNo) {
this.partNo = partNo;
}
public String getSeqNo() {
return seqNo;
}
public void setSeqNo(String seqNo) {
this.seqNo = seqNo;
}
public String getFinalRollNo() {
return finalRollNo;
}
public void setFinalRollNo(String finalRollNo) {
this.finalRollNo = finalRollNo;
}
public Integer getRollQty() {
return rollQty;
}
public void setRollQty(Integer rollQty) {
this.rollQty = rollQty;
}
public Integer getStatusCode() {
return statusCode;
}
public void setStatusCode(Integer statusCode) {
this.statusCode = statusCode;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getCreatedBy() {
return createdBy;
}
public void setCreatedBy(String createdBy) {
this.createdBy = createdBy;
}
public Date getCreatedDate() {
return createdDate;
}
public void setCreatedDate(Date createdDate) {
this.createdDate = createdDate;
}
public Date getLabelDate() {
return labelDate;
}
public void setLabelDate(Date labelDate) {
this.labelDate = labelDate;
}
}

143
src/main/resources/mapper/material/ProductionStockMapper.xml

@ -0,0 +1,143 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.spring.modules.material.dao.ProductionStockMapper">
<select id="searchTransHeader" parameterType="TransHeaderData" resultType="TransHeaderData">
SELECT
TransNo,Site,WarehouseID,TransDate,TransType_DB transTypeDb,TransType,UserName,Receiver,TransYear,TransMonth,PartnerID,PartnerName,
PartnerType,AuthorizeFlag,AuthorizeDate,Authorizor,TransferFlag,TransferDate,TransferGuys,VoucherDate,ProjectID,
ProjectName,EnterDate,Remark,UseLocation,OrderRef1,LinkOrderFlag,DelAddID,Status,UserName EnterBy,dbo.get_user_display(UserName) enterName
,dbo.get_user_display(Receiver) ReceiverName
FROM TransHeader
<where>
site = #{query.site}
<if test = "query.orderRef1 != null and query.orderRef1 != ''">
AND OrderRef1 like #{query.orderRef1}
</if>
<if test = "query.transTypeDb != null and query.transTypeDb != ''">
AND TransType_DB = #{query.transTypeDb}
</if>
<if test = "query.startDate != null and query.startDate != ''">
AND TransDate >= #{query.startDate}
</if>
<if test = "query.endDate != null and query.endDate != ''">
AND #{query.endDate}>=TransDate
</if>
</where>
</select>
<select id="searchTransDetail" parameterType="TransHeaderData" resultType="TransDetailData">
SELECT
TransNo,Site,ItemNo,PartNo,LocationID,TransQty,Direction,BatchNo,OrderRef1,
OrderRef2,Remark,ManufactureDate,ExpiredDate,TransQty2,
wdr_no,enterDate,enterBy,dbo.get_part_desc(Site,PartNo) partDesc,dbo.get_user_display(enterBy) enterName
FROM TransDetail
where site=#{site} and TransNo=#{transNo}
</select>
<select id="searchTransDetailSub" parameterType="TransHeaderData" resultType="TransDetailSubData">
SELECT
a.TransNo,a.Site,a.SeqNo,a.itemNo,a.LocationID,a.BatchNo,a.BoxNo,a.RollNo,a.RollQty,a.orderRef1,a.orderRef2,
a.remark,b.EnterDate,b.enterBy,dbo.get_user_display(b.enterBy) enterName,b.ManufactureDate,b.ExpiredDate
FROM TransDetailsub a left join TransDetail b on a.Site=b.site and a.TransNo=b.TransNo and a.itemNo=b.ItemNo
where a.site=#{site} and a.TransNo=#{transNo}
</select>
<select id="getWareHouseList" parameterType="WareHouseSearchOutData" resultType="WareHouseSearchOutData">
SELECT
site,warehouse_id wareHouseId,warehouse_name wareHouseName
FROM warehouse
where site=#{site} and active='Y'
</select>
<select id="searchTransHeaderData" parameterType="TransHeaderData" resultType="TransHeaderData">
SELECT top 1
TransNo,Site,WarehouseID,TransDate,Receiver,PartnerID,PartnerName,
PartnerType,AuthorizeFlag,AuthorizeDate,Authorizor,TransferFlag,TransferDate,TransferGuys,VoucherDate,ProjectID,
ProjectName,EnterDate,Remark,UseLocation,OrderRef1,LinkOrderFlag,DelAddID,Status,dbo.get_user_display(Receiver) receiverName
FROM TransHeader
where site=#{site} and TransNo=#{transNo}
</select>
<select id="searchTransDetailsubCachData" parameterType="TransHeaderData" resultType="TransDetailsubCachData">
SELECT
Site,TransNo,PartNo,RollNo,RollQty,BatchNo,wdrNo,LocationID,ManufactureDate,ExpiredDate,enterBy,enterDate
,id,dbo.get_part_desc(Site,PartNo) partDesc,dbo.get_user_display(enterBy) enterByName
FROM TransDetailsub_cach
where site=#{site} and TransNo=#{transNo}
</select>
<insert id="saveIssureCach" parameterType="TransDetailsubCachData" >
insert into TransDetailsub_cach(Site,TransNo,PartNo,RollNo,RollQty,BatchNo,wdrNo,LocationID,ManufactureDate,
ExpiredDate,enterBy,enterDate)
values(#{site},#{transNo},#{partNo},#{rollNo},#{rollQty},#{batchNo},#{wdrNo},#{locationID},#{manufactureDate},
#{expiredDate},#{enterBy},GetDate())
</insert>
<select id="getDetailDataByCach" resultType="TransDetailData">
SELECT
a.site,a.TransNo,a.PartNo,a.LocationID,sum(a.RollQty) as TransQty,'-' as Direction,a.BatchNo,b.OrderRef1,'N' as VitualPartFlag,a.ManufactureDate,a.ExpiredDate,
0 as StandCost,0 as ActualCost,0 as Price,0 as Freight,0 as Duty,sum(a.RollQty) as TransQty2,enterBy,wdrNo
FROM TransDetailsub_cach a left join TransHeader b on a.Site=b.Site and a.TransNo=b.transNo
WHERE a.site=#{site} and a.TransNo=#{transNo}
GROUP BY a.site,a.TransNo,a.PartNo,a.LocationID,a.BatchNo,b.OrderRef1,a.ManufactureDate,a.ExpiredDate,A.enterBy,a.wdrNo
</select>
<select id="getNextTransHeaderSeqNo" resultType="Double">
select isnull(max(itemNo),0)+1
from TransDetail where TransNo=#{transNo} and site=#{site}
</select>
<insert id="saveTransDetailData" parameterType="TransDetailData" >
insert into TransDetail(TransNo,Site,ItemNo,PartNo,LocationID,TransQty,Direction,BatchNo,StandCost,
ActualCost,Price,Freight,Duty,OrderRef1,VitualPartFlag,ManufactureDate,
ExpiredDate,TransQty2,wdr_no,enterDate,enterBy)
values(#{transNo},#{site},#{itemNo,jdbcType=DOUBLE},#{partNo},#{locationID},#{transQty},#{direction},#{batchNo},#{standCost},
#{actualCost},#{price},#{freight},#{duty},#{orderRef1},#{vitualPartFlag},#{manufactureDate},
#{expiredDate},#{transQty2},#{wdrNo},GetDate(),#{enterBy})
</insert>
<insert id="batchInsertTransDetailSub">
insert into TransDetailsub
(TransNo,Site,SeqNo,itemNo,LocationID,BatchNo,BoxNo,RollNo,RollQty,orderRef1) VALUES
<foreach collection="list" item="item" index="index" separator=",">
(#{item.transNo}, #{item.site}, #{item.seqNo}, #{item.itemNo}, #{item.locationID}, #{item.batchNo},'', #{item.rollNo,jdbcType=VARCHAR}, #{item.rollQty}, #{item.orderRef1})
</foreach>
</insert>
<delete id="deleteTransCach">
delete from TransDetailsub_cach where TransNo=#{transNo} and site=#{site}
</delete>
<select id="deleteSubCach" >
delete from TransDetailsub_cach where id=#{id}
</select>
<delete id="deleteTransHeaderData">
delete from transHeader where site=#{site} and transNo=#{transNo}
</delete>
<update id="updateTransHeader">
update transHeader set WarehouseID=#{warehouseID} ,PartnerID=#{partnerID},Receiver=#{receiver},orderRef1=#{orderRef1},transDate=#{transDate} where site=#{site} and transNo=#{transNo}
</update>
<select id="checkTransDetailSubIsScan" resultType="TransDetailSubData">
select site,transNo from TransDetailsub_cach where site=#{site} and RollNo=#{rollNo}
</select>
<select id="getFinalRoll" resultType="SoFinalRollOutData">
select id,site,order_no,part_no,seq_no,final_roll_no,roll_qty,status_code,status,created_by,created_date,label_date
from so_final_roll where site=#{site} and final_roll_no=#{rollNo}
</select>
<update id="updateFinalRollStatus">
update so_final_roll set status_code=#{statusCode,jdbcType=INTEGER},status=#{status}
where site=#{site} and final_roll_no=#{rollNo}
</update>
</mapper>
Loading…
Cancel
Save