diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/wms/bd/request/CreateOutSourceCompanyInfoRequest.java b/eladmin-system/src/main/java/me/zhengjie/modules/wms/bd/request/CreateOutSourceCompanyInfoRequest.java index 022379b5..3ecc1c95 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/wms/bd/request/CreateOutSourceCompanyInfoRequest.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/wms/bd/request/CreateOutSourceCompanyInfoRequest.java @@ -34,7 +34,6 @@ public class CreateOutSourceCompanyInfoRequest implements Serializable { // 委外公司联系人[{“sort”:””,”name”:””,”mobile”:””,”phone”:””,”email”:””,”qq”:””,”weixin”:””,”firstTag”:””}]firstTag 0:非首要联系人 1:首要联系人 private List outSourceCompanyContact; - // @Column(name = "status") private Boolean status; public void copy(OutSourceCompanyInfo source){ diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/wms/bd/request/UpdateOutSourceCompanyInfoRequest.java b/eladmin-system/src/main/java/me/zhengjie/modules/wms/bd/request/UpdateOutSourceCompanyInfoRequest.java new file mode 100644 index 00000000..1bcba077 --- /dev/null +++ b/eladmin-system/src/main/java/me/zhengjie/modules/wms/bd/request/UpdateOutSourceCompanyInfoRequest.java @@ -0,0 +1,57 @@ +package me.zhengjie.modules.wms.bd.request; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.bean.copier.CopyOptions; +import lombok.Data; +import me.zhengjie.modules.wms.bd.domain.OutSourceCompanyInfo; +import org.hibernate.annotations.CreationTimestamp; + +import javax.persistence.Column; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import java.io.Serializable; +import java.sql.Timestamp; +import java.util.List; + +/** + * @author 黄星星 + * @date 2019-08-24 + */ +@Data +public class UpdateOutSourceCompanyInfoRequest implements Serializable { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "id") + private Long id; + + // 委外公司名称 + private String outSourceCompanyName; + + // 期初预收款 + private Long initialPreMoney; + + // 委外公司编号 + private String outSourceCompanyCode; + + // 创建时间 + private Timestamp createTime; + + // 更新时间 + private Timestamp updateTime; + + // 备注 + private String remark; + + // 委外公司地址数组[{“province”:””,”city”:””,”area”:””,”address_detail”:””,”sort”:””}] + private List outSourceCompanyAddress; + + // 委外公司联系人[{“sort”:””,”name”:””,”mobile”:””,”phone”:””,”email”:””,”qq”:””,”weixin”:””,”firstTag”:””}]firstTag 0:非首要联系人 1:首要联系人 + private List outSourceCompanyContact; + + private Boolean status; + + public void copy(OutSourceCompanyInfo source){ + BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true)); + } +} diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/wms/bd/rest/OutSourceCompanyInfoController.java b/eladmin-system/src/main/java/me/zhengjie/modules/wms/bd/rest/OutSourceCompanyInfoController.java index 8b3b986d..bc73f756 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/wms/bd/rest/OutSourceCompanyInfoController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/wms/bd/rest/OutSourceCompanyInfoController.java @@ -3,6 +3,7 @@ package me.zhengjie.modules.wms.bd.rest; import me.zhengjie.aop.log.Log; import me.zhengjie.modules.wms.bd.domain.OutSourceCompanyInfo; import me.zhengjie.modules.wms.bd.request.CreateOutSourceCompanyInfoRequest; +import me.zhengjie.modules.wms.bd.request.UpdateOutSourceCompanyInfoRequest; import me.zhengjie.modules.wms.bd.service.OutSourceCompanyInfoService; import me.zhengjie.modules.wms.bd.service.dto.OutSourceCompanyInfoDTO; import me.zhengjie.modules.wms.bd.service.dto.OutSourceCompanyInfoQueryCriteria; @@ -15,6 +16,9 @@ import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import io.swagger.annotations.*; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; + /** * @author jie * @date 2019-08-03 @@ -27,6 +31,16 @@ public class OutSourceCompanyInfoController { @Autowired private OutSourceCompanyInfoService outSourceCompanyInfoService; + @Log("初始化委外公司编号") + @ApiOperation(value = "初始化委外公司编号") + @GetMapping(value = "/initOutSourceCompanyCode") + @PreAuthorize("hasAnyRole('ADMIN','BDSUPPLIERINFO_ALL','BDSUPPLIERINFO_SELECT')") + public ResponseEntity initOutSourceCompanyCode(){ + DateTimeFormatter fmt = DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS");//设置日期格式 + String supplierCode = "WW"+ LocalDateTime.now().format(fmt); + return new ResponseEntity(supplierCode,HttpStatus.OK); + } + @Log("分页查询委外公司资料列表") @ApiOperation(value = "分页查询委外公司资料列表") @GetMapping(value = "/queryOutSourceCompanyInfoPage") @@ -67,8 +81,8 @@ public class OutSourceCompanyInfoController { @ApiOperation(value = "修改委外公司资料") @PutMapping(value = "/outSourceCompanyInfo") @PreAuthorize("hasAnyRole('ADMIN','BDOUTSOURCECOMPANYINFO_ALL','BDOUTSOURCECOMPANYINFO_EDIT')") - public ResponseEntity update(@Validated @RequestBody OutSourceCompanyInfo resources){ - outSourceCompanyInfoService.update(resources); + public ResponseEntity update(@RequestBody UpdateOutSourceCompanyInfoRequest updateOutSourceCompanyInfoRequest){ + outSourceCompanyInfoService.update(updateOutSourceCompanyInfoRequest); return new ResponseEntity(HttpStatus.NO_CONTENT); } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/wms/bd/service/OutSourceCompanyInfoService.java b/eladmin-system/src/main/java/me/zhengjie/modules/wms/bd/service/OutSourceCompanyInfoService.java index 2829dd4c..5b4d63ec 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/wms/bd/service/OutSourceCompanyInfoService.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/wms/bd/service/OutSourceCompanyInfoService.java @@ -2,7 +2,9 @@ package me.zhengjie.modules.wms.bd.service; import me.zhengjie.modules.wms.bd.domain.OutSourceCompanyInfo; import me.zhengjie.modules.wms.bd.request.CreateOutSourceCompanyInfoRequest; +import me.zhengjie.modules.wms.bd.request.UpdateOutSourceCompanyInfoRequest; import me.zhengjie.modules.wms.bd.service.dto.OutSourceCompanyInfoDTO; +import me.zhengjie.modules.wms.bd.service.dto.OutSourceCompanyInfoDetailDTO; import me.zhengjie.modules.wms.bd.service.dto.OutSourceCompanyInfoQueryCriteria; //import org.springframework.cache.annotation.CacheConfig; //import org.springframework.cache.annotation.CacheEvict; @@ -39,7 +41,7 @@ public interface OutSourceCompanyInfoService { * @return */ //@Cacheable(key = "#p0") - OutSourceCompanyInfoDTO findById(Long id); + OutSourceCompanyInfoDetailDTO findById(Long id); /** * create @@ -47,14 +49,14 @@ public interface OutSourceCompanyInfoService { * @return */ //@CacheEvict(allEntries = true) - OutSourceCompanyInfoDTO create(CreateOutSourceCompanyInfoRequest createOutSourceCompanyInfoRequest); + OutSourceCompanyInfoDetailDTO create(CreateOutSourceCompanyInfoRequest createOutSourceCompanyInfoRequest); /** * update - * @param resources + * @param updateOutSourceCompanyInfoRequest */ //@CacheEvict(allEntries = true) - void update(OutSourceCompanyInfo resources); + void update(UpdateOutSourceCompanyInfoRequest updateOutSourceCompanyInfoRequest); /** * delete diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/wms/bd/service/dto/OutSourceCompanyInfoDTO.java b/eladmin-system/src/main/java/me/zhengjie/modules/wms/bd/service/dto/OutSourceCompanyInfoDTO.java index 4e4a9feb..e2a7369a 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/wms/bd/service/dto/OutSourceCompanyInfoDTO.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/wms/bd/service/dto/OutSourceCompanyInfoDTO.java @@ -32,6 +32,14 @@ public class OutSourceCompanyInfoDTO implements Serializable { // 备注 private String remark; + // 首要联系人姓名 + private String firstContactName; + + // 首要联系人手机 + private String firstContactMobile; + + // 首要联系人地址 + private String firstContactAddress; private Boolean status; } \ No newline at end of file diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/wms/bd/service/impl/OutSourceCompanyInfoServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/wms/bd/service/impl/OutSourceCompanyInfoServiceImpl.java index 2c1b6d54..90b77f56 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/wms/bd/service/impl/OutSourceCompanyInfoServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/wms/bd/service/impl/OutSourceCompanyInfoServiceImpl.java @@ -1,6 +1,7 @@ package me.zhengjie.modules.wms.bd.service.impl; import com.google.gson.Gson; +import com.google.gson.reflect.TypeToken; import me.zhengjie.exception.BadRequestException; import me.zhengjie.modules.wms.bd.domain.CustomerInfo; import me.zhengjie.modules.wms.bd.domain.OutSourceCompanyInfo; @@ -18,7 +19,10 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; +import java.sql.Timestamp; +import java.text.SimpleDateFormat; import java.util.ArrayList; +import java.util.Date; import java.util.List; import java.util.Optional; import org.springframework.data.domain.Page; @@ -80,7 +84,32 @@ public class OutSourceCompanyInfoServiceImpl implements OutSourceCompanyInfoServ } }; Page page = outSourceCompanyInfoRepository.findAll(specification, pageable); - return PageUtil.toPage(page.map(outSourceCompanyInfoMapper::toDto)); + Page outSourceCompanyInfoDTOPage = page.map(outSourceCompanyInfoMapper::toDto); + if(null != outSourceCompanyInfoDTOPage){ + List outSourceCompanyInfoDTOList = outSourceCompanyInfoDTOPage.getContent(); + if(!CollectionUtils.isEmpty(outSourceCompanyInfoDTOList)){ + for(OutSourceCompanyInfoDTO outSourceCompanyInfoDTO : outSourceCompanyInfoDTOList){ + Long outSourceCompanyInfoDTOId = outSourceCompanyInfoDTO.getId(); + Optional outSourceCompanyInfoOptional = outSourceCompanyInfoRepository.findById(outSourceCompanyInfoDTOId); + if(null != outSourceCompanyInfoOptional){ + OutSourceCompanyInfo outSourceCompanyInfo = outSourceCompanyInfoOptional.get(); + if(null != outSourceCompanyInfo){ + String outSourceCompanyJsonStr = outSourceCompanyInfo.getOutSourceCompanyContact(); + List outSourceCompanyContactList = new Gson().fromJson(outSourceCompanyJsonStr,new TypeToken>() {}.getType()); + if(!CollectionUtils.isEmpty(outSourceCompanyContactList)){ + for(OutSourceCompanyContact outSourceCompanyContact : outSourceCompanyContactList){ + if(outSourceCompanyContact.getFirstTag() == 1){ + outSourceCompanyInfoDTO.setFirstContactMobile(outSourceCompanyContact.getMobile()); + outSourceCompanyInfoDTO.setFirstContactName(outSourceCompanyContact.getName()); + } + } + } + } + } + } + } + } + return PageUtil.toPage(outSourceCompanyInfoDTOPage); } @Override @@ -119,15 +148,33 @@ public class OutSourceCompanyInfoServiceImpl implements OutSourceCompanyInfoServ } @Override - public OutSourceCompanyInfoDTO findById(Long id) { - Optional bdOutSourceCompanyInfo = outSourceCompanyInfoRepository.findById(id); - ValidationUtil.isNull(bdOutSourceCompanyInfo,"OutSourceCompanyInfo","id",id); - return outSourceCompanyInfoMapper.toDto(bdOutSourceCompanyInfo.get()); + public OutSourceCompanyInfoDetailDTO findById(Long id) { + OutSourceCompanyInfoDetailDTO outSourceCompanyInfoDetailDTO = new OutSourceCompanyInfoDetailDTO(); + + Optional outSourceCompanyInfoOptional = outSourceCompanyInfoRepository.findById(id); + OutSourceCompanyInfo outSourceCompanyInfo = outSourceCompanyInfoOptional.get(); + OutSourceCompanyInfoDTO outSourceCompanyInfoDTO = outSourceCompanyInfoMapper.toDto(outSourceCompanyInfo); + if(null != outSourceCompanyInfoDTO){ + BeanUtils.copyProperties( outSourceCompanyInfoDTO, outSourceCompanyInfoDetailDTO); + String outSourceCompanyAddressJsonStr = outSourceCompanyInfo.getOutSourceCompanyAddress(); + if(StringUtils.hasLength(outSourceCompanyAddressJsonStr)){ + List outSourceCompanyAddressList = new Gson().fromJson(outSourceCompanyAddressJsonStr,new TypeToken>() {}.getType()); + outSourceCompanyInfoDetailDTO.setOutSourceCompanyAddress(outSourceCompanyAddressList); + } + + + String outSourceCompanyContactJsonStr = outSourceCompanyInfo.getOutSourceCompanyContact(); + if(StringUtils.hasLength(outSourceCompanyContactJsonStr)){ + List outSourceCompanyContactList = new Gson().fromJson(outSourceCompanyContactJsonStr,new TypeToken>() {}.getType()); + outSourceCompanyInfoDetailDTO.setOutSourceCompanyContact(outSourceCompanyContactList); + } + } + return outSourceCompanyInfoDetailDTO; } @Override @Transactional(rollbackFor = Exception.class) - public OutSourceCompanyInfoDTO create(CreateOutSourceCompanyInfoRequest createOutSourceCompanyInfoRequest) { + public OutSourceCompanyInfoDetailDTO create(CreateOutSourceCompanyInfoRequest createOutSourceCompanyInfoRequest) { OutSourceCompanyInfoDetailDTO outSourceCompanyInfoDetailDTO = new OutSourceCompanyInfoDetailDTO(); OutSourceCompanyInfo outSourceCompanyInfo = new OutSourceCompanyInfo(); @@ -154,11 +201,48 @@ public class OutSourceCompanyInfoServiceImpl implements OutSourceCompanyInfoServ @Override @Transactional(rollbackFor = Exception.class) - public void update(OutSourceCompanyInfo resources) { - Optional optionalBdOutSourceCompanyInfo = outSourceCompanyInfoRepository.findById(resources.getId()); - ValidationUtil.isNull( optionalBdOutSourceCompanyInfo,"BdOutSourceCompanyInfo","id",resources.getId()); - OutSourceCompanyInfo outSourceCompanyInfo = optionalBdOutSourceCompanyInfo.get(); - outSourceCompanyInfo.copy(resources); + public void update(UpdateOutSourceCompanyInfoRequest updateOutSourceCompanyInfoRequest) { + Long outSourceCompanyInfoId = updateOutSourceCompanyInfoRequest.getId(); + if(null == outSourceCompanyInfoId){ + throw new BadRequestException("委外公司主键不能为空!"); + } + + // 委外公司资料-客户联系地址修改目标 + List outSourceCompanyInfoAddressListUpdateTarget = updateOutSourceCompanyInfoRequest.getOutSourceCompanyAddress(); + // 委外公司资料-供应商联系方式修改目标 + List outSourceCompanyInfoContactListUpdateTarget = updateOutSourceCompanyInfoRequest.getOutSourceCompanyContact(); + + OutSourceCompanyInfo outSourceCompanyInfo = outSourceCompanyInfoRepository.findByIdAndStatusTrue(outSourceCompanyInfoId); + + if(null == outSourceCompanyInfo){ + throw new BadRequestException("委外公司不存在"); + } + + Timestamp createTime = outSourceCompanyInfo.getCreateTime(); + + // 将需要修改的值复制到数据库对象中 + BeanUtils.copyProperties(updateOutSourceCompanyInfoRequest, outSourceCompanyInfo); + + // 判断提前获取的供应商联系地址和联系方式是否是空 + if(CollectionUtils.isEmpty(outSourceCompanyInfoAddressListUpdateTarget)){ + outSourceCompanyInfo.setOutSourceCompanyAddress(null); + }else{ + String supplierAddressStr = new Gson().toJson(outSourceCompanyInfoAddressListUpdateTarget); + outSourceCompanyInfo.setOutSourceCompanyAddress(supplierAddressStr); + } + + if(CollectionUtils.isEmpty(outSourceCompanyInfoContactListUpdateTarget)){ + outSourceCompanyInfo.setOutSourceCompanyContact(null); + }else{ + String supplierContactStr = new Gson().toJson(outSourceCompanyInfoContactListUpdateTarget); + outSourceCompanyInfo.setOutSourceCompanyContact(supplierContactStr); + } + + outSourceCompanyInfo.setCreateTime(createTime); + outSourceCompanyInfo.setStatus(true); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + outSourceCompanyInfo.setUpdateTime(Timestamp.valueOf(sdf.format(new Date()))); + // 修改委外资料 outSourceCompanyInfoRepository.save(outSourceCompanyInfo); }