Commit 48e86735 authored by chicheng's avatar chicheng

添加查询扫码标签接口

parent 1e5aa65a
......@@ -18,7 +18,7 @@ import springfox.documentation.oas.annotations.EnableOpenApi;
* @date 2025/01/23
*/
@SpringBootApplication
@ComponentScan(basePackages = {"com.topsunit. li"})
@ComponentScan(basePackages = {"com.topsunit"})
@EntityScan("com.topsunit.scanservice.ximai.barcode.entity")
@EnableJpaRepositories("com.topsunit.scanservice.ximai.barcode.dao")
@EnableFeignClients(basePackages = {"com.topsunit"})
......
package com.topsunit.scanservice.ximai.barcode.common;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.topsunit.scanservice.ximai.common.ServiceResult;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.View;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Map;
/**
* <p>Title: GlobalHandlerExceptionResolver</p>
* <p>Description: 处理异常返回</p>
*
* @author xi.feng
* @version V1.0
* @date 2021/10/19
*/
@Component
public class GlobalHandlerExceptionResolver implements HandlerExceptionResolver {
private final JsonView view;
private static final Logger log = LoggerFactory.getLogger(GlobalHandlerExceptionResolver.class);
public GlobalHandlerExceptionResolver(JsonView view) {
this.view = view;
}
@Override
public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
ModelAndView modelAndView = new ModelAndView(getView());
modelAndView.addObject(ServiceResult.ofException(ex));
log.error("系统异常", ex);
return modelAndView;
}
private View getView(){
return view;
}
@Component
public static class JsonView implements View {
private final ObjectMapper mapper;
public JsonView(ObjectMapper mapper) {
this.mapper = mapper;
}
@Override
public String getContentType() {
return "application/json;charset=utf-8";
}
@Override
public void render(Map<String, ?> model, HttpServletRequest request, HttpServletResponse response) throws Exception {
response.setContentType("application/json;charset=utf-8");
response.getOutputStream().write(mapper.writeValueAsBytes(model.values().stream().findFirst()));
}
}
}
package com.topsunit.scanservice.ximai.barcode.common;
import com.topsunit.scanservice.ximai.common.ServiceResult;
import org.springframework.core.MethodParameter;
import org.springframework.http.MediaType;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.server.ServerHttpRequest;
import org.springframework.http.server.ServerHttpResponse;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyAdvice;
@ControllerAdvice(basePackages="com.topsunit.scanservice.ximai.barcode")
public class ResponseWrapperAdvice implements ResponseBodyAdvice<Object> {
@Override
public boolean supports(MethodParameter methodParameter, Class<? extends HttpMessageConverter<?>> aClass) {
return true;
}
@Override
public Object beforeBodyWrite(Object o, MethodParameter methodParameter, MediaType mediaType, Class<? extends HttpMessageConverter<?>> aClass, ServerHttpRequest serverHttpRequest, ServerHttpResponse serverHttpResponse) {
if(o instanceof ServiceResult){
return o;
}
return ServiceResult.ofResult(o);
}
}
package com.topsunit.scanservice.ximai.barcode.controller;
import com.topsunit.scanservice.ximai.barcode.dto.ATCstDmDto;
import com.topsunit.scanservice.ximai.barcode.service.ATCstDmService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.web.bind.annotation.*;
/**
* <p>Title: ATCstDmController</p>
* <p>Description: 在线标签打印控制器</p>
*
* @author system
* @version V1.0
* @date 2025/01/23
*/
@Api(tags = "在线标签打印管理")
@RestController
@RequestMapping("/api/barcode-system/atcstdm")
public class ATCstDmController {
@Autowired
private ATCstDmService atCstDmService;
@ApiOperation("根据ID获取在线标签打印信息")
@GetMapping("/{id}")
public ATCstDmDto getById(@ApiParam("主键ID") @PathVariable String id) {
return atCstDmService.getById(id);
}
@ApiOperation("获取在线标签打印列表")
@GetMapping("/list")
public Page<ATCstDmDto> getList(
@ApiParam("查询条件") ATCstDmDto criteria,
@ApiParam("页码") @RequestParam(defaultValue = "0") int page,
@ApiParam("每页大小") @RequestParam(defaultValue = "10") int size) {
return atCstDmService.getList(criteria, page, size);
}
@ApiOperation("保存在线标签打印信息")
@PostMapping
public ATCstDmDto save(@ApiParam("在线标签打印信息") @RequestBody ATCstDmDto dto) {
return atCstDmService.save(dto);
}
@ApiOperation("更新在线标签打印信息")
@PutMapping
public ATCstDmDto update(@ApiParam("在线标签打印信息") @RequestBody ATCstDmDto dto) {
return atCstDmService.update(dto);
}
@ApiOperation("删除在线标签打印信息")
@DeleteMapping("/{id}")
public String delete(@ApiParam("主键ID") @PathVariable String id) {
return atCstDmService.delete(id);
}
}
package com.topsunit.scanservice.ximai.barcode.controller;
import com.topsunit.scanservice.ximai.barcode.dto.ATCstDsDto;
import com.topsunit.scanservice.ximai.barcode.dto.BoxCodeQueryResultDto;
import com.topsunit.scanservice.ximai.barcode.service.ATCstDsService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* <p>Title: ATCstDsController</p>
* <p>Description: 派工明细控制器</p>
*
* @author system
* @version V1.0
* @date 2025/01/23
*/
@Api(tags = "派工明细管理")
@RestController
@RequestMapping("/barcodeSystem/atcstds")
public class ATCstDsController {
@Autowired
private ATCstDsService atCstDsService;
@ApiOperation("根据ID获取派工明细信息")
@GetMapping("/{id}")
public ATCstDsDto getById(@ApiParam("主键ID") @PathVariable String id) {
return atCstDsService.getById(id);
}
@ApiOperation("获取派工明细列表")
@GetMapping("/list")
public Page<ATCstDsDto> getList(
@ApiParam("查询条件") ATCstDsDto criteria,
@ApiParam("页码") @RequestParam(defaultValue = "0") int page,
@ApiParam("每页大小") @RequestParam(defaultValue = "10") int size) {
return atCstDsService.getList(criteria, page, size);
}
@ApiOperation("保存派工明细信息")
@PostMapping
public ATCstDsDto save(@ApiParam("派工明细信息") @RequestBody ATCstDsDto dto) {
return atCstDsService.save(dto);
}
@ApiOperation("更新派工明细信息")
@PutMapping
public ATCstDsDto update(@ApiParam("派工明细信息") @RequestBody ATCstDsDto dto) {
return atCstDsService.update(dto);
}
@ApiOperation("删除派工明细信息")
@DeleteMapping("/{id}")
public String delete(@ApiParam("主键ID") @PathVariable String id) {
return atCstDsService.delete(id);
}
@ApiOperation("通过箱码查询小标签条码")
@GetMapping("/queryByBoxCode")
public List<BoxCodeQueryResultDto> getSmallLabelBarcodesByBoxCode(
@ApiParam("箱码") @RequestParam String boxCode) {
return atCstDsService.getSmallLabelBarcodesByBoxCode(boxCode);
}
}
//package com.topsunit.scanservice.ximai.barcode.controller;
//
//import com.topsunit.scanservice.ximai.common.ServiceResult;
//import io.swagger.annotations.Api;
//import io.swagger.annotations.ApiOperation;
//import org.springframework.web.bind.annotation.GetMapping;
//import org.springframework.web.bind.annotation.RequestMapping;
//import org.springframework.web.bind.annotation.RestController;
//
///**
// * <p>Title: BarcodeSystemController</p>
// * <p>Description: 条码系统控制器</p>
// *
// * @author system
// * @version V1.0
// * @date 2025/01/23
// */
//@Api(tags = "条码系统管理")
//@RestController
//@RequestMapping("/api/barcode-system")
//public class BarcodeSystemController {
//
// @ApiOperation("条码系统健康检查")
// @GetMapping("/health")
// public ServiceResult<String> health() {
// return ServiceResult.success("条码系统运行正常");
// }
//
// @ApiOperation("获取条码系统信息")
// @GetMapping("/info")
// public ServiceResult<String> info() {
// return ServiceResult.success("条码系统 - 版本 1.0.0");
// }
//}
package com.topsunit.scanservice.ximai.barcode.controller;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* <p>Title: BarcodeSystemController</p>
* <p>Description: 条码系统控制器</p>
*
* @author system
* @version V1.0
* @date 2025/01/23
*/
@Api(tags = "条码系统管理")
@RestController
@RequestMapping("/api/barcode-system")
public class BarcodeSystemController {
@ApiOperation("条码系统健康检查")
@GetMapping("/health")
public String health() {
return "条码系统运行正常";
}
@ApiOperation("获取条码系统信息")
@GetMapping("/info")
public String info() {
return "条码系统 - 版本 1.0.0";
}
}
package com.topsunit.scanservice.ximai.barcode.dao;
import com.topsunit.scanservice.ximai.barcode.entity.ATCstDm;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import java.util.List;
/**
* <p>Title: ATCstDmDao</p>
* <p>Description: 在线标签打印数据访问接口</p>
*
* @author system
* @version V1.0
* @date 2025/01/23
*/
public interface ATCstDmDao extends JpaRepository<ATCstDm, String>, JpaSpecificationExecutor<ATCstDm> {
/**
* 根据箱码查询记录(显式按实体字段 pSNNo 查询,避免命名解析大小写问题)
*/
@Query("select d from ATCstDm d where d.psnno = ?1")
List<ATCstDm> findByPSNNo(String pSNNo);
}
package com.topsunit.scanservice.ximai.barcode.dao;
import com.topsunit.scanservice.ximai.barcode.entity.ATCstDs;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import java.util.List;
/**
* <p>Title: ATCstDsDao</p>
* <p>Description: 派工明细数据访问接口</p>
*
* @author system
* @version V1.0
* @date 2025/01/23
*/
public interface ATCstDsDao extends JpaRepository<ATCstDs, String>, JpaSpecificationExecutor<ATCstDs> {
/**
* 根据MGPK查询派工明细记录
*/
List<ATCstDs> findByMgpk(String mgpk);
}
package com.topsunit.scanservice.ximai.barcode.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
/**
* <p>Title: ATCstDmDto</p>
* <p>Description: 在线标签打印数据传输对象</p>
*
* @author system
* @version V1.0
* @date 2025/01/23
*/
@Data
public class ATCstDmDto {
@ApiModelProperty("主键ID")
private String id;
@ApiModelProperty("业务员ID")
private BigDecimal emplID;
@ApiModelProperty("业务员编码")
private String emplNo;
@ApiModelProperty("业务员")
private String emplName;
@ApiModelProperty("部门ID")
private BigDecimal deptId;
@ApiModelProperty("部门编码")
private String deptNo;
@ApiModelProperty("部门")
private String deptName;
@ApiModelProperty("单据号")
private String mNo;
@ApiModelProperty("日期")
private String bdt;
@ApiModelProperty("零件ID")
private String mItemID;
@ApiModelProperty("零件号")
private String mitemno;
@ApiModelProperty("客户品号")
private String mitemno_1;
@ApiModelProperty("itemmgpk")
private String itemmgpk;
@ApiModelProperty("databasename")
private String databasename;
@ApiModelProperty("customcolumn01")
private String customcolumn01;
@ApiModelProperty("customcolumn02")
private String customcolumn02;
@ApiModelProperty("零件名称")
private String mItemName;
@ApiModelProperty("计划日期")
private String ymdt;
@ApiModelProperty("包装数量")
private String mQty;
@ApiModelProperty("条码")
private String snno;
@ApiModelProperty("条码1")
private String snno1;
@ApiModelProperty("箱码")
private String pSNNo;
@ApiModelProperty("LMGPK")
private String lmgpk;
@ApiModelProperty("早晚班")
private String trick;
@ApiModelProperty("车型")
private String iType;
@ApiModelProperty("包装方式")
private String ipackinfo;
@ApiModelProperty("备注")
private String mNote;
@ApiModelProperty("制单人")
private String cuser;
@ApiModelProperty("制单人编码")
private String cuserNo;
@ApiModelProperty("创建时间")
private String cdt;
@ApiModelProperty("MGPK")
private String mgpk;
@ApiModelProperty("AID")
private BigDecimal aid;
@ApiModelProperty("msnid")
private BigDecimal msnid;
@ApiModelProperty("MPK")
private BigDecimal mpk;
@ApiModelProperty("创建时间")
private String createDate;
@ApiModelProperty("修改时间")
private String modiDate;
}
package com.topsunit.scanservice.ximai.barcode.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
/**
* <p>Title: ATCstDsDto</p>
* <p>Description: 派工明细数据传输对象</p>
*
* @author system
* @version V1.0
* @date 2025/01/23
*/
@Data
public class ATCstDsDto {
@ApiModelProperty("主键ID")
private String id;
@ApiModelProperty("itemmgpk")
private String itemmgpk;
@ApiModelProperty("零件号")
private String sItemNo;
@ApiModelProperty("客户品号")
private String sItemNo_1;
@ApiModelProperty("零件名称")
private String sItemName;
@ApiModelProperty("规格型号")
private String spec;
@ApiModelProperty("包装数量")
private String itemrpack;
@ApiModelProperty("数量")
private BigDecimal snqty;
@ApiModelProperty("小标签条码")
private String snNo;
@ApiModelProperty("条码")
private String snno1;
@ApiModelProperty("备注")
private String srNote;
@ApiModelProperty("SURID")
private BigDecimal surid;
@ApiModelProperty("SAUID")
private String sauid;
@ApiModelProperty("SGPK")
private String sgpk;
@ApiModelProperty("创建时间")
private String createDate;
@ApiModelProperty("修改时间")
private String modiDate;
}
package com.topsunit.scanservice.ximai.barcode.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
/**
* <p>Title: BoxCodeQueryResultDto</p>
* <p>Description: 箱码查询小标签条码结果数据传输对象</p>
*
* @author system
* @version V1.0
* @date 2025/01/23
*/
@Data
public class BoxCodeQueryResultDto {
// ATCstDm 字段
@ApiModelProperty("主键ID")
private String id;
@ApiModelProperty("业务员ID")
private BigDecimal emplID;
@ApiModelProperty("业务员编码")
private String emplNo;
@ApiModelProperty("业务员")
private String emplName;
@ApiModelProperty("部门ID")
private BigDecimal deptId;
@ApiModelProperty("部门编码")
private String deptNo;
@ApiModelProperty("部门")
private String deptName;
@ApiModelProperty("单据号")
private String mNo;
@ApiModelProperty("日期")
private String bdt;
@ApiModelProperty("零件ID")
private String mItemID;
@ApiModelProperty("零件号")
private String mitemno;
@ApiModelProperty("客户品号")
private String mitemno_1;
@ApiModelProperty("零件名称")
private String mItemName;
@ApiModelProperty("计划日期")
private String ymdt;
@ApiModelProperty("包装数量")
private String mQty;
@ApiModelProperty("箱码")
private String pSNNo;
@ApiModelProperty("早晚班")
private String trick;
@ApiModelProperty("车型")
private String iType;
@ApiModelProperty("包装方式")
private String ipackinfo;
@ApiModelProperty("备注")
private String mNote;
@ApiModelProperty("制单人")
private String cuser;
@ApiModelProperty("制单人编码")
private String cuserNo;
@ApiModelProperty("创建时间")
private String cdt;
@ApiModelProperty("MGPK")
private String mgpk;
// ATCstDs 字段
@ApiModelProperty("派工明细ID")
private String dsId;
@ApiModelProperty("itemmgpk")
private String itemmgpk;
@ApiModelProperty("零件号")
private String sItemNo;
@ApiModelProperty("客户品号")
private String sItemNo_1;
@ApiModelProperty("零件名称")
private String sItemName;
@ApiModelProperty("规格型号")
private String spec;
@ApiModelProperty("包装数量")
private String itemrpack;
@ApiModelProperty("数量")
private BigDecimal snqty;
@ApiModelProperty("小标签条码")
private String snNo;
@ApiModelProperty("条码")
private String snno1;
@ApiModelProperty("备注")
private String srNote;
@ApiModelProperty("SURID")
private BigDecimal surid;
@ApiModelProperty("SAUID")
private String sauid;
@ApiModelProperty("SGPK")
private String sgpk;
}
package com.topsunit.scanservice.ximai.barcode.entity;
import io.swagger.annotations.ApiModelProperty;
import javax.persistence.Column;
import lombok.Data;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
import java.math.BigDecimal;
/**
* <p>Title: ATCstDm</p>
* <p>Description: 在线标签打印</p>
*
* @author system
* @version V1.0
* @date 2025/01/23
*/
@Data
@Entity
@Table(name = "ATCstDm")
public class ATCstDm {
@Id
@ApiModelProperty("MGPK")
@Column(name = "MGPK")
private String mgpk;
@ApiModelProperty("业务员ID")
@Column(name = "EmplID")
private BigDecimal emplid;
@ApiModelProperty("业务员编码")
@Column(name = "EmplNo")
private String emplno;
@ApiModelProperty("业务员")
@Column(name = "EmplName")
private String emplname;
@ApiModelProperty("部门ID")
@Column(name = "DeptId")
private BigDecimal deptid;
@ApiModelProperty("部门编码")
@Column(name = "DeptNo")
private String deptno;
@ApiModelProperty("部门")
@Column(name = "DeptName")
private String deptname;
@ApiModelProperty("单据号")
@Column(name = "MNo")
private String mno;
@ApiModelProperty("日期")
@Column(name = "BDT")
private String bdt;
@ApiModelProperty("零件ID")
@Column(name = "MItemID")
private String mitemid;
@ApiModelProperty("零件号")
@Column(name = "mitemno")
private String mitemno;
@ApiModelProperty("客户品号")
@Column(name = "mitemno_1")
private String mitemno_1;
@ApiModelProperty("itemmgpk")
@Column(name = "itemmgpk")
private String itemmgpk;
@ApiModelProperty("databasename")
@Column(name = "databasename")
private String databasename;
@ApiModelProperty("customcolumn01")
@Column(name = "customcolumn01")
private String customcolumn01;
@ApiModelProperty("customcolumn02")
@Column(name = "customcolumn02")
private String customcolumn02;
@ApiModelProperty("零件名称")
@Column(name = "MItemName")
private String mitemname;
@ApiModelProperty("计划日期")
@Column(name = "YMDT")
private String ymdt;
@ApiModelProperty("包装数量")
@Column(name = "MQty")
private String mqty;
@ApiModelProperty("条码")
@Column(name = "snno")
private String snno;
@ApiModelProperty("条码1")
@Column(name = "snno1")
private String snno1;
@ApiModelProperty("箱码")
@Column(name = "pSNNo")
private String psnno;
@ApiModelProperty("LMGPK")
@Column(name = "LMGPK")
private String lmgpk;
@ApiModelProperty("早晚班")
@Column(name = "Trick")
private String trick;
@ApiModelProperty("备注")
@Column(name = "MNote")
private String mnote;
@ApiModelProperty("制单人")
@Column(name = "Cuser")
private String cuser;
@ApiModelProperty("创建时间")
@Column(name = "CDT")
private String cdt;
@ApiModelProperty("AID")
@Column(name = "AID")
private BigDecimal aid;
@ApiModelProperty("MPK")
@Column(name = "MPK")
private BigDecimal mpk;
}
package com.topsunit.scanservice.ximai.barcode.entity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
import java.math.BigDecimal;
/**
* <p>Title: ATCstDs</p>
* <p>Description: 派工明细</p>
*
* @author system
* @version V1.0
* @date 2025/01/23
*/
@Data
@Entity
@Table(name = "ATCstDs")
public class ATCstDs {
@Id
@ApiModelProperty("SGPK")
private String sgpk;
@ApiModelProperty("itemmgpk")
private String itemmgpk;
@ApiModelProperty("零件号")
private String sItemNo;
@ApiModelProperty("客户品号")
private String sItemNo_1;
@ApiModelProperty("零件名称")
private String sItemName;
@ApiModelProperty("规格型号")
private String spec;
@ApiModelProperty("包装数量")
private String itemrpack;
@ApiModelProperty("数量")
private BigDecimal snqty;
@ApiModelProperty("小标签条码")
private String snNo;
@ApiModelProperty("条码")
private String snno1;
@ApiModelProperty("备注")
private String srNote;
@ApiModelProperty("SURID")
private BigDecimal surid;
@ApiModelProperty("SAUID")
private String sauid;
@ApiModelProperty("MGPK")
private String mgpk;
}
package com.topsunit.scanservice.ximai.barcode.service;
import com.topsunit.scanservice.ximai.barcode.dao.ATCstDmDao;
import com.topsunit.scanservice.ximai.barcode.dto.ATCstDmDto;
import com.topsunit.scanservice.ximai.barcode.entity.ATCstDm;
import com.topsunit.scanservice.ximai.common.TopsunitException;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.domain.Specification;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
/**
* <p>Title: ATCstDmService</p>
* <p>Description: 在线标签打印服务类</p>
*
* @author system
* @version V1.0
* @date 2025/01/23
*/
@Service
public class ATCstDmService {
@Autowired
private ATCstDmDao atCstDmDao;
/**
* 根据ID获取在线标签打印信息
*/
public ATCstDmDto getById(String id) {
Optional<ATCstDm> optional = atCstDmDao.findById(id);
if (optional.isPresent()) {
ATCstDmDto dto = new ATCstDmDto();
BeanUtils.copyProperties(optional.get(), dto);
return dto;
}
throw new TopsunitException("未找到指定记录");
}
/**
* 获取在线标签打印列表
*/
public Page<ATCstDmDto> getList(ATCstDmDto criteria, int page, int size) {
Pageable pageable = PageRequest.of(page, size);
Specification<ATCstDm> spec = new Specification<ATCstDm>() {
@Override
public Predicate toPredicate(Root<ATCstDm> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
List<Predicate> predicates = new ArrayList<>();
if (criteria.getMNo() != null && !criteria.getMNo().isEmpty()) {
predicates.add(cb.like(root.get("mNo"), "%" + criteria.getMNo() + "%"));
}
if (criteria.getMitemno() != null && !criteria.getMitemno().isEmpty()) {
predicates.add(cb.like(root.get("mitemno"), "%" + criteria.getMitemno() + "%"));
}
if (criteria.getMItemName() != null && !criteria.getMItemName().isEmpty()) {
predicates.add(cb.like(root.get("mItemName"), "%" + criteria.getMItemName() + "%"));
}
if (criteria.getBdt() != null && !criteria.getBdt().isEmpty()) {
predicates.add(cb.equal(root.get("bdt"), criteria.getBdt()));
}
if (criteria.getYmdt() != null && !criteria.getYmdt().isEmpty()) {
predicates.add(cb.equal(root.get("ymdt"), criteria.getYmdt()));
}
return cb.and(predicates.toArray(new Predicate[0]));
}
};
Page<ATCstDm> pageResult = atCstDmDao.findAll(spec, pageable);
Page<ATCstDmDto> dtoPage = pageResult.map(entity -> {
ATCstDmDto dto = new ATCstDmDto();
BeanUtils.copyProperties(entity, dto);
return dto;
});
return dtoPage;
}
/**
* 保存在线标签打印信息
*/
@Transactional
public ATCstDmDto save(ATCstDmDto dto) {
try {
ATCstDm entity = new ATCstDm();
BeanUtils.copyProperties(dto, entity);
ATCstDm saved = atCstDmDao.save(entity);
ATCstDmDto result = new ATCstDmDto();
BeanUtils.copyProperties(saved, result);
return result;
} catch (Exception e) {
throw new TopsunitException("保存失败: " + e.getMessage());
}
}
/**
* 更新在线标签打印信息
*/
@Transactional
public ATCstDmDto update(ATCstDmDto dto) {
try {
if (dto.getId() == null || dto.getId().isEmpty()) {
throw new TopsunitException("ID不能为空");
}
Optional<ATCstDm> optional = atCstDmDao.findById(dto.getId());
if (!optional.isPresent()) {
throw new TopsunitException("未找到指定记录");
}
ATCstDm entity = optional.get();
BeanUtils.copyProperties(dto, entity);
ATCstDm saved = atCstDmDao.save(entity);
ATCstDmDto result = new ATCstDmDto();
BeanUtils.copyProperties(saved, result);
return result;
} catch (Exception e) {
throw new TopsunitException("更新失败: " + e.getMessage());
}
}
/**
* 删除在线标签打印信息
*/
@Transactional
public String delete(String id) {
try {
if (id == null || id.isEmpty()) {
throw new TopsunitException("ID不能为空");
}
if (!atCstDmDao.existsById(id)) {
throw new TopsunitException("未找到指定记录");
}
atCstDmDao.deleteById(id);
return "删除成功";
} catch (Exception e) {
throw new TopsunitException("删除失败: " + e.getMessage());
}
}
}
package com.topsunit.scanservice.ximai.barcode.service;
import com.topsunit.scanservice.ximai.barcode.dao.ATCstDsDao;
import com.topsunit.scanservice.ximai.barcode.dao.ATCstDmDao;
import com.topsunit.scanservice.ximai.barcode.dto.ATCstDsDto;
import com.topsunit.scanservice.ximai.barcode.dto.BoxCodeQueryResultDto;
import com.topsunit.scanservice.ximai.barcode.entity.ATCstDs;
import com.topsunit.scanservice.ximai.barcode.entity.ATCstDm;
import com.topsunit.scanservice.ximai.common.TopsunitException;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.domain.Specification;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
/**
* <p>Title: ATCstDsService</p>
* <p>Description: 派工明细服务类</p>
*
* @author system
* @version V1.0
* @date 2025/01/23
*/
@Service
public class ATCstDsService {
@Autowired
private ATCstDsDao atCstDsDao;
@Autowired
private ATCstDmDao atCstDmDao;
/**
* 根据ID获取派工明细信息
*/
public ATCstDsDto getById(String id) {
Optional<ATCstDs> optional = atCstDsDao.findById(id);
if (optional.isPresent()) {
ATCstDsDto dto = new ATCstDsDto();
BeanUtils.copyProperties(optional.get(), dto);
return dto;
}
throw new TopsunitException("未找到指定记录");
}
/**
* 获取派工明细列表
*/
public Page<ATCstDsDto> getList(ATCstDsDto criteria, int page, int size) {
Pageable pageable = PageRequest.of(page, size);
Specification<ATCstDs> spec = new Specification<ATCstDs>() {
@Override
public Predicate toPredicate(Root<ATCstDs> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
List<Predicate> predicates = new ArrayList<>();
if (criteria.getSItemNo() != null && !criteria.getSItemNo().isEmpty()) {
predicates.add(cb.like(root.get("sItemNo"), "%" + criteria.getSItemNo() + "%"));
}
if (criteria.getSItemNo_1() != null && !criteria.getSItemNo_1().isEmpty()) {
predicates.add(cb.like(root.get("sItemNo_1"), "%" + criteria.getSItemNo_1() + "%"));
}
if (criteria.getSItemName() != null && !criteria.getSItemName().isEmpty()) {
predicates.add(cb.like(root.get("sItemName"), "%" + criteria.getSItemName() + "%"));
}
if (criteria.getSpec() != null && !criteria.getSpec().isEmpty()) {
predicates.add(cb.like(root.get("spec"), "%" + criteria.getSpec() + "%"));
}
if (criteria.getSnNo() != null && !criteria.getSnNo().isEmpty()) {
predicates.add(cb.like(root.get("snNo"), "%" + criteria.getSnNo() + "%"));
}
if (criteria.getSnno1() != null && !criteria.getSnno1().isEmpty()) {
predicates.add(cb.like(root.get("snno1"), "%" + criteria.getSnno1() + "%"));
}
if (criteria.getItemmgpk() != null && !criteria.getItemmgpk().isEmpty()) {
predicates.add(cb.equal(root.get("itemmgpk"), criteria.getItemmgpk()));
}
if (criteria.getSgpk() != null && !criteria.getSgpk().isEmpty()) {
predicates.add(cb.equal(root.get("sgpk"), criteria.getSgpk()));
}
return cb.and(predicates.toArray(new Predicate[0]));
}
};
Page<ATCstDs> pageResult = atCstDsDao.findAll(spec, pageable);
Page<ATCstDsDto> dtoPage = pageResult.map(entity -> {
ATCstDsDto dto = new ATCstDsDto();
BeanUtils.copyProperties(entity, dto);
return dto;
});
return dtoPage;
}
/**
* 保存派工明细信息
*/
@Transactional
public ATCstDsDto save(ATCstDsDto dto) {
try {
ATCstDs entity = new ATCstDs();
BeanUtils.copyProperties(dto, entity);
ATCstDs saved = atCstDsDao.save(entity);
ATCstDsDto result = new ATCstDsDto();
BeanUtils.copyProperties(saved, result);
return result;
} catch (Exception e) {
throw new TopsunitException("保存失败: " + e.getMessage());
}
}
/**
* 更新派工明细信息
*/
@Transactional
public ATCstDsDto update(ATCstDsDto dto) {
try {
if (dto.getId() == null || dto.getId().isEmpty()) {
throw new TopsunitException("ID不能为空");
}
Optional<ATCstDs> optional = atCstDsDao.findById(dto.getId());
if (!optional.isPresent()) {
throw new TopsunitException("未找到指定记录");
}
ATCstDs entity = optional.get();
BeanUtils.copyProperties(dto, entity);
ATCstDs saved = atCstDsDao.save(entity);
ATCstDsDto result = new ATCstDsDto();
BeanUtils.copyProperties(saved, result);
return result;
} catch (Exception e) {
throw new TopsunitException("更新失败: " + e.getMessage());
}
}
/**
* 删除派工明细信息
*/
@Transactional
public String delete(String id) {
try {
if (id == null || id.isEmpty()) {
throw new TopsunitException("ID不能为空");
}
if (!atCstDsDao.existsById(id)) {
throw new TopsunitException("未找到指定记录");
}
atCstDsDao.deleteById(id);
return "删除成功";
} catch (Exception e) {
throw new TopsunitException("删除失败: " + e.getMessage());
}
}
/**
* 通过箱码查询小标签条码
*/
public List<BoxCodeQueryResultDto> getSmallLabelBarcodesByBoxCode(String boxCode) {
try {
if (boxCode == null || boxCode.isEmpty()) {
throw new TopsunitException("箱码不能为空");
}
// 先通过箱码查询ATCstDm表获取mgpk
List<ATCstDm> atCstDmList = atCstDmDao.findByPSNNo(boxCode);
if (atCstDmList.isEmpty()) {
throw new TopsunitException("未找到对应的箱码记录");
}
List<BoxCodeQueryResultDto> resultList = new ArrayList<>();
for (ATCstDm atCstDm : atCstDmList) {
// 通过mgpk查询ATCstDs表获取小标签条码
List<ATCstDs> atCstDsList = atCstDsDao.findByMgpk(atCstDm.getMgpk());
for (ATCstDs atCstDs : atCstDsList) {
BoxCodeQueryResultDto result = new BoxCodeQueryResultDto();
// 复制ATCstDm字段
result.setEmplID(atCstDm.getEmplid());
result.setEmplNo(atCstDm.getEmplno());
result.setEmplName(atCstDm.getEmplname());
result.setDeptId(atCstDm.getDeptid());
result.setDeptNo(atCstDm.getDeptno());
result.setDeptName(atCstDm.getDeptname());
result.setMNo(atCstDm.getMno());
result.setBdt(atCstDm.getBdt());
result.setMItemID(atCstDm.getMitemid());
result.setMitemno(atCstDm.getMitemno());
result.setMitemno_1(atCstDm.getMitemno_1());
result.setMItemName(atCstDm.getMitemname());
result.setYmdt(atCstDm.getYmdt());
result.setMQty(atCstDm.getMqty());
result.setPSNNo(atCstDm.getPsnno());
result.setTrick(atCstDm.getTrick());
result.setMNote(atCstDm.getMnote());
result.setCuser(atCstDm.getCuser());
result.setCdt(atCstDm.getCdt());
result.setMgpk(atCstDm.getMgpk());
// 复制ATCstDs字段
result.setItemmgpk(atCstDs.getItemmgpk());
result.setSItemNo(atCstDs.getSItemNo());
result.setSItemNo_1(atCstDs.getSItemNo_1());
result.setSItemName(atCstDs.getSItemName());
result.setSpec(atCstDs.getSpec());
result.setItemrpack(atCstDs.getItemrpack());
result.setSnqty(atCstDs.getSnqty());
result.setSnNo(atCstDs.getSnNo());
result.setSnno1(atCstDs.getSnno1());
result.setSrNote(atCstDs.getSrNote());
result.setSurid(atCstDs.getSurid());
result.setSauid(atCstDs.getSauid());
result.setSgpk(atCstDs.getSgpk());
resultList.add(result);
}
}
return resultList;
} catch (Exception e) {
throw new TopsunitException("查询失败: " + e.getMessage(), e);
}
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment