6 changed files with 823 additions and 0 deletions
-
142src/main/java/com/spring/modules/material/controller/ProductionStockController.java
-
55src/main/java/com/spring/modules/material/dao/ProductionStockMapper.java
-
279src/main/java/com/spring/modules/material/service/Impl/ProductionStockServiceImpl.java
-
38src/main/java/com/spring/modules/material/service/ProductionStockService.java
-
166src/main/java/com/spring/modules/production/entity/SoFinalRollOutData.java
-
143src/main/resources/mapper/material/ProductionStockMapper.xml
@ -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(); |
||||
|
} |
||||
|
|
||||
|
} |
||||
@ -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); |
||||
|
} |
||||
@ -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); |
||||
|
} |
||||
|
} |
||||
@ -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); |
||||
|
} |
||||
@ -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; |
||||
|
} |
||||
|
} |
||||
|
|
||||
@ -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> |
||||
Write
Preview
Loading…
Cancel
Save
Reference in new issue