导入,整箱入库,整箱出库
parent
f1300f45ab
commit
ca698284e8
|
|
@ -73,24 +73,22 @@ public interface BomAccountRepository extends JpaRepository<BomAccount, Long>, J
|
|||
Long getItemAreaId( Long item_id);
|
||||
|
||||
//获得所有BOM标签
|
||||
@Query(value = "select CONCAT(it.code,'/',ba.ns) ns,it.name pm,ba.xz,ba.srs,ba.bonded,ba.supplier,GROUP_CONCAT(bi.master_name) jxs ,GROUP_CONCAT(ba.singles) tyls,\n" +
|
||||
"CONCAT('code:',it.code,'ns:',ba.ns,'sb:',ba.bonded,'kw:',point.code) ewm\n" +
|
||||
//SUBSTRING(bi.master_name, 1, CEIL(CHAR_LENGTH(bi.master_name)/2))
|
||||
@Query(value = "select it.code, ba.ns,it.name pm,point.code hw,ba.xz,ba.srs,ba.bonded,ba.supplier," +
|
||||
// "GROUP_CONCAT(SUBSTRING(bi.master_name, 1, CEIL(CHAR_LENGTH(bi.master_name)/2))) jxs ,GROUP_CONCAT(ba.singles) tyls " +
|
||||
"GROUP_CONCAT(bi.master_name) jxs ,GROUP_CONCAT(ba.singles) tyls " +
|
||||
"from base_bom_account ba \n" +
|
||||
"LEFT JOIN base_big_item bi on bi.id=ba.big_item_id\n" +
|
||||
"left join base_item it on it.id=ba.item_id\n" +
|
||||
"left join base_point point on point.id=ba.z_point_id" +
|
||||
" where (it.code=:itemCode or :itemCode is null) and (point.code=:hw or :hw is null) and (ba.ns=:ns or :ns is null)" +
|
||||
"GROUP BY it.code,it.name,ba.ns,ba.xz,ba.srs,ba.bonded,ba.supplier,point.code ", nativeQuery = true)
|
||||
List<BomPrint> queryPrintAll(String itemCode, String hw, String ns);
|
||||
" left join base_area area on area.id=ba.r_area_id" +
|
||||
" where ba.bp_type=:dxw and (it.code=:itemCode or :itemCode is null) and (point.code=:hw or :hw is null) " +
|
||||
" and (area.code=:kq or :kq is null) and (ba.ns=:ns or :ns is null)" +
|
||||
"GROUP BY it.code,it.name,ba.ns,ba.xz,ba.srs,ba.bonded,ba.supplier,point.code " +
|
||||
"order by point.code ", nativeQuery = true)
|
||||
List<BomPrint> queryPrintAll(String itemCode, String hw, String ns,String kq,String dxw);
|
||||
|
||||
|
||||
@Query(value = "select CONCAT(it.code,'/',ba.ns) ns,it.name pm,ba.xz,ba.srs,ba.bonded,ba.supplier,GROUP_CONCAT(bi.master_name) jxs ,GROUP_CONCAT(ba.singles) tyls,\n" +
|
||||
"CONCAT('code:',it.code,'ns:',ba.ns,'sb:',ba.bonded,'kw:',point.code) ewm\n" +
|
||||
"from base_bom_account ba \n" +
|
||||
"LEFT JOIN base_big_item bi on bi.id=ba.big_item_id\n" +
|
||||
"left join base_item it on it.id=ba.item_id\n" +
|
||||
"left join base_point point on point.id=ba.z_point_id\n" +
|
||||
"GROUP BY it.code,it.name,ba.ns,ba.xz,ba.srs,ba.bonded,ba.supplier,point.code ", nativeQuery = true)
|
||||
List<BomPrint> queryPrintAll();
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -36,6 +36,9 @@ public interface PointRepository extends JpaRepository<Point, Long>, JpaSpecific
|
|||
public List<Point> getPointList(String type);
|
||||
@Query(value = "SELECT p.* FROM base_point p WHERE p.code=?1", nativeQuery = true)
|
||||
Point findByCode(String code);
|
||||
|
||||
@Query(value = "SELECT p.* FROM base_point p WHERE p.code=:code and p.type=:type", nativeQuery = true)
|
||||
Point findByCodeType(String code,String type);
|
||||
/*@Query(value = "SELECT p.* FROM base_point p WHERE p.code=?1", nativeQuery = true)
|
||||
List<Point> findByCodes(String code);*/
|
||||
|
||||
|
|
|
|||
|
|
@ -64,10 +64,7 @@ public class AreaController {
|
|||
|
||||
private final AreaService areaService;
|
||||
private final PointService pointService;
|
||||
private final DeptService deptService;
|
||||
private final DeptMapper deptMapper;
|
||||
private final PointRepository pointRepository;
|
||||
private final AreaMapper areaMapper;
|
||||
private final AreaRepository areaRepository;
|
||||
|
||||
@PostMapping("/getAreas")
|
||||
|
|
|
|||
|
|
@ -51,6 +51,7 @@ import org.springframework.web.bind.annotation.*;
|
|||
import io.swagger.annotations.*;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
|
|
@ -98,53 +99,64 @@ public class BomAccountController {
|
|||
}
|
||||
|
||||
|
||||
@GetMapping("/queryBomPrintList")
|
||||
@Log("查询bom打印标签")
|
||||
@ApiOperation("查询bom打印标签")
|
||||
@GetMapping("/queryBomPrintListD")
|
||||
@Log("查询中大物标签")
|
||||
@ApiOperation("查询中大物标签")
|
||||
@AnonymousAccess
|
||||
public ResponseEntity<Object> queryBomPrintList(BomAccountQueryCriteria criteria){
|
||||
public ResponseEntity<Object> queryBomPrintListD(BomAccountQueryCriteria criteria){
|
||||
RedisUtils redisUtils = SpringContextHolder.getBean(RedisUtils.class);
|
||||
redisUtils.del(SecurityUtils.getCurrentUsername()+"_BiaoQian");
|
||||
List<BomPrint> list=bomAccountService.queryPrintAll(criteria);
|
||||
boolean isok=redisUtils.set(SecurityUtils.getCurrentUsername()+"_BiaoQian", JsonUtil.toJson(list));
|
||||
log.info(SecurityUtils.getCurrentUsername()+"_BiaoQian"+"-----isok:"+isok);
|
||||
String json=(String)redisUtils.get(SecurityUtils.getCurrentUsername()+"_BiaoQian");
|
||||
log.info(SecurityUtils.getCurrentUsername()+"_BiaoQian"+"-----"+json);
|
||||
|
||||
|
||||
List<BomPrint_BiaoQian2> list2= JSONUtil.toList(json, BomPrint_BiaoQian2.class);
|
||||
for(BomPrint_BiaoQian2 l:list2){
|
||||
log.info(l.getNs());
|
||||
}
|
||||
|
||||
redisUtils.del(SecurityUtils.getCurrentUsername()+"_BiaoQian_D");
|
||||
List<BomPrint> list=bomAccountService.queryPrintAll(criteria,"中大物标签");
|
||||
redisUtils.set(SecurityUtils.getCurrentUsername()+"_BiaoQian_D",JsonUtil.toJson(list));
|
||||
return new ResponseEntity<>(list,HttpStatus.OK);
|
||||
}
|
||||
|
||||
@GetMapping("/bomPrintBiaoQianList")
|
||||
@GetMapping("/queryBomPrintListX")
|
||||
@Log("查询小物标签")
|
||||
@ApiOperation("查询小物标签")
|
||||
@AnonymousAccess
|
||||
public ResponseEntity<Object> queryBomPrintListX(BomAccountQueryCriteria criteria){
|
||||
RedisUtils redisUtils = SpringContextHolder.getBean(RedisUtils.class);
|
||||
redisUtils.del(SecurityUtils.getCurrentUsername()+"_BiaoQian_X");
|
||||
List<BomPrint> list=bomAccountService.queryPrintAll(criteria,"小物标签");
|
||||
redisUtils.set(SecurityUtils.getCurrentUsername()+"_BiaoQian_X",JsonUtil.toJson(list));
|
||||
return new ResponseEntity<>(list,HttpStatus.OK);
|
||||
}
|
||||
|
||||
@GetMapping("/bomPrintBiaoQianList/{dxw}")
|
||||
@Log("获取Bom中库位标签")
|
||||
@ApiOperation("获取Bom中库位标签")
|
||||
@AnonymousAccess
|
||||
public ResponseEntity<Object> bomPrintBiaoQianList(){
|
||||
log.info(SecurityUtils.getCurrentUsername()+"_BiaoQian");
|
||||
public ResponseEntity<Object> bomPrintBiaoQianList(@PathVariable("dxw") String dxw){
|
||||
RedisUtils redisUtils = SpringContextHolder.getBean(RedisUtils.class);
|
||||
|
||||
String json=(String)redisUtils.get(SecurityUtils.getCurrentUsername()+"_BiaoQian");
|
||||
log.info(SecurityUtils.getCurrentUsername()+"_BiaoQian"+"-----"+json);
|
||||
|
||||
|
||||
String json=(String)redisUtils.get(SecurityUtils.getCurrentUsername()+dxw);
|
||||
log.info(SecurityUtils.getCurrentUsername()+dxw+"-----"+json);
|
||||
List<BomPrint_BiaoQian2> list= JSONUtil.toList(json, BomPrint_BiaoQian2.class);
|
||||
|
||||
List<BomPrint_BiaoQian> list2=new ArrayList<>();
|
||||
for(BomPrint_BiaoQian2 l:list){
|
||||
BomPrint_BiaoQian bq=new BomPrint_BiaoQian();
|
||||
bq.setNs(l.getNs());
|
||||
bq.setHw(l.getHw());
|
||||
String code=l.getCode().substring(0,5)+"-"+l.getCode().substring(5,l.getCode().length());
|
||||
bq.setNs(l.getNs()+"/"+code);
|
||||
bq.setCode(code);
|
||||
String hw=l.getHw();
|
||||
hw=hw.substring(0,3)+"-"+hw.substring(3,hw.length());
|
||||
bq.setHw(hw);
|
||||
bq.setPm(l.getPm());
|
||||
bq.setEwm(l.getEwm());
|
||||
bq.setEwm(l.getCode()+";"+l.getNs()+";"+l.getBonded()+";"+l.getHw());
|
||||
bq.setBonded(l.getBonded());
|
||||
bq.setSrs(l.getSrs());
|
||||
bq.setXz(l.getXz());
|
||||
bq.setSupplier(l.getSupplier());
|
||||
if(dxw.equals("_BiaoQian_D")){
|
||||
bq.setJxs(l.getJxs() == null ? null :
|
||||
Arrays.stream(l.getJxs().split(","))
|
||||
.map(s -> s.length() > 10 ? s.substring(0, 10) : s)
|
||||
.toArray(String[]::new));
|
||||
|
||||
|
||||
}else {
|
||||
bq.setJxs(l.getJxs() == null ? null : l.getJxs().split(","));
|
||||
}
|
||||
bq.setTyls(l.getTyls()==null?null:l.getTyls().split(","));
|
||||
list2.add(bq);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -51,7 +51,7 @@ public interface BomAccountService {
|
|||
*/
|
||||
List<BomAccountDto> queryAll(BomAccountQueryCriteria criteria);
|
||||
|
||||
List<BomPrint> queryPrintAll(BomAccountQueryCriteria criteria);
|
||||
List<BomPrint> queryPrintAll(BomAccountQueryCriteria criteria,String dxw);
|
||||
|
||||
/**
|
||||
* 根据ID查询
|
||||
|
|
|
|||
|
|
@ -58,4 +58,8 @@ public class BomAccountQueryCriteria{
|
|||
|
||||
@Query
|
||||
private String outType;
|
||||
@Query
|
||||
private String ns;
|
||||
@Query
|
||||
private String bp_type;
|
||||
}
|
||||
|
|
@ -88,15 +88,12 @@ public class BomAccountServiceImpl implements BomAccountService {
|
|||
return bomAccountMapper.toDto(bomAccountRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder)));
|
||||
}
|
||||
|
||||
public List<BomPrint> queryPrintAll(BomAccountQueryCriteria criteria){
|
||||
|
||||
List<BomPrint> bomPrints=bomAccountRepository.queryPrintAll(criteria.getItemCode(),null,null);
|
||||
// List<BomPrint> bomPrints=bomAccountRepository.queryPrintAll();
|
||||
log.info(bomPrints.toString());
|
||||
|
||||
public List<BomPrint> queryPrintAll(BomAccountQueryCriteria criteria,String dxw){
|
||||
List<BomPrint> bomPrints=bomAccountRepository.queryPrintAll(criteria.getItemCode(),criteria.getZPointCode(),criteria.getNs(),criteria.getRAreaCode(),dxw);
|
||||
return bomPrints;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
@Cacheable(key = "'id:' + #p0")
|
||||
|
|
|
|||
|
|
@ -76,7 +76,7 @@ public class BoxServiceImpl implements BoxService {
|
|||
private final PointService pointService;
|
||||
private final StockService stockService;
|
||||
private final ItemService itemService;
|
||||
private final AsnDetailService asnDetailService;
|
||||
// private final AsnDetailService asnDetailService;
|
||||
private final ItemKeyService itemKeyService;
|
||||
private final TaskService taskService;
|
||||
private final InventoryService inventoryService;
|
||||
|
|
@ -322,10 +322,10 @@ public class BoxServiceImpl implements BoxService {
|
|||
Date date = cn.hutool.core.date.DateUtil.date();
|
||||
String propC1 = DateUtil.format(date, "yyyyMMdd");
|
||||
asnDetail.setPropC1(propC1);
|
||||
asnDetailService.create(asnDetail);
|
||||
// asnDetailService.create(asnDetail);
|
||||
|
||||
//生成Itemkey
|
||||
ItemKey itemKey = itemKeyService.getItemKey(item, asnDetail.getPropC1());
|
||||
ItemKey itemKey = itemKeyService.getItemKey(item, asnDetail.getPropC1(),asnDetail.getPropC2());
|
||||
|
||||
|
||||
//生成入库记录
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ import com.youchain.businessdata.inputJson.imports.invoicePackingImport;
|
|||
import com.youchain.businessdata.repository.*;
|
||||
import com.youchain.businessdata.service.*;
|
||||
import com.youchain.exception.BadRequestException;
|
||||
import com.youchain.modules.system.domain.Dept;
|
||||
import com.youchain.utils.*;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
|
@ -41,6 +42,8 @@ public class ImportAsnServiceImpl implements ImportAsnService {
|
|||
|
||||
private final AsnService asnService;
|
||||
|
||||
private final CodeUtils codeUtils;
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void importAsn(MultipartFile file, String templateType) {
|
||||
|
|
@ -119,14 +122,17 @@ public class ImportAsnServiceImpl implements ImportAsnService {
|
|||
log.info("处理批量导入,数据条数: {}", dataList.size());
|
||||
|
||||
//获取文件中所有的托盘号
|
||||
List<String> codes = dataList.stream().map(BaseImport::getCNo).collect(Collectors.toList());
|
||||
|
||||
List<String> cusCodes = dataList.stream().map(BaseImport::getCNo).collect(Collectors.toList());
|
||||
cusCodes = cusCodes.stream().filter(Objects::nonNull).distinct().collect(Collectors.toList());
|
||||
//验证托盘号
|
||||
validateAsn(codes);
|
||||
validateAsn(cusCodes);
|
||||
|
||||
//获取文件中所有的品番
|
||||
List<String> itemCodes = dataList.stream().map(BaseImport::getPartNo).collect(Collectors.toList());
|
||||
|
||||
// List<String> itemCodes = dataList.stream().map(BaseImport::getPartNo).collect(Collectors.toList());
|
||||
List<String> itemCodes = dataList.stream()
|
||||
.map(item -> item.getPartNo().replace("-", ""))
|
||||
.collect(Collectors.toList());
|
||||
itemCodes = itemCodes.stream().filter(Objects::nonNull).distinct().collect(Collectors.toList());
|
||||
//验证品番
|
||||
Map<String, Item> exitItemMap = validateItem(itemCodes);
|
||||
|
||||
|
|
@ -134,8 +140,8 @@ public class ImportAsnServiceImpl implements ImportAsnService {
|
|||
Area area = areaService.findByCode(BaseStatus.DEFAULT_AREA);
|
||||
|
||||
//单据类型
|
||||
BillType billType = billTypeRepository.findByName(BaseStatus.RK);
|
||||
|
||||
BillType billType = billTypeRepository.findByName(BaseStatus.XDRK);
|
||||
Dept dept=UserUtils.getDept();
|
||||
Map<String, Asn> asnMap = new HashMap<>();
|
||||
List<Asn> insertToAsn = new ArrayList<>();//批量新增ASN
|
||||
List<AsnDetail> insertToAsnDetail = new ArrayList<>();//批量新增asnDetail
|
||||
|
|
@ -147,9 +153,8 @@ public class ImportAsnServiceImpl implements ImportAsnService {
|
|||
String remark = data.getDescription();//描述
|
||||
String orderQty = data.getQty();//数量
|
||||
String code = data.getCNo();//托盘号
|
||||
|
||||
//品番
|
||||
Item item = exitItemMap.get(itemCode);
|
||||
Item item = exitItemMap.get(itemCode.replace("-", ""));
|
||||
|
||||
Asn asn;
|
||||
if (asnMap.containsKey(code)) {
|
||||
|
|
@ -158,8 +163,8 @@ public class ImportAsnServiceImpl implements ImportAsnService {
|
|||
} else {
|
||||
asn = Asn.builder()
|
||||
.relatedBill1(relatedBill1)
|
||||
.code(code)
|
||||
.area(area)
|
||||
.code(codeUtils.getCode_yyMMdd(billType.getPrefix()+'-', 3))
|
||||
.cusCode(code)
|
||||
.status(BizStatus.OPEN)
|
||||
.orderDate(new Timestamp(new Date().getTime()))
|
||||
.orderQuantity(Double.parseDouble(orderQty))
|
||||
|
|
@ -184,7 +189,7 @@ public class ImportAsnServiceImpl implements ImportAsnService {
|
|||
.putQty(0d)
|
||||
.weight(0d)
|
||||
.volume(0d)
|
||||
.dept(item.getDept())
|
||||
.dept(dept)
|
||||
.build();
|
||||
insertToAsnDetail.add(asnDetail);
|
||||
}
|
||||
|
|
@ -215,11 +220,11 @@ public class ImportAsnServiceImpl implements ImportAsnService {
|
|||
}
|
||||
|
||||
//验证ASN单号
|
||||
private void validateAsn(List<String> codes) {
|
||||
Map<String, Asn> exitAsnMap = asnService.queryByasnCodesToMap(codes);
|
||||
List<String> existingAsnCodes = new ArrayList<>(exitAsnMap.keySet());
|
||||
private void validateAsn(List<String> cusCodes) {
|
||||
Map<String, Asn> exitAsnMap = asnService.queryByCusCodesToMap(cusCodes);
|
||||
List<String> existCusCodes = new ArrayList<>(exitAsnMap.keySet());
|
||||
// 获取两个集合的交集说明ASN重复导入了,直接提示
|
||||
List<String> difference = SmartStringUtil.getIntersection(codes, existingAsnCodes);
|
||||
List<String> difference = SmartStringUtil.getIntersection(cusCodes, existCusCodes);
|
||||
if (CollectionUtils.isNotEmpty(difference)) {
|
||||
//去重difference
|
||||
difference = difference.stream().filter(Objects::nonNull).distinct().collect(Collectors.toList());
|
||||
|
|
|
|||
|
|
@ -33,13 +33,10 @@ public class ImportBomAccountServiceImpl implements ImportBomAccountService {
|
|||
private final ItemService itemService;
|
||||
private final BigItemService bigItemService;
|
||||
private final PointService pointService;
|
||||
private final AsnService asnService;
|
||||
private final AreaService areaService;
|
||||
private final ItemRepository itemRepository;
|
||||
private final BigItemRepository bigItemRepository;
|
||||
private final PointRepository pointRepository;
|
||||
private final BomAccountRepository bomAccountRepository;
|
||||
private final AreaRepository areaRepository;
|
||||
private final BomAccountLogService bomAccountLogService;
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
|
|
@ -113,6 +110,13 @@ public class ImportBomAccountServiceImpl implements ImportBomAccountService {
|
|||
BomAccount ba = this.BaEntity(existBom, entity, bigItem,item, point, entity.tyl,null);
|
||||
createBomList.add(ba);
|
||||
}
|
||||
// if (isNew) {
|
||||
// bomAccountService.create(bomAccount);
|
||||
// bomAccountLogService.copyBomAccount(bomAccount.getId(), "import_add");
|
||||
// } else {
|
||||
// bomAccountService.update(bomAccount);
|
||||
// bomAccountLogService.copyBomAccount(bomAccount.getId(), "import_update");
|
||||
// }
|
||||
if(CollectionUtils.isNotEmpty(createBomList)){
|
||||
bomAccountRepository.saveAll(createBomList);
|
||||
}
|
||||
|
|
@ -120,7 +124,6 @@ public class ImportBomAccountServiceImpl implements ImportBomAccountService {
|
|||
bomAccountRepository.saveAll(updateBomList);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//验证品番
|
||||
|
|
@ -219,18 +222,22 @@ public class ImportBomAccountServiceImpl implements ImportBomAccountService {
|
|||
"货位",
|
||||
"箱种",
|
||||
"收容数",
|
||||
"台车库位",
|
||||
"工程(台车库位)",
|
||||
"大小物",
|
||||
"税别",
|
||||
// 机型1-38 及对应的台用量
|
||||
"机型1", "台用量1", "机型2", "台用量2", "机型3", "台用量3", "机型4", "台用量4", "机型5", "台用量5",
|
||||
"机型6", "台用量6", "机型7", "台用量7", "机型8", "台用量8", "机型9", "台用量9", "机型10", "台用量10",
|
||||
"机型11", "台用量11", "机型12", "台用量12", "机型13", "台用量13", "机型14", "台用量14", "机型15", "台用量15",
|
||||
"机型16", "台用量16", "机型17", "台用量17", "机型18", "台用量18", "机型19", "台用量19", "机型20", "台用量20",
|
||||
"机型21", "台用量21", "机型22", "台用量22", "机型23", "台用量23", "机型24", "台用量24", "机型25", "台用量25",
|
||||
"机型26", "台用量26", "机型27", "台用量27", "机型28", "台用量28", "机型29", "台用量29", "机型30", "台用量30",
|
||||
"机型31", "台用量31", "机型32", "台用量32", "机型33", "台用量33", "机型34", "台用量34", "机型35", "台用量35",
|
||||
"机型36", "台用量36", "机型37", "台用量37", "机型38", "台用量38"
|
||||
"机型",
|
||||
"机型代码",
|
||||
"组顺/刻印号前2位",
|
||||
"台用量"
|
||||
// // 机型1-38 及对应的台用量
|
||||
// "机型1", "台用量1", "机型2", "台用量2", "机型3", "台用量3", "机型4", "台用量4", "机型5", "台用量5",
|
||||
// "机型6", "台用量6", "机型7", "台用量7", "机型8", "台用量8", "机型9", "台用量9", "机型10", "台用量10",
|
||||
// "机型11", "台用量11", "机型12", "台用量12", "机型13", "台用量13", "机型14", "台用量14", "机型15", "台用量15",
|
||||
// "机型16", "台用量16", "机型17", "台用量17", "机型18", "台用量18", "机型19", "台用量19", "机型20", "台用量20",
|
||||
// "机型21", "台用量21", "机型22", "台用量22", "机型23", "台用量23", "机型24", "台用量24", "机型25", "台用量25",
|
||||
// "机型26", "台用量26", "机型27", "台用量27", "机型28", "台用量28", "机型29", "台用量29", "机型30", "台用量30",
|
||||
// "机型31", "台用量31", "机型32", "台用量32", "机型33", "台用量33", "机型34", "台用量34", "机型35", "台用量35",
|
||||
// "机型36", "台用量36", "机型37", "台用量37", "机型38", "台用量38"
|
||||
);
|
||||
List<String> headers = FastExcelUtil.readHeadContent(file, requiredColumns, 0, 0);
|
||||
if (!SmartStringUtil.containsAllIgnoreCase(requiredColumns, headers)) {
|
||||
|
|
|
|||
|
|
@ -51,19 +51,14 @@ import java.util.stream.Collectors;
|
|||
@RequiredArgsConstructor
|
||||
@Slf4j
|
||||
public class ImportDataServiceImpl implements ImportDataService {
|
||||
private final FileProperties properties;
|
||||
private final BigItemRepository bigItemRepository;
|
||||
private final AreaRepository areaRepository;
|
||||
private final ItemRepository itemRepository;
|
||||
private final DictDetailRepository dictDetailRepository;
|
||||
private final PointRepository pointRepository;
|
||||
private final AsnRepository asnRepository;
|
||||
private final AsnDetailRepository asnDetailRepository;
|
||||
private final PointService pointService;
|
||||
private final AreaService areaService;
|
||||
private final BomAccountRepository bomAccountRepository;
|
||||
private final AreaMapper areaMapper;
|
||||
private final PointMapper pointMapper;
|
||||
|
||||
private final PointService pointService;
|
||||
private final ItemService itemService;
|
||||
private final AsnDetailService asnDetailService;
|
||||
private final AsnService asnService;
|
||||
|
|
|
|||
|
|
@ -58,7 +58,7 @@ public class Asn extends BaseEntity implements Serializable {
|
|||
private String code;
|
||||
|
||||
@OneToOne
|
||||
@JoinColumn(name = "`area_id`",nullable = false)
|
||||
@JoinColumn(name = "`area_id`")
|
||||
@NotNull
|
||||
@ApiModelProperty(value = "库区")
|
||||
private Area area;
|
||||
|
|
|
|||
|
|
@ -144,7 +144,6 @@ public class Inventory extends BaseEntity implements Serializable {
|
|||
@ApiModelProperty(value = "制造库位")
|
||||
private Point zzkw;
|
||||
|
||||
|
||||
public void copy(Inventory source) {
|
||||
BeanUtil.copyProperties(source, this, CopyOptions.create().setIgnoreNullValue(true));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,17 @@
|
|||
package com.youchain.businessdata.inputJson;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
@Data
|
||||
public class PutawayRequest {
|
||||
private List<Long> ids; // 使用 List 更通用
|
||||
private Long pointId;
|
||||
|
||||
String stockCode;//托盘号
|
||||
String pointCode;//库位号
|
||||
String dstPointCode;//目标库位
|
||||
//1.校验托盘号;2.校验库位;3.上架确认;
|
||||
// 4.箱单出库检索;6.箱单出库确认;7.箱单移位
|
||||
int checkType;
|
||||
}
|
||||
|
|
@ -7,7 +7,7 @@ import java.util.List;
|
|||
|
||||
@Data
|
||||
public class PickTicketButton {
|
||||
//拣货确认按钮号 1整单拣货 2单一拣货 3批量拣货 4取消拣货 5拣货整单取消 6拣货批量取消 7现品票拣货
|
||||
//拣货确认按钮号 1整单拣货 2单一拣货 3批量拣货 4取消拣货 5拣货整单取消 6拣货批量取消 7现品票拣货,8 App箱单拣货
|
||||
private int pickConfirmNo;
|
||||
//单一拣货 输入数量
|
||||
private int onePickConfirmNumber;
|
||||
|
|
|
|||
|
|
@ -32,4 +32,7 @@ import java.util.List;
|
|||
public interface AsnDetailRepository extends JpaRepository<AsnDetail, Long>, JpaSpecificationExecutor<AsnDetail> {
|
||||
@Query(value = "SELECT * FROM `data_asn_detail` asnDetail WHERE asn_id = :id order by create_time DESC", nativeQuery = true)
|
||||
List<AsnDetail> queryByAsnId(@Param("id") Long id);
|
||||
|
||||
@Query(value = "SELECT asnDetail.id FROM `data_asn_detail` asnDetail WHERE asn_id = :id", nativeQuery = true)
|
||||
List<Long> queryIdsByAsn(@Param("id") Long id);
|
||||
}
|
||||
|
|
@ -39,6 +39,9 @@ public interface AsnRepository extends JpaRepository<Asn, Long>, JpaSpecificatio
|
|||
@Query(value = "SELECT * FROM `data_asn` asn ORDER BY asn.create_time DESC LIMIT 0,1", nativeQuery = true)
|
||||
Asn queryMaxCode();
|
||||
|
||||
@Query("from Asn asn where asn.code in (:asnCodes) ")
|
||||
List<Asn> queryByAsnCodes(List<String> asnCodes);
|
||||
@Query("from Asn asn where asn.cusCode in (:cusCodes)")
|
||||
List<Asn> queryByCusCodes(List<String> cusCodes);
|
||||
|
||||
@Query("from Asn asn where asn.cusCode=:cusCode and asn.status='OPEN'")
|
||||
List<Asn> queryByCusCode(String cusCode);
|
||||
}
|
||||
|
|
@ -60,4 +60,9 @@ public interface InventoryRepository extends JpaRepository<Inventory, Long>, Jpa
|
|||
" and p.type='CH'" , nativeQuery = true)
|
||||
List<Inventory> queryInventoryArea2(long areaId);
|
||||
|
||||
@Query(value = "SELECT * from data_inventory inv \n" +
|
||||
"left join base_point p on inv.point_id=p.id\n" +
|
||||
"WHERE inv.quantity>0 and p.type='CH' and inv.stock_code=:stockCode" , nativeQuery = true)
|
||||
List<Inventory> queryInvStockCode(String stockCode);
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@ package com.youchain.businessdata.repository;
|
|||
import com.youchain.businessdata.domain.Asn;
|
||||
import com.youchain.businessdata.domain.PickTicket;
|
||||
import com.youchain.businessdata.domain.PlanPickDetail;
|
||||
import com.youchain.utils.BizStatus;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
|
||||
import org.springframework.data.jpa.repository.Modifying;
|
||||
|
|
@ -59,6 +60,9 @@ public interface PickTicketRepository extends JpaRepository<PickTicket, Long>, J
|
|||
@Query(value = "SELECT * FROM `data_pick_ticket` dpt where dpt.`status` = :status and dpt.`related_bill1` like :code", nativeQuery = true)
|
||||
List<PickTicket> queryPickTicketByCodeAll(@Param("status") String status, @Param("code") String code);
|
||||
|
||||
@Query("from PickTicket pt where pt.cusCode=:cusCode and pt.status='ALLOCATE'")
|
||||
List<PickTicket> queryByCusCode(String cusCode);
|
||||
|
||||
@Transactional //也可以只标注在上层调用者方法上
|
||||
@Modifying
|
||||
@Query(value = "UPDATE data_pick_ticket dpt set dpt.order_quantity = :orderQuantity where dpt.id= :id", nativeQuery = true)
|
||||
|
|
|
|||
|
|
@ -15,14 +15,27 @@
|
|||
*/
|
||||
package com.youchain.businessdata.rest;
|
||||
|
||||
import cn.hutool.json.JSONArray;
|
||||
import com.youchain.DuplicateSubmission.DuplicateSubmission;
|
||||
import com.youchain.annotation.AnonymousAccess;
|
||||
import com.youchain.annotation.Log;
|
||||
import com.youchain.basicdata.domain.Point;
|
||||
import com.youchain.basicdata.repository.PointRepository;
|
||||
import com.youchain.basicdata.service.dto.BillTypeQueryCriteria;
|
||||
import com.youchain.businessdata.domain.Asn;
|
||||
import com.youchain.businessdata.domain.AsnDetail;
|
||||
import com.youchain.businessdata.inputJson.PutawayRequest;
|
||||
import com.youchain.businessdata.repository.AsnDetailRepository;
|
||||
import com.youchain.businessdata.repository.AsnRepository;
|
||||
import com.youchain.businessdata.returnJson.PutawayRet;
|
||||
import com.youchain.businessdata.service.AsnDetailService;
|
||||
import com.youchain.businessdata.service.AsnService;
|
||||
import com.youchain.businessdata.service.dto.AsnDetailDto;
|
||||
import com.youchain.businessdata.service.dto.AsnQueryCriteria;
|
||||
import com.youchain.exception.BadRequestException;
|
||||
import com.youchain.exception.handler.ApiResult;
|
||||
import com.youchain.utils.BaseStatus;
|
||||
import com.youchain.utils.BizStatus;
|
||||
import com.youchain.utils.CodeUtils;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
|
|
@ -30,6 +43,7 @@ import lombok.RequiredArgsConstructor;
|
|||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import io.swagger.annotations.*;
|
||||
|
|
@ -37,8 +51,7 @@ import org.springframework.web.multipart.MultipartFile;
|
|||
|
||||
import java.io.IOException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Date;
|
||||
import java.util.Objects;
|
||||
import java.util.*;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import static org.springframework.http.HttpStatus.OK;
|
||||
|
|
@ -57,7 +70,10 @@ import static org.springframework.http.HttpStatus.BAD_REQUEST;
|
|||
public class AsnController {
|
||||
|
||||
private final AsnService asnService;
|
||||
private final AsnDetailService asnDetailService;
|
||||
private final AsnRepository asnRepository;
|
||||
private final AsnDetailRepository asnDetailRepository;
|
||||
private final PointRepository pointRepository;
|
||||
private final CodeUtils codeUtils;
|
||||
|
||||
|
||||
|
|
@ -69,14 +85,6 @@ public class AsnController {
|
|||
asnService.download(asnService.queryAll(criteria), response);
|
||||
}
|
||||
|
||||
@GetMapping(value = "/maxNo")
|
||||
@Log("查询最大的单号")
|
||||
@ApiOperation("查询最大单号")
|
||||
@AnonymousAccess
|
||||
public ResponseEntity<Object> maxNo(@RequestParam("code") String code) {
|
||||
return new ResponseEntity<>(codeUtils.getCode_yyMMdd(code, 3), HttpStatus.OK);
|
||||
}
|
||||
|
||||
|
||||
@GetMapping
|
||||
@Log("查询asn")
|
||||
|
|
@ -128,4 +136,89 @@ public class AsnController {
|
|||
asnService.deleteAll(ids);
|
||||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/checkPutawayApp")
|
||||
@Log("校验托盘号-APP")
|
||||
@ApiOperation("校验托盘号-APP")
|
||||
@PreAuthorize("@el.check('super:man')")
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
@DuplicateSubmission
|
||||
public ResponseEntity<Object> checkPutawayApp(@RequestBody PutawayRequest request) {
|
||||
String stockCode = request.getStockCode();
|
||||
int checkType=request.getCheckType();
|
||||
String pointCode= request.getPointCode();
|
||||
if(checkType==1) {
|
||||
List<Asn> asns = asnRepository.queryByCusCode(stockCode);
|
||||
if (asns.size() <= 0) {
|
||||
throw new BadRequestException(stockCode + "不存在");
|
||||
}else{
|
||||
Long asnId=asns.get(0).getId();
|
||||
List<AsnDetail> ads=asnDetailRepository.queryByAsnId(asnId);
|
||||
List<PutawayRet> rets=new ArrayList<>();
|
||||
for(AsnDetail ad:ads){
|
||||
PutawayRet ret=new PutawayRet();
|
||||
ret.createPutawayRet(asnId,ad.getId(),ad.getItem().getCode(),ad.getItem().getName(),ad.getOrderQty(),ad.getPropC2(),ad.getPo());
|
||||
// ret.setBonded(ad.getPropC2());
|
||||
// ret.setPo(ad.getPo());
|
||||
// ret.setQty(ad.getOrderQty());
|
||||
// ret.setItemCode(ad.getItem().getCode());
|
||||
// ret.setItemName(ad.getItem().getName());
|
||||
rets.add(ret);
|
||||
}
|
||||
return new ResponseEntity<>(rets, HttpStatus.OK);
|
||||
}
|
||||
} else if (checkType==2) {
|
||||
Point point=pointRepository.findByCodeType(pointCode, BaseStatus.CH);
|
||||
if(point==null){
|
||||
throw new BadRequestException(pointCode + "不存在");
|
||||
}
|
||||
}
|
||||
return new ResponseEntity<>("操作成功", HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/putawayApp")
|
||||
@Log("上架确认-APP")
|
||||
@ApiOperation("上架确认-APP")
|
||||
@PreAuthorize("@el.check('super:man')")
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
@DuplicateSubmission
|
||||
public ResponseEntity<Object> putawayApp(@RequestBody PutawayRequest request) {
|
||||
String stockCode = request.getStockCode();
|
||||
int checkType=request.getCheckType();
|
||||
String pointCode= request.getPointCode();
|
||||
Point point=pointRepository.findByCodeType(pointCode, BaseStatus.CH);
|
||||
if(point==null){
|
||||
throw new BadRequestException(pointCode + "不存在");
|
||||
}
|
||||
List<Asn> asns = asnRepository.queryByCusCode(stockCode);
|
||||
if (asns.size() <= 0) {
|
||||
throw new BadRequestException(stockCode + "不存在");
|
||||
}
|
||||
Long asnId=asns.get(0).getId();
|
||||
List<Long> detailIds=asnDetailRepository.queryIdsByAsn(asnId);
|
||||
for(Long detailId:detailIds) {
|
||||
AsnDetail d=asnDetailRepository.getById(detailId);
|
||||
asnDetailService.putawayInv(detailId,null,point.getId(),d.getOrderQty()-d.getReceivedQty(),null);
|
||||
}
|
||||
return new ResponseEntity<>("操作成功", HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/mutilPutawaySys")
|
||||
@Log("上架确认-系统")
|
||||
@ApiOperation("上架确认-系统")
|
||||
@PreAuthorize("@el.check('super:man')")
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
@DuplicateSubmission
|
||||
public ResponseEntity<Object> mutilPutawaySys(@RequestBody PutawayRequest request) {
|
||||
Long[] ids = request.getIds().toArray(new Long[0]);
|
||||
Long pointId = request.getPointId();
|
||||
for (Long id:ids){
|
||||
List<Long> detailIds=asnDetailRepository.queryIdsByAsn(id);
|
||||
for(Long detailId:detailIds) {
|
||||
AsnDetail d=asnDetailRepository.getById(detailId);
|
||||
asnDetailService.putawayInv(detailId,null,pointId,d.getOrderQty()-d.getReceivedQty(),null);
|
||||
}
|
||||
}
|
||||
return new ResponseEntity<>("操作成功", HttpStatus.OK);
|
||||
}
|
||||
}
|
||||
|
|
@ -246,8 +246,7 @@ public class AsnDetailController {
|
|||
}
|
||||
}
|
||||
Area area=point.getArea();
|
||||
putawayInv(d.getId(),area.getId(),point.getId(),s.getQty(),ewm);
|
||||
//直接上架确认
|
||||
asnDetailService.putawayInv(d.getId(),area.getId(),point.getId(),s.getQty(),ewm);
|
||||
}
|
||||
return new ResponseEntity<>("操作成功", HttpStatus.OK);
|
||||
}
|
||||
|
|
@ -261,16 +260,7 @@ public class AsnDetailController {
|
|||
public ResponseEntity<Object> putawayXppApp(@RequestBody IRkPut s) {
|
||||
int seq=s.getSeq();
|
||||
if(seq==1){
|
||||
XppRecord xppRecord =null;
|
||||
String ewm = s.getEwm();
|
||||
xppRecord = xppRecordRepository.findByCode(ewm);
|
||||
if(xppRecord==null){
|
||||
return new ResponseEntity<>(ewm + "二维码未采集", BAD_REQUEST);
|
||||
}
|
||||
if(!xppRecord.getStatus().equals(BizStatus.RECEIVED)&&!xppRecord.getStatus().equals(BizStatus.RETENTION_IN)){
|
||||
throw new BadRequestException(xppRecord.getItem().getCode()+"现品票状态不正确");
|
||||
}
|
||||
RRkXpp map = xppRecordService.xppAnalysis(xppRecord);
|
||||
RRkXpp map = xppRecordService.xppAnalysis(s.getEwm());
|
||||
return new ResponseEntity<>(map, HttpStatus.OK);
|
||||
}
|
||||
if (seq==2) {
|
||||
|
|
@ -284,12 +274,10 @@ public class AsnDetailController {
|
|||
}
|
||||
Area area=point.getArea();
|
||||
for(String ewm:s.getEwms()){
|
||||
XppRecord xppRecord=xppRecordRepository.findByCode(ewm);
|
||||
if(!xppRecord.getStatus().equals(BizStatus.RECEIVED)&&!xppRecord.getStatus().equals(BizStatus.RETENTION_IN)){
|
||||
throw new BadRequestException(xppRecord.getItem().getCode()+"现品票状态不正确");
|
||||
}
|
||||
AsnDetail d = xppRecordService.addAsnDetail(xppRecord);
|
||||
putawayInv(d.getId(), area.getId(), point.getId(), d.getOrderQty(),ewm);
|
||||
XppRecord xppRecord = xppRecordService.saveXppRecord(ewm);
|
||||
AsnDetail asnDetail = xppRecordService.addAsnDetail(xppRecord);
|
||||
asnDetailService.putawayInv(asnDetail.getId(),area.getId(),point.getId(),xppRecord.getNrs(),xppRecord.getEwm());
|
||||
|
||||
}
|
||||
}
|
||||
return new ResponseEntity<>("操作成功", HttpStatus.OK);
|
||||
|
|
@ -305,7 +293,7 @@ public class AsnDetailController {
|
|||
Long pointId=Long.parseLong(rk.get("pointId").toString());
|
||||
AsnDetail asnDetail = xppRecordService.addAsnDetail(xppRecord);
|
||||
Point point=pointService.findEntityById(pointId);
|
||||
putawayInv(asnDetail.getId(),point.getArea().getId(),pointId,xppRecord.getNrs(),xppRecord.getEwm());
|
||||
asnDetailService.putawayInv(asnDetail.getId(),point.getArea().getId(),pointId,xppRecord.getNrs(),xppRecord.getEwm());
|
||||
return new ResponseEntity<>("操作成功", HttpStatus.OK);
|
||||
}
|
||||
|
||||
|
|
@ -320,7 +308,7 @@ public class AsnDetailController {
|
|||
Long asnDetailId=Long.parseLong(rk.get("detailId").toString());
|
||||
AsnDetailDto dto= asnDetailService.findById(asnDetailId);
|
||||
Double recQty=dto.getOrderQty()-dto.getReceivedQty();
|
||||
putawayInv(asnDetailId, Long.parseLong(rk.get("areaId").toString())
|
||||
asnDetailService.putawayInv(asnDetailId, Long.parseLong(rk.get("areaId").toString())
|
||||
, Long.parseLong(rk.get("pointId").toString()),recQty,null);
|
||||
return new ResponseEntity<>("操作成功", HttpStatus.OK);
|
||||
}
|
||||
|
|
@ -439,7 +427,7 @@ public class AsnDetailController {
|
|||
List<AsnDetail> asnDetails =asnDetailService.findAsnDetails(asnId,"1");
|
||||
if (!asnDetails.isEmpty()) {
|
||||
for (AsnDetail d : asnDetails) {
|
||||
this.putawayInv(d.getId(), byId.getArea().getId(), d.getPoint()==null?null:d.getPoint().getId(),(d.getOrderQty()-d.getReceivedQty()),null);
|
||||
asnDetailService.putawayInv(d.getId(), byId.getArea().getId(), d.getPoint()==null?null:d.getPoint().getId(),(d.getOrderQty()-d.getReceivedQty()),null);
|
||||
byId.setReceivedDate(new Timestamp(System.currentTimeMillis()));
|
||||
byId.setReceivedQuantity(byId.getReceivedQuantity() + d.getOrderQty());
|
||||
|
||||
|
|
@ -467,7 +455,7 @@ public class AsnDetailController {
|
|||
// 通用异常,使用自定义状态码
|
||||
throw new BadRequestException(HttpStatus.NOT_FOUND, id + "库区未填写");
|
||||
}
|
||||
putawayInv(id,area.getId(),asnDetailButton.getOneRPoint().getId(),qty,null);
|
||||
asnDetailService.putawayInv(id,area.getId(),asnDetailButton.getOneRPoint().getId(),qty,null);
|
||||
} else if (asnDetailButton.getButton() == 3) {
|
||||
long id = asnDetailButton.getId();
|
||||
AsnDto byId = asnService.findById(id);
|
||||
|
|
@ -538,7 +526,7 @@ public class AsnDetailController {
|
|||
// 通用异常,使用自定义状态码
|
||||
throw new BadRequestException(HttpStatus.NOT_FOUND, id + "的副表" + asnDetailData.getId() + "的物料已经单一入库无法使用整单入库");
|
||||
}
|
||||
this.putawayInv(asnDetailData.getId(), byId.getArea().getId(), asnDetailData.getPoint().getId(),(asnDetailData.getOrderQty()-asnDetailData.getReceivedQty()),null);
|
||||
asnDetailService.putawayInv(asnDetailData.getId(), byId.getArea().getId(), asnDetailData.getPoint().getId(),(asnDetailData.getOrderQty()-asnDetailData.getReceivedQty()),null);
|
||||
}
|
||||
|
||||
if (apiResult.getStatus() == 200) {
|
||||
|
|
@ -563,95 +551,5 @@ public class AsnDetailController {
|
|||
}
|
||||
|
||||
|
||||
public void putawayInv(@RequestBody Long asnDetailId, Long areaId, Long pointId,double recQty,String ewm) {
|
||||
AsnDetail d = asnDetailService.getEntity(asnDetailId);
|
||||
Area area = areaService.findEntityById(areaId);
|
||||
Point point = null;
|
||||
if(pointId!=null){
|
||||
point = pointService.findEntityById(pointId);
|
||||
}
|
||||
Point zzkw=null;
|
||||
if(area.getBexb()){
|
||||
point= pointService.getPoint(area.getPointCode(), null, BaseStatus.HCKW, null);//取默认线边库位
|
||||
zzkw=d.getPoint();
|
||||
if(zzkw==null){
|
||||
//取默认制造库位
|
||||
zzkw= pointService.getPoint("ZZKW", null, null, null);
|
||||
}
|
||||
}
|
||||
if(point==null){
|
||||
throw new BadRequestException("请选择入库库位");
|
||||
}
|
||||
double unRecQty=d.getOrderQty() - d.getReceivedQty();
|
||||
if ( recQty<=unRecQty) {
|
||||
String pc1=null;
|
||||
//现品票确认将任务id回写到现品票表中
|
||||
XppRecord xppRecord = xppRecordRepository.findByCode(ewm);
|
||||
ItemKey ik=null;
|
||||
if(xppRecord!=null){
|
||||
if(!xppRecord.getStatus().equals(BizStatus.RECEIVED)&&!xppRecord.getStatus().equals(BizStatus.RETENTION_IN)){
|
||||
throw new BadRequestException(d.getItem().getCode()+"现品票状态不正确");
|
||||
}
|
||||
pc1=DateUtil.dateYmdz();//DateUtil.dateYmd(new Date());
|
||||
ik=xppRecord.getItemKey();
|
||||
}
|
||||
if(ik==null){
|
||||
ik = itemKeyService.getItemKey(d.getItem(), pc1);
|
||||
}
|
||||
Task t = taskService.storeTask(d, null, area, ik, point, point,recQty);
|
||||
if(xppRecord!=null) {
|
||||
xppRecord.setRkTask(t);
|
||||
xppRecord.setInvPoint(point);
|
||||
xppRecord.setStatus(BizStatus.PUTAWAY);
|
||||
xppRecord.setItemKey(ik);
|
||||
xppRecord.setSjr(SecurityUtils.getCurrentUsername());
|
||||
xppRecord.setSjDate(new Timestamp(new Date().getTime()));
|
||||
ewm=xppRecord.getEwm();
|
||||
xppRecordService.update(xppRecord);
|
||||
}
|
||||
d.setReceivedQty(d.getReceivedQty()+recQty);
|
||||
if(d.getReceivedQty().intValue()>=d.getOrderQty().intValue()){
|
||||
d.setStatus(BizStatus.PUTAWAY);
|
||||
}else if(d.getReceivedQty().intValue()>0){
|
||||
d.setStatus(BizStatus.PUTAWAY);
|
||||
}
|
||||
asnDetailService.update(d);
|
||||
point.setStatus(BaseStatus.USED);
|
||||
pointService.update(point);
|
||||
Inventory inv = invService.getInventory(ik, area, point, zzkw, d.getDept(), BizStatus.RECEIVING_UP);
|
||||
t.setInvId(inv.getId());
|
||||
taskService.update(t);
|
||||
double srcQty = inv.getQuantity();
|
||||
inv.addQty(recQty);
|
||||
invService.update(inv);
|
||||
String billCode=null;
|
||||
if(d.getAsn()!=null){
|
||||
Asn asn=d.getAsn();
|
||||
billCode=asn.getCode();
|
||||
asn.setReceivedQuantity(asn.getReceivedQuantity()+recQty);
|
||||
if(asn.getReceivedQuantity().intValue()>=asn.getOrderQuantity().intValue()) {
|
||||
asnService.update(asn);
|
||||
}
|
||||
}
|
||||
Point srcPoint = pointService.getPoint(null, null, BaseStatus.SHZC, null);
|
||||
InventoryLog log=invLogService.storeInventoryLog(BizStatus.RECEIVING_UP, BizStatus.ADD, billCode, area, ik, srcPoint, point, zzkw, srcQty, recQty,ewm,
|
||||
BizStatus.ASN, d.getId(), inv.getId(), d.getRemark());
|
||||
//根据账号增加耗用
|
||||
String userName=SecurityUtils.getCurrentUsername();
|
||||
if(userName!=null&&(userName.equals("楚友刚")||userName.equals("李栓荣")||userName.equals("颜建斌"))){
|
||||
BigItem bigItem=bigItemRepository.findByCode(ik.getItem().getCode());
|
||||
if(bigItem!=null){//自动生成耗用计划
|
||||
List<Long> jsAreaIds=bomAccountRepository.getJsAreaList(bigItem.getId());
|
||||
for(Long id:jsAreaIds){
|
||||
AreaDto areaDto=areaService.findById(id);
|
||||
Spareparts spareparts=sparepartsServiceImpl.createSpareparts(areaDto.getWorkingStation(),bigItem,xppRecord.getNrs(),"收货上架耗用");
|
||||
sparepartsServiceImpl.hySpareParts(spareparts.getId());
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
throw new BadRequestException(d.getItem().getCode() + "收货数量不能大于未收数量");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -213,7 +213,7 @@ public class PickDetailController {
|
|||
for (Long picktickId : picktickIds) {
|
||||
List<PickDetail> pickDetailList = pickDetailService.queryPickDetailList(picktickId);
|
||||
for (PickDetail pd : pickDetailList) {
|
||||
pickDetailService.allocate(pd.getId(), pd.getOrderQty() - pd.getAllocatedQty());
|
||||
pickDetailService.allocate(pd.getId(), pd.getOrderQty() - pd.getAllocatedQty(),pd.getPo());
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
|
|
@ -269,7 +269,7 @@ public class PickDetailController {
|
|||
newD.setAc(bomAccount.getAc());
|
||||
newD.setSupplier(bomAccount.getSupplier());
|
||||
newD.setPoint(bomAccount.getZPoint());
|
||||
pickDetailService.allocate(newD.getId(), newD.getOrderQty() - newD.getAllocatedQty());
|
||||
pickDetailService.allocate(newD.getId(), newD.getOrderQty() - newD.getAllocatedQty(),oldD.getPo());
|
||||
oldD.setOrderQty(oldD.getOrderQty()-sbQty);
|
||||
oldD.setSourceId(newD.getId());
|
||||
pickDetailService.update(oldD);
|
||||
|
|
@ -400,6 +400,7 @@ public class PickDetailController {
|
|||
double orderQty = oldDetail.getOrderQty() - oldDetail.getAllocatedQty() - oldDetail.getBcQty();
|
||||
PickDetail pickDetail = pickDetailService.createPickDetail(pickTicket, oldDetail.getItem(), null, orderQty, oldDetail.getSupplier());
|
||||
pickDetail.setPoint(oldDetail.getPoint());
|
||||
pickDetail.setPo(oldDetail.getPo());
|
||||
pickDetail.setPropC3(oldDetail.getPropC3());
|
||||
pickDetail.setAc(oldDetail.getAc());
|
||||
pickDetail.setContents(oldDetail.getContents());
|
||||
|
|
@ -409,7 +410,7 @@ public class PickDetailController {
|
|||
pickDetail.setArea(oldDetail.getArea());
|
||||
pickDetail.setShArea(oldDetail.getShArea());
|
||||
pickDetailService.update(pickDetail);
|
||||
pickDetailService.allocate(pickDetail.getId(), pickDetail.getOrderQty());
|
||||
pickDetailService.allocate(pickDetail.getId(), pickDetail.getOrderQty(),pickDetail.getPo());
|
||||
double bcQty = pickDetail.getAllocatedQty();
|
||||
//将出单数写入到订单数
|
||||
pickDetail.setOrderQty(bcQty);
|
||||
|
|
|
|||
|
|
@ -408,7 +408,7 @@ public class PickOutController {
|
|||
return;
|
||||
}
|
||||
//扣库存
|
||||
Inventory inventory = inventoryService.getInventory(log.getItemKey(),pt.getArea(),log.getDstPoint(),pd.getPoint(),log.getDept(),BizStatus.SHIPPING);
|
||||
Inventory inventory = inventoryService.getInventory(log.getItemKey(),pt.getArea(),log.getDstPoint(),pd.getPoint(),log.getDept(),BizStatus.SHIPPING,null);
|
||||
if (inventory==null) {
|
||||
throw new BadRequestException(HttpStatus.NOT_FOUND, log.getItem().getCode() + "未发现库存数据");
|
||||
}
|
||||
|
|
@ -525,8 +525,8 @@ public class PickOutController {
|
|||
// Point point=pickOut.getShArea().getPoint();
|
||||
Point point = pointService.findEntityById(pickDetail.getShArea().getPointId());
|
||||
//线边接收不需要管理到批次,重新生成itemKey
|
||||
ItemKey itemKey = itemKeyService.getItemKey(tasklog.getItemKey().getItem(), null);
|
||||
Inventory inventory = inventoryService.getInventory(itemKey, pickDetail.getShArea(), point, pickDetail.getPoint(), dept, BizStatus.SL_ALL);
|
||||
ItemKey itemKey = itemKeyService.getItemKey(tasklog.getItemKey().getItem(), null,task.getItemKey().getPropC2());
|
||||
Inventory inventory = inventoryService.getInventory(itemKey, pickDetail.getShArea(), point, pickDetail.getPoint(), dept, BizStatus.SL_ALL,null);
|
||||
double srcQty = inventory.getQuantity();
|
||||
inventory.setQuantity(inventory.getQuantity() + tasklog.getSlQty());
|
||||
inventoryService.update(inventory);
|
||||
|
|
|
|||
|
|
@ -18,14 +18,19 @@ package com.youchain.businessdata.rest;
|
|||
import com.youchain.DuplicateSubmission.DuplicateSubmission;
|
||||
import com.youchain.annotation.AnonymousAccess;
|
||||
import com.youchain.annotation.Log;
|
||||
import com.youchain.basicdata.domain.Area;
|
||||
import com.youchain.basicdata.domain.BillType;
|
||||
import com.youchain.basicdata.domain.Item;
|
||||
import com.youchain.basicdata.domain.Point;
|
||||
import com.youchain.basicdata.repository.BillTypeRepository;
|
||||
import com.youchain.basicdata.service.PointService;
|
||||
import com.youchain.businessdata.domain.*;
|
||||
import com.youchain.businessdata.inputJson.IPTask;
|
||||
import com.youchain.businessdata.inputJson.IScanPut;
|
||||
import com.youchain.businessdata.inputJson.PutawayRequest;
|
||||
import com.youchain.businessdata.inputJson.buttenJson.PickTicketButton;
|
||||
import com.youchain.businessdata.repository.*;
|
||||
import com.youchain.businessdata.returnJson.PutawayRet;
|
||||
import com.youchain.businessdata.returnJson.RPPickList;
|
||||
import com.youchain.businessdata.returnJson.RPTaskList;
|
||||
import com.youchain.businessdata.service.*;
|
||||
|
|
@ -52,6 +57,8 @@ import java.text.SimpleDateFormat;
|
|||
import java.util.*;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import static org.springframework.http.HttpStatus.BAD_REQUEST;
|
||||
|
||||
/**
|
||||
* @website https://eladmin.vip
|
||||
* @author JiangKun
|
||||
|
|
@ -70,6 +77,8 @@ public class PickTicketController {
|
|||
private final TaskLogRepository taskLogRepository;
|
||||
private final XppRecordService xppRecordService;
|
||||
private final XppRecordRepository xppRecordRepository;
|
||||
private final InventoryRepository inventoryRepository;
|
||||
private final BillTypeRepository billTypeRepository;
|
||||
private final TaskService taskService;
|
||||
private final TaskLogService taskLogService;
|
||||
private final InventoryService inventoryService;
|
||||
|
|
@ -190,16 +199,54 @@ public class PickTicketController {
|
|||
pickTicketService.pickingOperation(resources);
|
||||
return new ResponseEntity<>("操作成功",HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/xdckPick")
|
||||
@Log("箱单出库创建")
|
||||
@ApiOperation("箱单出库创建")
|
||||
@PreAuthorize("@el.check('super:man')")
|
||||
public ResponseEntity<Object> xdckPick(@RequestBody String stockCode){
|
||||
//检查该托盘是否还有库存
|
||||
List<Inventory> invs=inventoryRepository.queryInvStockCode(stockCode);
|
||||
if(invs.size()<=0){
|
||||
return new ResponseEntity<>("没有对应的库存",HttpStatus.BAD_REQUEST);
|
||||
}
|
||||
BillType bt=billTypeRepository.findByName(BaseStatus.XDBH);
|
||||
if(bt==null){
|
||||
throw new BadRequestException("维护箱单出库"+BaseStatus.XDBH+"类型");
|
||||
}
|
||||
Area outArea=invs.get(0).getArea();
|
||||
PickTicket pickTicket=pickTicketService.storePick(bt,null,outArea,"大",stockCode);
|
||||
double orderQty=0;
|
||||
//生成出库明细
|
||||
for (Inventory inv:invs){
|
||||
PickDetail detail=pickDetailService.createPickDetail(pickTicket,inv.getItemKey().getItem(), stockCode,inv.getQuantity(),null);
|
||||
orderQty+=detail.getOrderQty();
|
||||
//分配
|
||||
pickDetailService.allocate(detail.getId(), detail.getOrderQty(),stockCode);
|
||||
}
|
||||
pickTicket.setOrderQuantity(orderQty);
|
||||
pickTicketService.update(pickTicket);
|
||||
return new ResponseEntity<>("操作成功",HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/pickWhole")
|
||||
@Log("备货操作-整单拣货")
|
||||
@ApiOperation("备货操作-整单拣货")
|
||||
@PreAuthorize("@el.check('super:man')")
|
||||
@Transactional
|
||||
public ResponseEntity<Object> pickWhole(@RequestBody Long ptId){
|
||||
public ResponseEntity<Object> pickWhole(@RequestBody PickTicketButton resources){
|
||||
String bhr=SecurityUtils.getCurrentUsername();
|
||||
List<Task> ts=taskRepository.getNotPickTask(ptId);
|
||||
String stockCode=resources.getStockCode();
|
||||
if(resources.getPickConfirmNo()==8){
|
||||
List<PickTicket> pts=pickTicketRepository.queryByCusCode(stockCode);
|
||||
if(pts.size()<=0){
|
||||
throw new BadRequestException("没找到需要下架的箱单");
|
||||
}
|
||||
resources.setPickTicketId(pts.get(0).getId());
|
||||
}
|
||||
List<Task> ts=taskRepository.getNotPickTask(resources.getPickTicketId());
|
||||
if(ts.size()<=0){
|
||||
return new ResponseEntity<>("没有需要拣货的明细",HttpStatus.BAD_REQUEST);
|
||||
throw new BadRequestException("没有需要拣货的明细");
|
||||
}
|
||||
for(Task t:ts) {
|
||||
pickTicketService.pickForTask(t.getId(), t.getSrcStockCode(), t.getPlanQty()-t.getMoveQty(), null, bhr);
|
||||
|
|
@ -207,6 +254,55 @@ public class PickTicketController {
|
|||
return new ResponseEntity<>("操作成功",HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/pickWholeApp")
|
||||
@Log("箱单出库APP")
|
||||
@ApiOperation("箱单出库APP")
|
||||
@PreAuthorize("@el.check('super:man')")
|
||||
@Transactional
|
||||
public ResponseEntity<Object> pickWholeApp(@RequestBody PutawayRequest request){
|
||||
String bhr=SecurityUtils.getCurrentUsername();
|
||||
String stockCode=request.getStockCode();
|
||||
List<PutawayRet> rets=new ArrayList<>();
|
||||
if(request.getCheckType()==4){
|
||||
List<PickTicket> pts=pickTicketRepository.queryByCusCode(stockCode);
|
||||
if(pts.size()<=0){
|
||||
throw new BadRequestException("没找到需要下架的箱单");
|
||||
}
|
||||
Long pickId=pts.get(0).getId();
|
||||
List<Task> ts=taskRepository.getNotPickTask(pickId);
|
||||
if(ts.size()<=0){
|
||||
throw new BadRequestException("没有需要拣货的明细");
|
||||
}
|
||||
for(Task t:ts) {
|
||||
PickDetail pd=t.getPickDetail();
|
||||
PutawayRet ret=new PutawayRet();
|
||||
ret.createPutawayRet(pickId,pd.getId(),pd.getItem().getCode(),pd.getItem().getName(),t.getPlanQty(),t.getItemKey().getPropC2(),pd.getPo());
|
||||
rets.add(ret);
|
||||
}
|
||||
return new ResponseEntity<>(rets,HttpStatus.OK);
|
||||
|
||||
}else if(request.getCheckType()==6){
|
||||
List<PickTicket> pts=pickTicketRepository.queryByCusCode(stockCode);
|
||||
if(pts.size()<=0){
|
||||
throw new BadRequestException("没找到需要下架的箱单");
|
||||
}
|
||||
Long pickId=pts.get(0).getId();
|
||||
List<Task> ts=taskRepository.getNotPickTask(pickId);
|
||||
if(ts.size()<=0){
|
||||
throw new BadRequestException("没有需要拣货的明细");
|
||||
}
|
||||
for(Task t:ts) {
|
||||
PickDetail pd=t.getPickDetail();
|
||||
PutawayRet ret=new PutawayRet();
|
||||
ret.createPutawayRet(pickId,pd.getId(),pd.getItem().getCode(),pd.getItem().getName(),t.getPlanQty(),t.getItemKey().getPropC2(),pd.getPo());
|
||||
rets.add(ret);
|
||||
pickTicketService.pickForTask(t.getId(), t.getSrcStockCode(), t.getPlanQty()-t.getMoveQty(), null, bhr);
|
||||
}
|
||||
}
|
||||
|
||||
return new ResponseEntity<>("操作成功",HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/pickBatch")
|
||||
@Log("备货操作-批量拣货")
|
||||
@ApiOperation("备货操作-批量拣货")
|
||||
|
|
@ -375,8 +471,8 @@ public class PickTicketController {
|
|||
Point point=pointService.findEntityById(pt.getShArea().getPointId());
|
||||
Dept dept= UserUtils.getDept();
|
||||
//线边接收不需要管理到批次,重新生成itemKey
|
||||
ItemKey itemKey=itemKeyService.getItemKey(log.getItemKey().getItem(),null);
|
||||
Inventory inventory=inventoryService.getInventory(itemKey,pt.getShArea(),point,pickDetail.getPoint(),dept,BizStatus.SL_ALL);
|
||||
ItemKey itemKey=itemKeyService.getItemKey(log.getItemKey().getItem(),null,task.getItemKey().getPropC2());
|
||||
Inventory inventory=inventoryService.getInventory(itemKey,pt.getShArea(),point,pickDetail.getPoint(),dept,BizStatus.SL_ALL,null);
|
||||
double srcQty=inventory.getQuantity();
|
||||
inventory.setQuantity(inventory.getQuantity()+log.getSlQty());
|
||||
inventoryService.update(inventory);
|
||||
|
|
|
|||
|
|
@ -368,7 +368,7 @@ public class XppRecordController {
|
|||
inventoryLogService.storeInventoryLog(BizStatus.ZZKW_TL, BizStatus.REDUCE, "制造库位投料", shArea, srcInv.getItemKey(), srcPoint, dstPoint,
|
||||
zzkw,srcQty1, occurQty, xppRecord.getEwm(), BizStatus.ZZKW_TL, xppRecord.getId(), srcInv.getId(), "制造库位投料");
|
||||
//制造库位增加库存
|
||||
Inventory dstInv=inventoryService.getInventory(srcInv.getItemKey(),shArea,dstPoint,zzkw,srcInv.getDept(),BizStatus.ZZKW_TL);
|
||||
Inventory dstInv=inventoryService.getInventory(srcInv.getItemKey(),shArea,dstPoint,zzkw,srcInv.getDept(),BizStatus.ZZKW_TL,null);
|
||||
double srcQty2=dstInv.getQuantity();
|
||||
dstInv.addQty(occurQty);
|
||||
inventoryService.update(dstInv);
|
||||
|
|
@ -465,7 +465,7 @@ public class XppRecordController {
|
|||
}
|
||||
}
|
||||
String pc1=DateUtil.dateYmd(new Date());
|
||||
ItemKey ik = itemKeyService.getItemKey(xppRecord.getItem(), DateUtil.dateYmdz());
|
||||
ItemKey ik = itemKeyService.getItemKey(xppRecord.getItem(), DateUtil.dateYmdz(),BaseStatus.KS);
|
||||
xppRecord.setItemKey(ik);
|
||||
if(type==1) {
|
||||
inventoryLogService.storeInventoryLog(BizStatus.RECEIVING, BizStatus.ADD, "现品票采集", area, ik, srcPoint, srcPoint, null, 0d, xppRecord.getNrs() + 0d, ewm,
|
||||
|
|
@ -689,8 +689,8 @@ public class XppRecordController {
|
|||
//扣除库存
|
||||
xppRecordService.xppShipOut(id,xppRecord.getInvPoint().getArea(),xppRecord.getInvPoint(),zzkw,BizStatus.YK_OUT,"现品票直接移库接收","现品票直接移库接收");
|
||||
//增加库存,线边接收不需要管理到批次,重新生成itemKey
|
||||
ItemKey itemKey=itemKeyService.getItemKey(ik.getItem(),null);
|
||||
Inventory inventory=inventoryService.getInventory(itemKey,shArea,jskw,zzkw,dept,BizStatus.YK_JS);
|
||||
ItemKey itemKey=itemKeyService.getItemKey(ik.getItem(),null,ik.getPropC2());
|
||||
Inventory inventory=inventoryService.getInventory(itemKey,shArea,jskw,zzkw,dept,BizStatus.YK_JS,null);
|
||||
double srcQty=inventory.getQuantity();
|
||||
inventory.setQuantity(inventory.getQuantity()+xppRecord.getNrs());
|
||||
inventoryService.update(inventory);
|
||||
|
|
@ -739,7 +739,7 @@ public class XppRecordController {
|
|||
ItemKey ik = xppRecord.getItemKey();
|
||||
Point srcPoint=xppRecord.getInvPoint();
|
||||
Area srcArea=srcPoint.getArea();
|
||||
Inventory inventory=inventoryService.getInventory(ik,srcArea,srcPoint,zzkw,srcArea.getDept(),BizStatus.MOVE);
|
||||
Inventory inventory=inventoryService.getInventory(ik,srcArea,srcPoint,zzkw,srcArea.getDept(),BizStatus.MOVE,null);
|
||||
if(inventory==null){
|
||||
throw new BadRequestException(itemCode+"该库位无该批次库存");
|
||||
}
|
||||
|
|
@ -753,7 +753,7 @@ public class XppRecordController {
|
|||
inventoryLogService.storeInventoryLog(BizStatus.MOVE, BizStatus.REDUCE, "现品票移位", srcArea, ik, srcPoint, dstPoint, null, srcQty, xppRecord.getNrs()+0d,xppRecord.getEwm(),
|
||||
BizStatus.MOVE, xppRecord.getId(), inventory.getId(), "现品票移位");
|
||||
//目标库位增加
|
||||
Inventory dstInv=inventoryService.getInventory(ik,dstArea,dstPoint,zzkw,dstArea.getDept(),BizStatus.MOVE);
|
||||
Inventory dstInv=inventoryService.getInventory(ik,dstArea,dstPoint,zzkw,dstArea.getDept(),BizStatus.MOVE,null);
|
||||
inventoryLogService.storeInventoryLog(BizStatus.MOVE, BizStatus.ADD, "现品票移位", dstArea, ik, srcPoint, dstPoint, null, dstInv.getQuantity(), xppRecord.getNrs()+0d,xppRecord.getEwm(),
|
||||
BizStatus.MOVE, xppRecord.getId(), dstInv.getId(), "现品票移位");
|
||||
dstInv.addQty(xppRecord.getNrs());
|
||||
|
|
|
|||
|
|
@ -14,6 +14,7 @@ import javax.persistence.Entity;
|
|||
*/
|
||||
public interface BomPrint {
|
||||
String getNs();
|
||||
String getCode();
|
||||
String getXz();
|
||||
String getPm();
|
||||
String getSupplier();
|
||||
|
|
|
|||
|
|
@ -12,6 +12,8 @@ public class BomPrint_BiaoQian {
|
|||
|
||||
private String ns;
|
||||
|
||||
private String code;
|
||||
|
||||
//"箱种"
|
||||
private String xz;
|
||||
|
||||
|
|
|
|||
|
|
@ -12,6 +12,8 @@ public class BomPrint_BiaoQian2 {
|
|||
|
||||
private String ns;
|
||||
|
||||
private String code;
|
||||
|
||||
//"箱种"
|
||||
private String xz;
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,29 @@
|
|||
package com.youchain.businessdata.returnJson;
|
||||
|
||||
import com.youchain.businessdata.inputJson.PutawayRequest;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class PutawayRet {
|
||||
Long asnId;
|
||||
Long detailId;
|
||||
String itemCode;//品番
|
||||
String itemName;//品名
|
||||
double qty;//数量
|
||||
String bonded;//税别
|
||||
String po;//PO
|
||||
|
||||
|
||||
public PutawayRet createPutawayRet(Long asnId,Long detailId,String itemCode,String itemName ,double qty,String bonded,String po){
|
||||
this.setBonded(bonded);
|
||||
this.setPo(po);
|
||||
this.setQty(qty);
|
||||
this.setItemCode(itemCode);
|
||||
this.setItemName(itemName);
|
||||
this.setAsnId(asnId);
|
||||
this.setDetailId(detailId);
|
||||
return this;
|
||||
}
|
||||
}
|
||||
|
|
@ -24,6 +24,8 @@ import com.youchain.businessdata.domain.XppRecord;
|
|||
import com.youchain.businessdata.service.dto.AsnDetailDto;
|
||||
import com.youchain.businessdata.service.dto.AsnDetailQueryCriteria;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.List;
|
||||
import java.io.IOException;
|
||||
|
|
@ -128,4 +130,13 @@ public interface AsnDetailService {
|
|||
* @return
|
||||
*/
|
||||
List<AsnDetail> findAsnDetails(Long asnId,String type);
|
||||
|
||||
/**
|
||||
* 上架确认
|
||||
* @param asnDetailId
|
||||
* @param pointId
|
||||
*/
|
||||
|
||||
void putAwayDetial(Long asnDetailId, Long pointId);
|
||||
void putawayInv(@RequestBody Long asnDetailId, Long areaId, Long pointId, double recQty, String ewm);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -86,7 +86,7 @@ public interface AsnService {
|
|||
*/
|
||||
void download(List<AsnDto> all, HttpServletResponse response) throws Exception, Exception;
|
||||
|
||||
List<Asn> queryByAsnCodes(List<String> asnCodes);
|
||||
List<Asn> queryByCusCodes(List<String> cusCodes);
|
||||
|
||||
Map<String, Asn> queryByasnCodesToMap(List<String> asnCodes);
|
||||
Map<String, Asn> queryByCusCodesToMap(List<String> cusCodes);
|
||||
}
|
||||
|
|
@ -101,7 +101,7 @@ public interface InventoryService {
|
|||
|
||||
void downloadZz(List<InventoryDto> all, HttpServletResponse response) throws Exception, Exception;
|
||||
|
||||
List<Inventory> queryInventoryAllocate(long itemId,long areaId,Long zzkwId);
|
||||
List<Inventory> queryInventoryAllocate(long itemId,long areaId,Long zzkwId,String stockCode);
|
||||
|
||||
/**
|
||||
* 得到线边库存数量
|
||||
|
|
@ -114,7 +114,7 @@ public interface InventoryService {
|
|||
|
||||
List<Inventory> queryInventory(Long areaId,Long pointId,Long itemKeyId);
|
||||
|
||||
Inventory getInventory(ItemKey itemKey, Area area, Point point,Point zzkw, Dept dept, String type);
|
||||
Inventory getInventory(ItemKey itemKey, Area area, Point point,Point zzkw, Dept dept, String type,String stockCode);
|
||||
|
||||
/**
|
||||
* 满足线边耗用库存
|
||||
|
|
|
|||
|
|
@ -86,7 +86,7 @@ public interface ItemKeyService {
|
|||
*/
|
||||
void download(List<ItemKeyDto> all, HttpServletResponse response) throws Exception, Exception;
|
||||
|
||||
ItemKey getItemKey(Item item, String propC1);
|
||||
ItemKey getItemKey(Item item, String propC1,String propC2);
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -107,7 +107,7 @@ public interface PickDetailService {
|
|||
/**
|
||||
* 分配
|
||||
*/
|
||||
void allocate(long id,double quantity);
|
||||
void allocate(long id,double quantity,String stockCode);
|
||||
|
||||
/**
|
||||
* 取消分配
|
||||
|
|
|
|||
|
|
@ -126,6 +126,7 @@ public interface PickTicketService {
|
|||
* 拣货操作
|
||||
*/
|
||||
void pickingOperation(PickTicketButton pickTicketButton);
|
||||
|
||||
/**
|
||||
* 查询已经完成的拣货操作的数据
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -97,7 +97,7 @@ public interface TaskService {
|
|||
/**
|
||||
*
|
||||
* */
|
||||
Task storeTask(AsnDetail d, PickDetail p, Area area, ItemKey ik, Point srcPoint, Point dstPoint,double qty);
|
||||
Task storeTask(AsnDetail d, PickDetail p, Area area, ItemKey ik, Point srcPoint, Point dstPoint,double qty,String stockCode);
|
||||
/**
|
||||
* 根据出库单明细查询未完成的Task集合
|
||||
* @param id
|
||||
|
|
|
|||
|
|
@ -40,4 +40,7 @@ public class AsnQueryCriteria{
|
|||
/** 模糊 */
|
||||
@Query(type = Query.Type.EQUAL)
|
||||
private String status;
|
||||
|
||||
@Query(joinName = "billType", propName="code",type = Query.Type.EQUAL)
|
||||
private String billTypeCode;
|
||||
}
|
||||
|
|
@ -86,4 +86,8 @@ public class InventoryQueryCriteria{
|
|||
|
||||
@Query(joinName = "area",propName = "bexb",type = Query.Type.EQUAL)
|
||||
private Boolean bexb;
|
||||
|
||||
/** 模糊 */
|
||||
@Query(type = Query.Type.INNER_LIKE)
|
||||
private String stockCode;
|
||||
}
|
||||
|
|
@ -34,6 +34,8 @@ public class PickTicketQueryCriteria{
|
|||
|
||||
@Query(type = Query.Type.INNER_LIKE)
|
||||
private String gcCode;
|
||||
@Query(type = Query.Type.INNER_LIKE)
|
||||
private String cusCode;
|
||||
/** 模糊 */
|
||||
@Query(type = Query.Type.EQUAL,propName="code")
|
||||
private String code1;
|
||||
|
|
|
|||
|
|
@ -15,22 +15,23 @@
|
|||
*/
|
||||
package com.youchain.businessdata.service.impl;
|
||||
|
||||
import com.youchain.basicdata.domain.Item;
|
||||
import com.youchain.basicdata.domain.Point;
|
||||
import com.youchain.basicdata.domain.Stock;
|
||||
import com.youchain.basicdata.domain.*;
|
||||
import com.youchain.basicdata.repository.PointRepository;
|
||||
import com.youchain.basicdata.service.AreaService;
|
||||
import com.youchain.basicdata.service.PointService;
|
||||
import com.youchain.basicdata.service.StockService;
|
||||
import com.youchain.basicdata.service.dto.AreaDto;
|
||||
import com.youchain.businessdata.domain.*;
|
||||
import com.youchain.businessdata.repository.InventoryRepository;
|
||||
import com.youchain.businessdata.repository.TaskRepository;
|
||||
import com.youchain.businessdata.service.AsnService;
|
||||
import com.youchain.businessdata.service.InventoryLogService;
|
||||
import com.youchain.businessdata.service.InventoryService;
|
||||
import com.youchain.businessdata.repository.XppRecordRepository;
|
||||
import com.youchain.businessdata.service.*;
|
||||
import com.youchain.businessdata.service.dto.AsnDto;
|
||||
import com.youchain.businessdata.service.mapstruct.AsnMapper;
|
||||
import com.youchain.exception.BadRequestException;
|
||||
import com.youchain.utils.*;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import com.youchain.businessdata.repository.AsnDetailRepository;
|
||||
import com.youchain.businessdata.service.AsnDetailService;
|
||||
import com.youchain.businessdata.service.dto.AsnDetailDto;
|
||||
import com.youchain.businessdata.service.dto.AsnDetailQueryCriteria;
|
||||
import com.youchain.businessdata.service.mapstruct.AsnDetailMapper;
|
||||
|
|
@ -38,14 +39,14 @@ import org.springframework.stereotype.Service;
|
|||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.data.domain.Page;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
|
||||
import java.sql.Timestamp;
|
||||
import java.util.*;
|
||||
import java.io.IOException;
|
||||
import javax.persistence.EntityManager;
|
||||
import javax.persistence.Query;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.util.ArrayList;
|
||||
import java.util.LinkedHashMap;
|
||||
|
||||
/**
|
||||
* @website https://eladmin.vip
|
||||
|
|
@ -58,13 +59,23 @@ import java.util.LinkedHashMap;
|
|||
public class AsnDetailServiceImpl implements AsnDetailService {
|
||||
|
||||
private final AsnDetailRepository asnDetailRepository;
|
||||
private final PointRepository pointRepository;
|
||||
private final XppRecordRepository xppRecordRepository;
|
||||
private final InventoryRepository inventoryRepository;
|
||||
private final AsnDetailMapper asnDetailMapper;
|
||||
private final EntityManager entityMapper;
|
||||
private final TaskRepository taskRepository;
|
||||
|
||||
private final AsnService asnService;
|
||||
private final AsnMapper asnMapper;
|
||||
private final XppRecordService xppRecordService;
|
||||
private final InventoryService inventoryService;
|
||||
private final InventoryLogService inventoryLogService;
|
||||
private final PointService pointService;
|
||||
private final AreaService areaService;
|
||||
private final ItemKeyService itemKeyService;
|
||||
private final TaskService taskService;
|
||||
|
||||
private final AsnMapper asnMapper;
|
||||
|
||||
@Override
|
||||
public Map<String,Object> queryAll(AsnDetailQueryCriteria criteria, Pageable pageable){
|
||||
|
|
@ -139,7 +150,7 @@ public class AsnDetailServiceImpl implements AsnDetailService {
|
|||
ewm=xppRecord.getEwm();
|
||||
srcPoint=xppRecord.getInvPoint();
|
||||
}
|
||||
Inventory inventory=inventoryService.getInventory(t.getItemKey(),xppRecord.getArea(),srcPoint,t.getAsnDetail().getPoint(),t.getArea().getDept(),BizStatus.RECEIVING_CANCEL);
|
||||
Inventory inventory=inventoryService.getInventory(t.getItemKey(),xppRecord.getArea(),srcPoint,t.getAsnDetail().getPoint(),t.getArea().getDept(),BizStatus.RECEIVING_CANCEL,asn.getCusCode());
|
||||
if(inventory==null){
|
||||
throw new BadRequestException("找不到对应库存");
|
||||
}
|
||||
|
|
@ -215,4 +226,113 @@ public class AsnDetailServiceImpl implements AsnDetailService {
|
|||
List<AsnDetail> ds=query.getResultList();
|
||||
return ds;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void putAwayDetial(Long asnDetailId, Long pointId) {
|
||||
AsnDetail ad=asnDetailRepository.getById(asnDetailId);
|
||||
Point point=pointRepository.getById(pointId);
|
||||
|
||||
}
|
||||
@Override
|
||||
public void putawayInv(@RequestBody Long asnDetailId, Long areaId, Long pointId, double recQty, String ewm) {
|
||||
AsnDetail d = asnDetailRepository.getById(asnDetailId);
|
||||
String propC2="课税";
|
||||
if(d.getPropC2()!=null){
|
||||
if(d.getPropC2().equals("EXP -")||d.getPropC2().equals("课税")){
|
||||
propC2="课税";
|
||||
}else if(d.getPropC2().equals("保税")){
|
||||
propC2="保税";
|
||||
}else{
|
||||
propC2="保税";
|
||||
}
|
||||
}
|
||||
Area area =null;
|
||||
Point point = null;
|
||||
if(pointId!=null){
|
||||
point = pointService.findEntityById(pointId);
|
||||
if( point.getType().equals(BaseStatus.CH)){
|
||||
area=point.getArea();
|
||||
}
|
||||
}
|
||||
if(areaId!=null){
|
||||
area = areaService.findEntityById(areaId);
|
||||
}
|
||||
Point zzkw=null;
|
||||
String pc1=null;
|
||||
if(area.getBexb()){
|
||||
point= pointService.getPoint(area.getPointCode(), null, BaseStatus.HCKW, null);//取默认线边库位
|
||||
zzkw=d.getPoint();
|
||||
if(zzkw==null){
|
||||
//取默认制造库位
|
||||
zzkw= pointService.getPoint("ZZKW", null, null, null);
|
||||
}
|
||||
}else{
|
||||
pc1=DateUtil.dateYmdz();
|
||||
}
|
||||
if(point==null){
|
||||
throw new BadRequestException("请选择入库库位");
|
||||
}
|
||||
double unRecQty=d.getOrderQty() - d.getReceivedQty();
|
||||
if ( recQty<=unRecQty) {
|
||||
//现品票确认将任务id回写到现品票表中
|
||||
XppRecord xppRecord = xppRecordRepository.findByCode(ewm);
|
||||
ItemKey ik=null;
|
||||
if(xppRecord!=null){
|
||||
if(!xppRecord.getStatus().equals(BizStatus.RECEIVED)&&!xppRecord.getStatus().equals(BizStatus.RETENTION_IN)){
|
||||
throw new BadRequestException(d.getItem().getCode()+"现品票状态不正确");
|
||||
}
|
||||
ik=xppRecord.getItemKey();
|
||||
}
|
||||
if(ik==null){
|
||||
ik = itemKeyService.getItemKey(d.getItem(), pc1,propC2);
|
||||
}
|
||||
String billCode=null;
|
||||
String stockCode=null;
|
||||
if(d.getAsn()!=null){
|
||||
Asn asn=d.getAsn();
|
||||
billCode=asn.getCode();
|
||||
asn.setReceivedQuantity(asn.getReceivedQuantity()+recQty);
|
||||
if(asn.getReceivedQuantity().intValue()>=asn.getOrderQuantity().intValue()) {
|
||||
asn.setStatus(BizStatus.PUTAWAY);
|
||||
}
|
||||
asnService.update(asn);
|
||||
stockCode=asn.getCusCode();
|
||||
}
|
||||
Task t = taskService.storeTask(d, null, area, ik, point, point,recQty,stockCode);
|
||||
if(xppRecord!=null) {
|
||||
xppRecord.setRkTask(t);
|
||||
xppRecord.setInvPoint(point);
|
||||
xppRecord.setStatus(BizStatus.PUTAWAY);
|
||||
xppRecord.setItemKey(ik);
|
||||
xppRecord.setSjr(SecurityUtils.getCurrentUsername());
|
||||
xppRecord.setSjDate(new Timestamp(new Date().getTime()));
|
||||
ewm=xppRecord.getEwm();
|
||||
xppRecordService.update(xppRecord);
|
||||
}
|
||||
d.setReceivedQty(d.getReceivedQty()+recQty);
|
||||
if(d.getReceivedQty().intValue()>=d.getOrderQty().intValue()){
|
||||
d.setStatus(BizStatus.PUTAWAY);
|
||||
}else if(d.getReceivedQty().intValue()>0){
|
||||
d.setStatus(BizStatus.PUTAWAY);
|
||||
}
|
||||
this.update(d);
|
||||
point.setStatus(BaseStatus.USED);
|
||||
pointService.update(point);
|
||||
Inventory inv = inventoryService.getInventory(ik, area, point, zzkw, d.getDept(), BizStatus.RECEIVING_UP,stockCode);
|
||||
t.setInvId(inv.getId());
|
||||
taskService.update(t);
|
||||
double srcQty = inv.getQuantity();
|
||||
inv.addQty(recQty);
|
||||
|
||||
inventoryService.update(inv);
|
||||
Point srcPoint = pointService.getPoint(null, null, BaseStatus.SHZC, null);
|
||||
InventoryLog log=inventoryLogService.storeInventoryLog(BizStatus.RECEIVING_UP, BizStatus.ADD, billCode, area, ik, srcPoint, point, zzkw, srcQty, recQty,ewm,
|
||||
BizStatus.ASN, d.getId(), inv.getId(), d.getRemark());
|
||||
log.setDstStockCode(inv.getStockCode());
|
||||
inventoryLogService.update(log);
|
||||
} else {
|
||||
throw new BadRequestException(d.getItem().getCode() + "收货数量不能大于未收数量");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -147,22 +147,22 @@ public class AsnServiceImpl implements AsnService {
|
|||
}
|
||||
|
||||
@Override
|
||||
public List<Asn> queryByAsnCodes(List<String> asnCodes) {
|
||||
public List<Asn> queryByCusCodes(List<String> asnCodes) {
|
||||
if (CollectionUtils.isEmpty(asnCodes)) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
//去重
|
||||
asnCodes = asnCodes.stream().filter(Objects::nonNull).distinct().collect(Collectors.toList());
|
||||
return asnRepository.queryByAsnCodes(asnCodes);
|
||||
return asnRepository.queryByCusCodes(asnCodes);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Asn> queryByasnCodesToMap(List<String> asnCodes) {
|
||||
List<Asn> asnList = queryByAsnCodes(asnCodes);
|
||||
public Map<String, Asn> queryByCusCodesToMap(List<String> cusCodes) {
|
||||
List<Asn> asnList = queryByCusCodes(cusCodes);
|
||||
//封装成map
|
||||
Map<String, Asn> asnMap = Maps.newHashMap();
|
||||
for (Asn asn : asnList) {
|
||||
asnMap.put(asn.getCode(), asn);
|
||||
asnMap.put(asn.getCusCode(), asn);
|
||||
}
|
||||
return asnMap;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -187,7 +187,7 @@ public class CountMoveServiceImpl implements CountMoveService {
|
|||
countMoveDetailRecord.setStatus(BizStatus.OPEN);
|
||||
countMoveDetailRecordService.create(countMoveDetailRecord);
|
||||
//查找目标库位是否有库存,有则数量累加,没有新建
|
||||
Inventory newInv=inventoryService.getInventory(itemKey,d.getDstPoint().getArea(),d.getDstPoint(),inv.getZzkw(),dept,BizStatus.COUNT_MOVE);
|
||||
Inventory newInv=inventoryService.getInventory(itemKey,d.getDstPoint().getArea(),d.getDstPoint(),inv.getZzkw(),dept,BizStatus.COUNT_MOVE,null);
|
||||
newInv.setQuantity(newInv.getQuantity()+xpp.getNrs());
|
||||
inventoryService.update(newInv);
|
||||
inv.setQuantity(inv.getQuantity()-xpp.getNrs());
|
||||
|
|
@ -294,7 +294,7 @@ public class CountMoveServiceImpl implements CountMoveService {
|
|||
countMoveDetailRecord.setStatus(BizStatus.OPEN);
|
||||
countMoveDetailRecordService.create(countMoveDetailRecord);
|
||||
//查找目标库位是否有库存,有则数量累加,没有新建
|
||||
Inventory newInv = inventoryService.getInventory(itemKey, d.getDstPoint().getArea(), d.getDstPoint(), inv.getZzkw(), dept, BizStatus.COUNT_MOVE);
|
||||
Inventory newInv = inventoryService.getInventory(itemKey, d.getDstPoint().getArea(), d.getDstPoint(), inv.getZzkw(), dept, BizStatus.COUNT_MOVE,null);
|
||||
newInv.setQuantity(newInv.getQuantity() + xpp.getNrs());
|
||||
inventoryService.update(newInv);
|
||||
inv.setQuantity(inv.getQuantity() - xpp.getNrs());
|
||||
|
|
|
|||
|
|
@ -149,7 +149,7 @@ public class InventoryServiceImpl implements InventoryService {
|
|||
}
|
||||
|
||||
@Override
|
||||
public List<Inventory> queryInventoryAllocate(long itemId, long areaId,Long zzkwId) {
|
||||
public List<Inventory> queryInventoryAllocate(long itemId, long areaId,Long zzkwId,String stockCode) {
|
||||
String hql = " from Inventory inv where 1=1 " +
|
||||
" and inv.itemKey.item.id=" + itemId + " " +
|
||||
" and inv.area.id=" + areaId + " " +
|
||||
|
|
@ -160,6 +160,11 @@ public class InventoryServiceImpl implements InventoryService {
|
|||
}else{
|
||||
hql+="and inv.point.type='"+BaseStatus.CH+"' ";
|
||||
}
|
||||
if(stockCode!=null){
|
||||
hql+=" and inv.stockCode='"+stockCode+"'";
|
||||
}else{
|
||||
hql+=" and inv.stockCode is null";
|
||||
}
|
||||
hql+= " order by inv.itemKey.propC1 asc ";
|
||||
Query query = entityManager.createQuery(hql);
|
||||
List<Inventory> inventoryList = query.getResultList();
|
||||
|
|
@ -193,7 +198,7 @@ public class InventoryServiceImpl implements InventoryService {
|
|||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Inventory getInventory(ItemKey itemKey, Area area, Point point, Point zzkw, Dept dept, String type) {
|
||||
public Inventory getInventory(ItemKey itemKey, Area area, Point point, Point zzkw, Dept dept, String type,String stockCode) {
|
||||
//生成Inventory
|
||||
String hql = " from Inventory inv where 1=1 ";
|
||||
if(type.equals(BizStatus.SL_ALL)||type.equals(BizStatus.ZZKW_TL)||type.equals(BizStatus.YK_JS)){
|
||||
|
|
@ -230,6 +235,11 @@ public class InventoryServiceImpl implements InventoryService {
|
|||
throw new BadRequestException(HttpStatus.NOT_FOUND, "线边仓制造库位必填");
|
||||
}
|
||||
}
|
||||
if(stockCode!=null){
|
||||
hql += " and inv.stockCode='" + stockCode + "' ";
|
||||
} else {
|
||||
hql += " and inv.stockCode is null";
|
||||
}
|
||||
|
||||
Query query = entityManager.createQuery(hql);
|
||||
List<Inventory> inventoryList = query.getResultList();
|
||||
|
|
@ -246,6 +256,7 @@ public class InventoryServiceImpl implements InventoryService {
|
|||
if(zzkw==null){
|
||||
zzkw=pointService.getPoint("ZZKW",null,null,null);
|
||||
}
|
||||
inventory.setStockCode(stockCode);
|
||||
inventory.setZzkw(zzkw);
|
||||
// inventory.setStock(stock);
|
||||
// inventory.setStockCode(stock.getCode());
|
||||
|
|
@ -326,7 +337,7 @@ public class InventoryServiceImpl implements InventoryService {
|
|||
//原点位=之前记录的库位,目标库位=选择的库位 库区、品番、暂存库位、制造库位都取inv上的。 原数量取原纪录,目标数量取移出后的数量, 发生数量=输入的移位数量
|
||||
//操作类型=库存调整,增加/减少=根据实际数量判断,大于原数量为增加,小于原数量为减少,其他的类似上面数据
|
||||
//移位时,加入目标库位之前没有这个记录,则自动生成
|
||||
//库存唯一键:area,point,itemKey,zzkw
|
||||
//库存唯一键:area,point,itemKey,zzkw,stockCode
|
||||
//位移所需要的数据
|
||||
InventoryYW inventoryYW = inventoryButton.getInventoryYW();
|
||||
//原数据
|
||||
|
|
@ -337,7 +348,7 @@ public class InventoryServiceImpl implements InventoryService {
|
|||
double rmNum = inventoryOld.getQuantity() - rmNumber;
|
||||
if (rmNum > 0) {//移除数量小于库存数量
|
||||
//生成库存或生成记录
|
||||
Inventory inventory = this.getInventory(inventoryOld.getItemKey(), inventoryOld.getArea(), inventoryYW.getDstPoint(), inventoryOld.getZzkw(), inventoryOld.getDept(), BizStatus.MOVE);
|
||||
Inventory inventory = this.getInventory(inventoryOld.getItemKey(), inventoryOld.getArea(), inventoryYW.getDstPoint(), inventoryOld.getZzkw(), inventoryOld.getDept(), BizStatus.MOVE,null);
|
||||
//生成移除的日志
|
||||
invLogService.storeInventoryLog(BizStatus.MOVE, BizStatus.REDUCE, null, inventoryOld.getArea(), inventoryOld.getItemKey(), inventoryOld.getPoint(), inventoryYW.getDstPoint(), inventoryOld.getStock(), inventoryOld.getStock(), inventoryOld.getQuantity(), rmNumber,
|
||||
null,null, BizStatus.MOVE, inventoryOld.getId(), inventoryOld.getId(), inventoryOld.getDescription());
|
||||
|
|
@ -354,7 +365,7 @@ public class InventoryServiceImpl implements InventoryService {
|
|||
throw new BadRequestException(HttpStatus.NOT_FOUND, "移除数量大于库存数量");
|
||||
} else {//移除数量等于库存数量
|
||||
//生成库存或生成记录
|
||||
Inventory inventory = this.getInventory(inventoryOld.getItemKey(), inventoryOld.getArea(), inventoryYW.getDstPoint(), inventoryOld.getZzkw(), inventoryOld.getDept(), BizStatus.MOVE);
|
||||
Inventory inventory = this.getInventory(inventoryOld.getItemKey(), inventoryOld.getArea(), inventoryYW.getDstPoint(), inventoryOld.getZzkw(), inventoryOld.getDept(), BizStatus.MOVE,null);
|
||||
//生成移除的日志
|
||||
invLogService.storeInventoryLog(BizStatus.MOVE, BizStatus.REDUCE, null, inventoryOld.getArea(), inventoryOld.getItemKey(), inventoryOld.getPoint(), inventoryYW.getDstPoint(), inventoryOld.getStock(), inventoryOld.getStock(), inventoryOld.getQuantity(), rmNumber,
|
||||
null,null,BizStatus.MOVE, inventoryOld.getId(), inventoryOld.getId(), inventoryOld.getDescription());
|
||||
|
|
|
|||
|
|
@ -121,7 +121,7 @@ public class ItemKeyServiceImpl implements ItemKeyService {
|
|||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public ItemKey getItemKey(Item item, String propC1) {
|
||||
public ItemKey getItemKey(Item item, String propC1, String propC2) {
|
||||
//生成itemKey
|
||||
String hql = " from ItemKey ik where 1=1 ";
|
||||
if (item != null) {
|
||||
|
|
@ -132,6 +132,11 @@ public class ItemKeyServiceImpl implements ItemKeyService {
|
|||
}else{
|
||||
hql += " and ik.propC1 is null";
|
||||
}
|
||||
if (propC2 != null && propC2.length() > 0) {
|
||||
hql += " and ik.propC2='" + propC2 + "' ";
|
||||
}else{
|
||||
hql += " and ik.propC2 is null";
|
||||
}
|
||||
// if (propD1 != null) {
|
||||
// hql += " and DATE(ik.propD1) ='" + propD1 +"'";
|
||||
// }else{
|
||||
|
|
@ -148,6 +153,7 @@ public class ItemKeyServiceImpl implements ItemKeyService {
|
|||
itemKey.setItem(item);
|
||||
itemKey.setDept(item.getDept());
|
||||
itemKey.setPropC1(propC1);
|
||||
itemKey.setPropC2(propC2);
|
||||
this.create(itemKey);
|
||||
}
|
||||
return itemKey;
|
||||
|
|
|
|||
|
|
@ -192,7 +192,7 @@ public class PickDetailServiceImpl implements PickDetailService {
|
|||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public synchronized void allocate(long id, double quantity){
|
||||
public synchronized void allocate(long id, double quantity,String stockCode){
|
||||
PickDetailDto pickDetailDto = findById(id);
|
||||
PickDetail pd = toEntity(pickDetailDto);//Dto转实体
|
||||
PickTicket pickTicket = pd.getPickTicket();
|
||||
|
|
@ -203,17 +203,14 @@ public class PickDetailServiceImpl implements PickDetailService {
|
|||
if(pd.getPoint()!=null&&pickTicket.getArea().getBexb()){
|
||||
zzkwId=pd.getPoint().getId();
|
||||
}
|
||||
List<Inventory> invs = inventoryService.queryInventoryAllocate(item.getId(), pickTicket.getArea().getId(),zzkwId);
|
||||
List<Inventory> invs = inventoryService.queryInventoryAllocate(item.getId(), pickTicket.getArea().getId(),zzkwId,stockCode);
|
||||
if (invs.size() > 0) {
|
||||
double allocateQty = 0;
|
||||
double unQty = quantity;//未分配数量
|
||||
double srs=item.getExtendD3();
|
||||
for (Inventory inv : invs) {
|
||||
Point startPoint = inv.getPoint();//原库位
|
||||
String areaCode="S仓";
|
||||
if(startPoint.getArea().equals("A仓")){
|
||||
areaCode="A仓";
|
||||
}
|
||||
String areaCode=BaseStatus.DEFAULT_AREA;
|
||||
Point endPoint = pointService.getPoint(null, null, BaseStatus.BHZC, areaCode);//目标库位
|
||||
if(endPoint==null){
|
||||
throw new BadRequestException(HttpStatus.NOT_FOUND, "请维护备货暂存区");
|
||||
|
|
@ -251,7 +248,7 @@ public class PickDetailServiceImpl implements PickDetailService {
|
|||
//备货表上出单日期(审核写)
|
||||
pickTicket.setOutOrderDate(new Timestamp(new Date().getTime()));
|
||||
pickTicketRepository.save(pickTicket);
|
||||
Task task = taskService.storeTask(null,pd,pickTicket.getArea(),inv.getItemKey(),startPoint,endPoint,allocateQty);
|
||||
Task task = taskService.storeTask(null,pd,pickTicket.getArea(),inv.getItemKey(),startPoint,endPoint,allocateQty,inv.getStockCode());
|
||||
//修改占用数,写入日志
|
||||
inventoryLogService.storeInventoryLog(BizStatus.CHANGE_ZYS, BizStatus.ADD, pickTicket.getCode(), inv.getArea(), inv.getItemKey(), inv.getPoint(),
|
||||
inv.getPoint(), inv.getZzkw(), (inv.getQueuedQty()-allocateQty), allocateQty, null, BizStatus.PICK,
|
||||
|
|
@ -280,7 +277,7 @@ public class PickDetailServiceImpl implements PickDetailService {
|
|||
//根据Taskz找到对应的库存
|
||||
double quantity=task.getPlanQty();
|
||||
// Inventory inv = inventoryRepository.findById(task.getInvId()).get();
|
||||
Inventory inv=inventoryService.getInventory(task.getItemKey(),pd.getPickTicket().getArea(),task.getSrcPoint(),task.getZzkw(),pd.getPickTicket().getDept(),BizStatus.CANCEL);
|
||||
Inventory inv=inventoryService.getInventory(task.getItemKey(),pd.getPickTicket().getArea(),task.getSrcPoint(),task.getZzkw(),pd.getPickTicket().getDept(),BizStatus.CANCEL,task.getDstStockCode());
|
||||
//修改占用数,写入日志
|
||||
inventoryLogService.storeInventoryLog(BizStatus.CHANGE_ZYS, BizStatus.REDUCE, task.getBillCode(), inv.getArea(), inv.getItemKey(), inv.getPoint(),
|
||||
inv.getPoint(), inv.getZzkw(), inv.getQueuedQty(), quantity, null, BizStatus.PICK,
|
||||
|
|
|
|||
|
|
@ -192,7 +192,7 @@ public class PickInstructionServiceImpl implements PickInstructionService {
|
|||
}
|
||||
}
|
||||
PickDetail pickDetailDto = pickDetailRepository.save(pickDetail);
|
||||
pickDetailService.allocate(pickDetailDto.getId(), pickDetailDto.getOrderQty());
|
||||
pickDetailService.allocate(pickDetailDto.getId(), pickDetailDto.getOrderQty(),null);
|
||||
bcAllocatedQty = pickDetail.getAllocatedQty();
|
||||
//回写
|
||||
pickInstruction.setAllocatedQty(pickInstruction.getAllocatedQty()+bcAllocatedQty);
|
||||
|
|
|
|||
|
|
@ -181,19 +181,22 @@ public class PickTicketServiceImpl implements PickTicketService {
|
|||
@Override
|
||||
public PickTicket storePick(BillType bt, Area shArea, Area outArea, String bpType, String jhCode) {
|
||||
PickTicket p = new PickTicket();
|
||||
p.setCode(codeUtils.getCode_yyMMdd(bt.getPrefix()+'-', 3));
|
||||
p.setCode(codeUtils.getCode_yyMMdd(bt.getPrefix(), 3));
|
||||
p.setBillType(bt);
|
||||
p.setShArea(shArea);
|
||||
p.setArea(outArea);
|
||||
p.setDept(UserUtils.getDept());
|
||||
p.setOrderDate(new Timestamp(System.currentTimeMillis()));
|
||||
p.setBpType(bpType);
|
||||
p.setDept(UserUtils.getDept());
|
||||
p.setRelatedBill1(jhCode);
|
||||
p.setCusCode(jhCode);
|
||||
p.setStatus(BizStatus.OPEN);
|
||||
pickTicketRepository.save(p);
|
||||
return p;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void pickingOperation(PickTicketButton pickTicketButton) {
|
||||
|
|
@ -259,7 +262,7 @@ public class PickTicketServiceImpl implements PickTicketService {
|
|||
inventory.setQueuedQty(inventory.getQueuedQty() - taskDto.getPlanQty());
|
||||
//存储拣货确认的库存数据
|
||||
Task task = taskMapper.toEntity(taskDto);
|
||||
Inventory inventory1 = inventoryService.getInventory(inventory.getItemKey(), inventory.getArea(), task.getDstPoint(), task.getZzkw(), inventory.getDept(), BizStatus.RECEIVING_UP);
|
||||
Inventory inventory1 = inventoryService.getInventory(inventory.getItemKey(), inventory.getArea(), task.getDstPoint(), task.getZzkw(), inventory.getDept(), BizStatus.RECEIVING_UP,task.getDstStockCode());
|
||||
invLogService.storeInventoryLog(BizStatus.PICK_DOWN, BizStatus.ADD, task.getBillCode(), inventory1.getArea(), inventory1.getItemKey(), inventory1.getPoint(), inventory1.getPoint(), inventory1.getStock(), inventory1.getStock(), inventory1.getQuantity(), kcNum,
|
||||
null, null, BizStatus.PICK_DOWN, inventory1.getId(), inventory1.getId(), inventory1.getDescription());
|
||||
inventory1.setQuantity(inventory1.getQuantity() + kcNum);
|
||||
|
|
@ -277,7 +280,7 @@ public class PickTicketServiceImpl implements PickTicketService {
|
|||
taskLogService.createTaskLogData(taskDto, taskDto.getPlanQty());
|
||||
//存储拣货确认的库存数据
|
||||
Task task = taskMapper.toEntity(taskDto);
|
||||
Inventory inventory1 = inventoryService.getInventory(inventory.getItemKey(), inventory.getArea(), task.getDstPoint(), task.getZzkw(), inventory.getDept(), BizStatus.RECEIVING_UP);
|
||||
Inventory inventory1 = inventoryService.getInventory(inventory.getItemKey(), inventory.getArea(), task.getDstPoint(), task.getZzkw(), inventory.getDept(), BizStatus.RECEIVING_UP,task.getDstStockCode());
|
||||
invLogService.storeInventoryLog(BizStatus.PICK_DOWN, BizStatus.ADD, task.getBillCode(), inventory1.getArea(), inventory1.getItemKey(), inventory1.getPoint(), inventory1.getPoint(), inventory1.getStock(), inventory1.getStock(), inventory1.getQuantity(), kcNum,
|
||||
null, null, BizStatus.PICK_DOWN, inventory1.getId(), inventory1.getId(), inventory1.getDescription());
|
||||
inventory1.setQuantity(inventory1.getQuantity() + kcNum);
|
||||
|
|
@ -376,7 +379,7 @@ public class PickTicketServiceImpl implements PickTicketService {
|
|||
inventory1.setQueuedQty(inventory1.getQueuedQty() - taskDto1.getPlanQty());
|
||||
//存储拣货确认的库存数据
|
||||
Task task = taskMapper.toEntity(taskDto1);
|
||||
Inventory inventory11 = inventoryService.getInventory(inventory1.getItemKey(), inventory1.getArea(), task.getDstPoint(), task.getZzkw(), inventory1.getDept(), BizStatus.RECEIVING_UP);
|
||||
Inventory inventory11 = inventoryService.getInventory(inventory1.getItemKey(), inventory1.getArea(), task.getDstPoint(), task.getZzkw(), inventory1.getDept(), BizStatus.RECEIVING_UP,task.getDstStockCode());
|
||||
invLogService.storeInventoryLog(BizStatus.PICK_DOWN, BizStatus.ADD, null, inventory11.getArea(), inventory11.getItemKey(), inventory11.getPoint(), inventory11.getPoint(), inventory11.getStock(), inventory11.getStock(), inventory11.getQuantity(), kcNum1,
|
||||
null, null, BizStatus.PICK_DOWN, inventory11.getId(), inventory11.getId(), inventory11.getDescription());
|
||||
inventory11.setQuantity(inventory11.getQuantity() + kcNum1);
|
||||
|
|
@ -394,7 +397,7 @@ public class PickTicketServiceImpl implements PickTicketService {
|
|||
taskLogService.createTaskLogData(taskDto1, taskDto1.getPlanQty());
|
||||
//存储拣货确认的库存数据
|
||||
Task task = taskMapper.toEntity(taskDto1);
|
||||
Inventory inventory11 = inventoryService.getInventory(inventory1.getItemKey(), inventory1.getArea(), task.getDstPoint(), task.getZzkw(), inventory1.getDept(), BizStatus.RECEIVING_UP);
|
||||
Inventory inventory11 = inventoryService.getInventory(inventory1.getItemKey(), inventory1.getArea(), task.getDstPoint(), task.getZzkw(), inventory1.getDept(), BizStatus.RECEIVING_UP,task.getDstStockCode());
|
||||
invLogService.storeInventoryLog(BizStatus.PICK_DOWN, BizStatus.ADD, null, inventory11.getArea(), inventory11.getItemKey(), inventory11.getPoint(), inventory11.getPoint(), inventory11.getStock(), inventory11.getStock(), inventory11.getQuantity(), kcNum1,
|
||||
null, null, BizStatus.PICK_DOWN, inventory11.getId(), inventory11.getId(), inventory11.getDescription());
|
||||
inventory11.setQuantity(inventory11.getQuantity() + kcNum1);
|
||||
|
|
@ -488,7 +491,7 @@ public class PickTicketServiceImpl implements PickTicketService {
|
|||
PickTicket pt = pd.getPickTicket();
|
||||
Point zzkw=pd.getPoint();
|
||||
//大部品的库存不能进去
|
||||
Inventory srcInv = inventoryService.getInventory(task.getItemKey(),pt.getArea(),task.getSrcPoint(),zzkw,pt.getArea().getDept(),BizStatus.PICK_DOWN);
|
||||
Inventory srcInv = inventoryService.getInventory(task.getItemKey(),pt.getArea(),task.getSrcPoint(),zzkw,pt.getArea().getDept(),BizStatus.PICK_DOWN,task.getDstStockCode());
|
||||
if (srcInv==null) {
|
||||
throw new BadRequestException(HttpStatus.NOT_FOUND, task.getItem().getCode() + "未发现库存数据");
|
||||
}
|
||||
|
|
@ -539,12 +542,12 @@ public class PickTicketServiceImpl implements PickTicketService {
|
|||
invLogService.update(invLog);
|
||||
|
||||
//生成备货库存,备货库存也不需要线边
|
||||
Inventory dstInv = inventoryService.getInventory(srcInv.getItemKey(), srcInv.getArea(), task.getDstPoint(), zzkw, srcInv.getDept(), BizStatus.PICK_DOWN);
|
||||
/** Inventory dstInv = inventoryService.getInventory(srcInv.getItemKey(), srcInv.getArea(), task.getDstPoint(), zzkw, srcInv.getDept(), BizStatus.PICK_DOWN,task.getDstStockCode());
|
||||
invLogService.storeInventoryLog(BizStatus.PICK_DOWN, BizStatus.ADD, pt.getCode(), dstInv.getArea(), dstInv.getItemKey(), dstInv.getPoint(), dstInv.getPoint(),
|
||||
zzkw, dstInv.getQuantity(), kcNum, barCode, BizStatus.PICK_DOWN, taskLog.getId(),
|
||||
dstInv.getId(), pd.getRemark());
|
||||
dstInv.setQuantity(dstInv.getQuantity() + kcNum);
|
||||
inventoryService.update(dstInv);
|
||||
inventoryService.update(dstInv); **/
|
||||
pd.setPickedQty(pd.getPickedQty() + pickQty);
|
||||
pickDetailService.update(pd);
|
||||
//拣货数量
|
||||
|
|
@ -731,7 +734,7 @@ public class PickTicketServiceImpl implements PickTicketService {
|
|||
PickDetail pd = task.getPickDetail();
|
||||
Point zzkw = pd.getPoint();//pointService.findByCode("ZZKW",null,null,null,null);
|
||||
//源库存增加,目标减少
|
||||
Inventory srcInv = inventoryService.getInventory(taskLog.getItemKey(), area, taskLog.getSrcPoint(), zzkw, taskLog.getDept(), BizStatus.PICK_CANCEL);
|
||||
Inventory srcInv = inventoryService.getInventory(taskLog.getItemKey(), area, taskLog.getSrcPoint(), zzkw, taskLog.getDept(), BizStatus.PICK_CANCEL,task.getDstStockCode());
|
||||
//添加物料
|
||||
srcInv.setQuantity(srcInv.getQuantity() + cancelNum);
|
||||
//修改占用数,写入日志
|
||||
|
|
@ -754,7 +757,7 @@ public class PickTicketServiceImpl implements PickTicketService {
|
|||
pd.setPickedQty(pd.getPickedQty() - cancelNum);
|
||||
pickDetailService.update(pd);
|
||||
//扣库存
|
||||
Inventory dstInv = inventoryService.getInventory(taskLog.getItemKey(), area, taskLog.getDstPoint(), zzkw, taskLog.getDept(), BizStatus.PICK_CANCEL);
|
||||
Inventory dstInv = inventoryService.getInventory(taskLog.getItemKey(), area, taskLog.getDstPoint(), zzkw, taskLog.getDept(), BizStatus.PICK_CANCEL,null);
|
||||
if (dstInv==null) {
|
||||
throw new BadRequestException(HttpStatus.NOT_FOUND, taskLog.getItem().getCode() + "未发现库存数据");
|
||||
}
|
||||
|
|
@ -791,7 +794,7 @@ public class PickTicketServiceImpl implements PickTicketService {
|
|||
PickDetail pd = task.getPickDetail();
|
||||
Point zzkw = pd.getPoint();
|
||||
//源库存增加
|
||||
Inventory srcInv = inventoryService.getInventory(taskLog.getItemKey(), area, taskLog.getDstPoint(), zzkw, taskLog.getDept(), BizStatus.SHIP_CANCEL);
|
||||
Inventory srcInv = inventoryService.getInventory(taskLog.getItemKey(), area, taskLog.getDstPoint(), zzkw, taskLog.getDept(), BizStatus.SHIP_CANCEL,null);
|
||||
srcInv.setQuantity(srcInv.getQuantity() + cancelNum);
|
||||
srcInv.setQueuedQty(srcInv.getQueuedQty() + cancelNum);
|
||||
inventoryService.update(srcInv);
|
||||
|
|
|
|||
|
|
@ -186,7 +186,7 @@ public class SparepartsServiceImpl implements SparepartsService {
|
|||
if(point==null){
|
||||
throw new BadRequestException(ba.getRArea().getCode()+"库区无对应待投料库位");
|
||||
}
|
||||
ItemKey itemKey=itemKeyService.getItemKey(ba.getItem(),null);
|
||||
ItemKey itemKey=itemKeyService.getItemKey(ba.getItem(),null,ba.getBonded());
|
||||
Inventory inventory = new Inventory();
|
||||
inventory.setItemKey(itemKey);
|
||||
inventory.setPoint(point);
|
||||
|
|
|
|||
|
|
@ -60,11 +60,11 @@ import javax.servlet.http.HttpServletResponse;
|
|||
@Slf4j
|
||||
public class TaskServiceImpl implements TaskService {
|
||||
|
||||
private final InventoryLogService inventoryLogService;
|
||||
private final TaskRepository taskRepository;
|
||||
private final TaskMapper taskMapper;
|
||||
private final InventoryRepository inventoryRepository;
|
||||
private final PickDetailRepository pickDetailRepository;
|
||||
private final InventoryLogService inventoryLogService;
|
||||
private final EntityManager entityMapper;
|
||||
private final StockRepository stockRepository;
|
||||
@Override
|
||||
|
|
@ -159,7 +159,7 @@ public class TaskServiceImpl implements TaskService {
|
|||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Task storeTask(AsnDetail d, PickDetail p, Area area, ItemKey ik, Point srcPoint, Point dstPoint,double qty) {
|
||||
public Task storeTask(AsnDetail d, PickDetail p, Area area, ItemKey ik, Point srcPoint, Point dstPoint,double qty,String stockCode) {
|
||||
Task t = new Task();
|
||||
t.setAsnDetail(d);
|
||||
t.setPickDetail(p);
|
||||
|
|
@ -189,6 +189,7 @@ public class TaskServiceImpl implements TaskService {
|
|||
t.setDstPoint(dstPoint);
|
||||
t.setDstPointCode(dstPoint.getCode());
|
||||
}
|
||||
t.setDstStockCode(stockCode);
|
||||
this.create(t);
|
||||
return t;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -71,15 +71,16 @@ public class XppRecordServiceImpl implements XppRecordService {
|
|||
private final XppRecordMapper xppRecordMapper;
|
||||
private final ItemRepository itemRepository;
|
||||
private final AsnDetailRepository asnDetailRepository;
|
||||
private final PointRepository pointRepository;
|
||||
private final RedisUtils redisUtils;
|
||||
private final InventoryLogService inventoryLogService;
|
||||
private final EntityManager entityManager;
|
||||
private final BomAccountRepository bomAccountRepository;
|
||||
private final AreaRepository areaRepository;
|
||||
private final JobRepository jobRepository;
|
||||
|
||||
private final InventoryLogService inventoryLogService;
|
||||
private final InventoryService inventoryService;
|
||||
|
||||
private final EntityManager entityManager;
|
||||
private final RedisUtils redisUtils;
|
||||
|
||||
|
||||
@Override
|
||||
public Map<String, Object> queryAll(XppRecordQueryCriteria criteria, Pageable pageable) {
|
||||
int pageNum=pageable.getPageNumber();//当前页
|
||||
|
|
@ -508,7 +509,7 @@ public class XppRecordServiceImpl implements XppRecordService {
|
|||
}
|
||||
this.update(xppRecord);
|
||||
String itemCode=xppRecord.getItem().getCode();
|
||||
Inventory inventory=inventoryService.getInventory(ik,area,srcPoint,zzkw,area.getDept(),type);
|
||||
Inventory inventory=inventoryService.getInventory(ik,area,srcPoint,zzkw,area.getDept(),type,null);
|
||||
if(inventory==null){
|
||||
throw new BadRequestException(itemCode+"该库位无该批次库存");
|
||||
}
|
||||
|
|
|
|||
|
|
@ -61,7 +61,7 @@ public interface BaseStatus {
|
|||
/**
|
||||
* 默认入库库区
|
||||
*/
|
||||
public static String DEFAULT_AREA = "久荣协同S仓库";
|
||||
public static String DEFAULT_AREA = "CGK";
|
||||
|
||||
public static String AREA_S = "S仓";
|
||||
|
||||
|
|
@ -86,10 +86,30 @@ public interface BaseStatus {
|
|||
* 单据类型-单点
|
||||
*/
|
||||
public static String BT_DD = "单点";
|
||||
/**
|
||||
* 单据类型-箱单入库
|
||||
*/
|
||||
public static String XDRK = "箱单入库";
|
||||
|
||||
/**
|
||||
* 单据类型-箱单备货
|
||||
*/
|
||||
public static String XDBH = "箱单备货";
|
||||
/**
|
||||
* 单据类型-正常入库
|
||||
*/
|
||||
public static String RK = "正常入库";
|
||||
public static String XBRK = "线边入库";
|
||||
|
||||
|
||||
/**
|
||||
* 税别-课税
|
||||
*/
|
||||
public static String KS = "课税";
|
||||
|
||||
/**
|
||||
* 税别-保税
|
||||
*/
|
||||
public static String BS = "保税";
|
||||
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ spring:
|
|||
druid:
|
||||
db-type: com.alibaba.druid.pool.DruidDataSource
|
||||
driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
|
||||
url: jdbc:log4jdbc:mysql://${DB_HOST:localhost}:${DB_PORT:53306}/${DB_NAME:kams4_prod}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false
|
||||
url: jdbc:log4jdbc:mysql://${DB_HOST:localhost}:${DB_PORT:53306}/${DB_NAME:wxjbt}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false
|
||||
username: ${DB_USER:root}
|
||||
password: ${DB_PWD:Youchain@56}
|
||||
# 初始连接数
|
||||
|
|
|
|||
|
|
@ -7,8 +7,8 @@ spring:
|
|||
freemarker:
|
||||
check-template-location: false
|
||||
profiles:
|
||||
#active: prod
|
||||
active: dev
|
||||
active: prod
|
||||
#active: dev
|
||||
jackson:
|
||||
time-zone: GMT+8
|
||||
data:
|
||||
|
|
|
|||
Loading…
Reference in New Issue